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.
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.
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, or if you don’t have a Raspberry Pi you can watch a video of the demo on YouTube.
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, exceptions 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 or Mac 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 build instructions as a starting point.
- Building from Source - How to rebuild the RTL, FPC or Lazarus from source on Windows.
- Building for Debian - Building FPC and the RTL for Debian Linux.
- Building for Raspbian - Building FPC and the RTL for Raspbian Linux.
- Building for Mac - Building FPC and the RTL for Mac OSX.
Supporting the Ultibo Project
Like any open source project there are many ways you can help and support, it could be as simple as telling others about it, sharing your projects, contributing some code or writing some documentation. You can even choose to directly sponsor a feature if you prefer. Whatever you might decide to do, the goal is always to create an environment where everyone can experience the excitement of creating something from their own imagination. For more details see Supporting Ultibo.
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.
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.
- Video Tutorials - Our video tutorial collection including the Discovering Ultibo series.
Ultibo core is licensed under the GNU Lesser General Public License v2.1 and is freely available to use, modify and distribute within the terms of the license. The license includes an exception statement to permit static linking with files that are licensed under different terms.