Main Page
Welcome to the Ultibo wiki, the place to find detailed information about Ultibo, what it can do and how to use it. This content will be continually expanding as development of Ultibo core progresses, check back regularly to stay up to date with the latest information.
Contents
What is Ultibo?
Ultibo core is a full featured environment for embedded or bare metal (without an operating system) development on Raspberry Pi (all models). It is not an operating system itself but provides many of the same services as an OS such as memory management, threading, networking and file systems. Primarily intended to make development of embedded applications as similar as possible to development for other platforms by providing common features and services and eliminating the need to begin from scratch, Ultibo core can be used in many different ways.
You may want to use it simply to develop applications that take advantage of the extensive API to create connected devices, or Internet of Things (IoT), which support common hardware such as USB and standard protocols like IP, TCP and UDP or physical computing via GPIO control. Alternatively you might use it to experiment with operating system design and embedded development, avoiding the need to create everything from scratch and allowing you to focus on trying out ideas and concepts in an environment where the basics are already taken care of.
More advanced users may opt to use Ultibo core as a base for exploring specific ARM technologies such as TrustZone and Hypervisor mode, because you have complete and unrestricted hardware access you can "take over" one or more CPUs for example to use as you require and still allow Ultibo core to provide basic services like network connectivity and logging.
While Ultibo core is not designed as a real time operating system (RTOS) it offers unrestricted access to hardware and allows the option for including real time components without the need to circumvent the OS functionality.
Whichever way you choose to use it, the possibilities are only limited by your imagination.
Getting Started
Based on the powerful open source Free Pascal compiler and the Lazarus integrated development environment (IDE), Ultibo core doesn't require you to gather together components to create a development environment or wrestle with linker script syntax. Everything you need to create and compile working applications is included in the installer download so you can create your first embedded application as easily as starting a new project, adding a few lines of code and compiling.
- Getting Started - A simple guide to creating your first embedded application.
- Demo Image - See what Ultibo can do by installing and running the demo image.
Architecture and Design
Designed as a unikernel or kernel in a run time library (RTL), Ultibo core is much more than just a boot loader or helper library. When you compile even the simplest application the core functionality of threading, memory management, interrupt handling, clock, timers, strings, objects etc is automatically included in your program so before your code is executed a complete environment has been established to support your application. You don't need to know how it works to use Ultibo core but being open source everything is there for you to explore.
- Architecture - Detailed information about the internal workings of Ultibo core.
Developing with Ultibo
With support for almost all of the Free Pascal RTL functionality including memory, strings, classes, objects, files, threads, sockets and unicode, most of the information and examples in the Free Pascal documentation can be used directly with little or no change. Ultibo core also includes additional APIs that allow direct access to core functionality and support for specific hardware and protocols.
- Unit Reference - Complete API reference for all Ultibo core units.
- Environment Variables - Details of all environment variables that can be passed on the command line.
Even though the installer download provides everything needed to get started, some may want to build the Ultibo RTL, or even FPC and Lazarus from sources in order to customize the way things work. If you're a Linux user, we don't currently provide a package that includes our modifications to FPC or Lazarus however you should be able to build your own using our Windows build instructions as a starting point.
- Building from Source - How to rebuild the RTL, FPC or Lazarus from source.
Current Status
Ultibo core is a work in progress (all software is) so not every feature is supported or fully implemented yet. The support for both features and hardware will continue to grow with each release with new support added based on need. Priority is always given to developing those things that have the most benefit and on ensuring that both performance and stability are continually improved.
- Current Status - The status of support for various features and hardware as at the current version.
Useful Resources
In spite of the revolution in information provided by the internet, sources of information are still scattered widely and can often be difficult to find unless you search for exactly the right words. We're gathering an ever growing list of resources related to all aspects of developing embedded devices so if you find something good let us know and we'll add it so that others can benefit.
- Useful Resources - A collection of the best information we can find on everything related to Ultibo core.
License
Ultibo core is licensed under the GNU General Public License v2.0 and is freely available to use, modify and distribute within the terms of the license.