Support of LVGL in SO3 Operating System

We are pleased to announce the support of LVGL in our SO3 operating system.

What is SO3?

Smart Object Oriented Operating system is a compact, lightweight, full featured and
extensible operating system particularly well-suited for embedded systems in general.
SO3 is available on Gitlab, fully open source and GPLv2 compliant.

It currently works well (and maintained) in QEMU/vExpress environment as well as on Raspberry Pi 4 board.

SO3 is great or academic environment (Operating System lecture for example) and industrial projects.

Main features are :

  • Support of LVGL as graphical environment
  • Support of lwIP as networking stack
  • Support of libc MUSL
  • Support of MMU, user/kernel space, rootfs (currently FAT-32/MMC)
  • Support of device trees and is embedded in a U-boot FIT image (U-boot is required to boot SO3)

SO3 is deeply based on Linux principles and build system, but it is tremendously simpler than Linux to grasp OS concepts and to make experiments very quick.

Please note that, at the moment, LVGL can be tested in the emulated environment since we do not have any framebuffer/video driver for RPi4.

We are also looking for passionate contributors who could help us in the evolution of SO3 (a lot of things remain to be improved/added :-))

During this Year, support for AArch64 and RISC-V is foreseen. Visit the site to keep in touch.

If you have any interest in contributing or other, do not hesitate to ask :slight_smile:

1 Like

How does SO3 compares with Zephyr, for example?

Zephyr is not only based on Linux principles and build system, but also part of the Linux foundation.
I’m sorry for raising this question, but, there are so many RTOSs already, so starting a new RTOS feels a bit like reinventing the wheel, unless there are some really big reasons to do that.

I think it could be enlightening to hear about the reasons behind SO3 and its advantages vs the many other options (and specifically Zephyr).

Very good question :slight_smile: Indeed, why a new OS while there are so many?
And in particular compared to Zephyr…

I can see several reasons regarding SO3: the simpler one is that its development
started in 2014 (before Zephyr) with a small dev team, in academic environment
(SO3 has even an older code base that was used with students in the perspective
to provide them with a very simple OS).

SO3 was originally (and still is) aimed at being part of our virtualization framework
called SOO (you can find links to gitlab) as a simple but full execution environment that
can self-migrate from one device (smart object) to another.

SO3 does not pretend to compete with an OS like Zephyr - which is a great OS environment -
and will probably never support as many CPUs and many boards we can find in Zephyr.

However, SO3 has the merit to have a very simple code base (just have a look to see how it
is simple) and can probably be used not only in RTOS context but more in a general purpose context.
Such a code base also leads to facilitate debugging and to get a robust code.

Just compare the execution flow of a syscall between Zephyr and SO3 and you will understand
what simplicity means (and of course - a contrario - what kind of limitations SO3 have compared to Zephyr)

But saying that, the major OS concepts such as syscalls (user/kernel space), memory paging, IPCs,
scheduling, etc. are well present in SO3 and anyone even with limited experience can play with that.
For thease reasons, it constitutes a nice sandbox to make all kinds of experiments and to challenge
novel OS concetps very quickly.

The integration of LVGL into SO3 was done in the context of a diploma work and also permitted to
improve the kernel at different levels, in particular in the mmap() syscall implementation :slight_smile:

I hope it clarified a bit the ideas behind SO3.

Thank you for the explanation @drossier!
I can definitely see the value of SO3 in the educational, academic and perhaps research fields.

You mentioned that:

Do you think that SO3 is also useful for industrial projects outside the academy?

I think it can be used for industrial projects where a high degree of customization (at the low level) is required (using a specific device/peripheral).
In addition, SO3 can be used as “second OS” on a virtualized environment for example to have an isolated execution environment running critical tasks (or tasks requiring high level of security). Such an approach is considered with the SOO framework (also publicy availabled on Gitlab).

Hi Daniel,

Thank you very much for letting us know that you have integrated LVGL! I hope you will like it. :slight_smile:

I’ve checked SO3 on GitLab and checked some of the files. It’s really clean and easy to follow. If I were (still) and high school student I’d love to learn from your code.

I had only 2 non-technical questions:

  1. The first line of the docs says: " SO3 ( Smart Object Oriented)". Isn’t it SO2 then? :slight_smile:
  2. Why have you chosen GitLab instead of GitHub? People say GitLab is better in some features, but on GitHub, you could reach much more users.

Hi Gabor,

Great to hear that you like SO3. Apart academic environment, and in addition I said, it’s also valuable to consider this OS as a nice solution for rapid prototyping of kernel and user space parts, for testing (and even debugging complex code in emulated environment with QEMU) different things in LVGL for example.

Regarding number ‘3’ :wink: it just that SOO stands for Smart Object Oriented, and SO3 is the Operating system of migrating entities in this paradigm, therefore SOO Operating system :slight_smile:

You’re probably right concerning GitHub. The choice of Gitlab is due to the fact that most our projects use Gitlab and its CI/CD features, and we also deal with private repositories which are more difficult to manage with GitHub… But anyway, still something to consider in the context of SO3. I will discuss this with my team.

We had some discussion about creating a QEMU environment for LVGL to have a platform to:

  • measuring regression in performance with CI
  • make objective benchmarks during evaluating features

We haven’t made any progress with LVGL and QEMU yet but at least we are still free to take any direction. Do you think we can use or reuse some parts of SO3 for this?

Oh, clear now. :slight_smile:

Thanks, I’ve also heard about the better CI on Gitlab but have no experience with that so far.

Oh yes, I’m sure that SO3 is particularly well-suited to this kind of task since SO3 (including LVGL) mainly works on QEMU environment (version 4.0.50 currently, but we will upgrade to version 5, since SO3 repository contains all components such U-boot, QEMU, etc. to have a ready-to-run environment as quick as possible).

Glad to hear that, thanks!

Our goal is to measure how much time did it take to execute a function or a part of the code independently of the host platform. Could you give me some pointers on how to get started with it using SO3?

Very easy. Just clone the repository and follow the user guide to compile everything (qemu, u-boot, so3) and to deploy the ITB file in the virtual sd-card.
By default, you have the QEMU/vExpress environment by launching the st script.

If you go to our forum (it’s also based on Discourse :-)), you can find some details about the integration of LVGL in SO3, and also a small youtube video (I can’t unfortunately copy-paste a URL link here as you know). Don’t hesitate to post on our forum as well, that woul be great :slight_smile:

YouTube should be allowed even for new users, but I’ve manually increased your trust level so you should be able to post links now.

Excellent! So, hereafter a couple of relevant links regarding SO3/LVGL:

Thanks Daniel,

I’ve read through the docs of SO3, and the install process was clear. I’ve only missed a description of a “Hello world” project. Where and how to add my application’s code?

Thanks Gabor for the feedback, I completed the doc with some details about how to deploy a simple user app. May I ask You to use our forum for questions dedicated to so3? That would be great :slight_smile:

Thanks, I’ve just opened my first topic. :slight_smile: