
Ultibo – Environment for embedded development on Raspberry Pi - open-source-ux
https://ultibo.org/wiki/Main_Page
======
dvfjsdhgfv
The wiki
([https://ultibo.org/wiki/Main_Page](https://ultibo.org/wiki/Main_Page) )
actually says what it is:

> 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.

The more I read about it, the more interesting it seems.

~~~
constantlm
Aaah thanks! I looked at this earlier and couldn't find out what it was from a
quick look and closed it (pfff millennials), but this sounds great.

------
s73v3r_
So I'm not 1000% clear on what this is. Is it a package to use a RPi booted
into a normal Linux environment to do embedded development on a different
chip/board connected to the Pi? Or is it to kinda turn the RPi into more of an
embedded chip, with a bare metal OS?

~~~
civilitty
It's closer to bare metal than Linux but it's not a real time operating system
capable of precise timing like you'd see on a microcontroller. I see some
configs that allow for pinning a thread to a core that they claim can be used
for real time workloads so it'll be a lot more predictable than a Linux
kernel. However, the RPi has a memory controller with a caching layer so it'll
still be different than using an STM32 or Atmega with or without an RTOS (i.e.
with Ultibo you can use malloc to allocate memory and you'll have to watch out
for the cache if you're touching DMA).

------
squarefoot
From the FAQ: "We fully intend for Ultibo to support other boards, which ones
and when depends on what the community shows interest in."

This project is freaking interesting. I would welcome some support for smaller
Nano/Orange PI boards and others with Allwinner/AMlogic/Rockchip/Sitara etc.
MCUs. All chips already employed in TVs, media players, cellphones, industrial
boards etc. as opposed to the Broadcom MCUs which are used only in the
Raspberry PI, so there's already a huge load of iron this environment could
become useful to write software for.

------
tzahola
Wirth languages deserve a comeback.

~~~
foo101
I have never worked with Wirth languages, so I would like to know why you
think Wirth languages deserve a comeback.

~~~
pjmlp
They were like Rust in the 80 and 90's, but then security was seen as
irrelevant in software.

About 80% of ways of doing memory corruption in C are just not possible,
unless one explicitly turns off safety constructs.

The developer culture was also that workable software and quality comes before
performance tricks.

Many OSes were written in Pascal variants, Modula-2, Modula-2+, Modula-3,
Oberon, Oberon-2, Active Oberon, Component Pascal, Concurrent Pascal.

There are still very few programming languages that can match Delphi RAD
capabilities, while producing a fat free executable.

We were quite productive in them before UNIX took over the industry and
brought C with it. The JavaScript and PHP of systems programming languages.

~~~
amelius
> We were quite productive in them before UNIX took over the industry and
> brought C with it. The JavaScript and PHP of systems programming languages.

Why didn't anyone write a Wirth-language -> C translator, and wasn't it
successful?

~~~
pjmlp
There are lots of such translators.

Eiffel works just like that, JIT/VM for development, compilation via C for
deployment.

P2C was a famous one [https://www.gsp.com/cgi-
bin/man.cgi?section=1&topic=p2c](https://www.gsp.com/cgi-
bin/man.cgi?section=1&topic=p2c)

[http://www.zi.biologie.uni-
muenchen.de/~enger/SC22WG13/im2c-...](http://www.zi.biologie.uni-
muenchen.de/~enger/SC22WG13/im2c-981130.html)

[https://github.com/jtempl/ofront](https://github.com/jtempl/ofront)

But beyond Eiffel, most developers ended up moving mostly to C++ (like myself
back then) as it provided the C compatibility, with most of the Pascal's
safety if one cared to use the C++ features.

Then Java took over the show for security minded developers during a couple of
years, until we finally arrived at Go, D, Swift, Rust, .NET Native,
SubstrateVM.

------
aragorn2
Free Pascal!? I’m in; for the pure nostalgia for Delphi / Object Pascal.

I just have to figure out what to do with it and my Rasp that’s currently
collecting dust :/

~~~
lproven
The first thing that struck me was to try to write, or port, some bare-metal
emulators.

E.g. extend an Atari TT/Falcon emulator to use as much as possible of the
RasPi's resources -- all the RAM, an emulated blitter & FPU, the SD card as a
big hard disk. There are several FOSS OSes for the ST now _; this would make
an interesting selection of old ST OSes accessible to a new audience on the
cheap.

The only FOSS Amiga OS I know of is AROS and they're already working on a
native port, but a bare-metal Amiga emulator would be fun to have, too.
Classic MacOS would also be great. :-D

_ AFrOS; SMSQ/E; CP/M-68K.

------
bpye
Interesting that this claims to support OpenGL etc, do they work with hardware
acceleration?

------
mmjaa
I'd like to do this, but with Lua. Anyone wanna join?

~~~
dividuum
Not exactly for the same use case, but I created info-beamer hosted
([https://info-beamer.com](https://info-beamer.com)). Its a digital signage
platform, so more for visual results than interfacing with hardware, but it's
fully programmable in Lua. You can see the Lua API here: [https://info-
beamer.com/doc/info-beamer](https://info-beamer.com/doc/info-beamer). On top
of that info-beamer hosted provides a complete operating system that can
trivially installed on a Pi ([https://info-beamer.com/doc/installing-
hosted](https://info-beamer.com/doc/installing-hosted)) and you can configure
and run your code on any number of Pis and control everything through a
dashboard or API ([https://info-beamer.com/doc/api](https://info-
beamer.com/doc/api)). As an example of what a full "package" looks like, have
a look at this minimal example: [https://github.com/info-beamer/package-cec-
test](https://github.com/info-beamer/package-cec-test). Everything is fully
programmable and you can even 'git push' code to the system. Let me know if
you have any questions.

~~~
lovepi
Hey there! I know this is unrelated but I have been trying to learn about
programming embedded systems mainly for IOT. I started with pi and right now I
want to create minimum O.S for my pi.one of the challenges i have faced is
using updating without corrupting or bricking device. I have managed to get
and understand abit about SWUpdate which is build for this . But I am totally
lost when it comes to which O.S I should start with. Yocto vs buildroot. Also
I would love to hear your views on Ultibo.

~~~
dividuum
I don't use yocto or buildroot, so I can't really comment on either. I also
put together my own updating mechanism which uses A/B booting (so it boots
from partition A, updates into B, makes that active and then tries to boot
into B. Once successful, it switch A and B and the cycle starts again). It's
deeply integrated into the rest of the system (like the success condition of
updates and timeouts waiting for that condition). The fear of accidentally
bricking all live devices motivated me to build something I truly understand
and is minimal (it's core is at most 200 lines of python).

Ultibo seems pretty nice, although I only read a bit out it and didn't play
around with it. I'm a big fan of small systems and fondly remember writing
Pascal back in the Borland Pascal days.

------
pulse7
Please correct the title: it is called Ultibo (and not Ultimo). Ultibo =
ULTIMate BOx

------
IncRnd
Ultibo not Ultimo.

