Go Down

Topic: Simba - An RTOS and Build Framework (Read 4738 times) previous topic - next topic


Hello all,

the Simba and Pumbaa (Python) projects have been ported to the ESP32, and the
Nano32 board in particular. Simba is an embedded OS with a bunch or drivers, file systems, networking and other useful modules. Pumbaa is MicroPython on top of Simba, with similar features as listed for Simba.

Both projects can be installed, built and uploaded with the Arduino IDE and PlatformIO, so it's easy to get started!

Simba getting started: http://simba-os.readthedocs.io/en/latest/getting-started.html
Pumbaa getting started: http://pumbaa.readthedocs.io/en/latest/getting-started.html

Check out this video for some great Pumbaa footage and tunes: https://youtu.be/R4SLIyBysfg




Thanks for all the work.

I have one question about your framework: Is it possible to use existing Arduino libraries when working over your framework?

Allow me to explain myself with an example:

Let's say my board is connected to an NFC controller such as the PN532 through I2C or a TFT screen controlled by an ILI-9341 through SPI. The Arduino framework has libraries for both modules that allows to interact with either of them more or less out-of-the-box.
-Would it be possible to use these same libraries directly (e.g. just by #include-ing them?
-Would they need to be ported? Perhaps there's a wrapper available?

To be honest, the main reason why I use Arduino is to have access to the cornucopia of available libraries and drivers for all sorts of peripherals.


Feb 06, 2017, 03:21 pm Last Edit: Feb 06, 2017, 05:52 pm by eerimoq

there is currently no implementation of the Arduino API in Simba, so if the libarary uses that API the compilation will fail. I'm sure many users are in your situation and an implementaion of the API would be very useful.

I guess a Simba thread will be used to poll the library for events, and act on them, Arduino style.

A list of potential problems using an Arduino library with Simba (other than the Arduino API):

1. Simba uses one hardware timer for the system tick. No other hardware resources are used by the kernel. Of course, that timer may not be used by a library, or there is a conflict and the system will likely crash.

2. If the Arduino IDE build system works with Simba + Arduino libraries has not been tested by me. Maybe it already works. Maybe it has to be modified. The make based build system I usually use for Simba can easily build the libraries. Just add the source files to the make variable SRC, and required inclution paths to INC.

3. I've not used libc malloc/free functions, and they will likely not work as there is no heap region defiend in the linker script (that I'm aware of). This applies to C++ new/delete as well.



Thank you very much for the very informative reply.


New release, 13.0.1!

A new release has been created with a lot of new functionality and a few bug fixes.

GitHub: https://github.com/eerimoq/simba/tree/13.0.1
Documentation: http://simba-os.readthedocs.io/en/13.0.1


- Added HTTPS server.
- Added SSL client side.
- Filesystem write commad with paste mode (drops data if UART RX buffer is too small).
- ESP32 UART refactoring.
- Less chatty Emacs protocol.
- Added a TFTP server.
- Added the upgrade module (HTTP, TFTP and Kermit protocols).
- Added a signal analyzer example application.
- Added board SPC56D-Discovery.

Bug fixes

- HTTP server buffer overflow on big requests.



Hi eerimoq,

This looks very promising.
I will take a look at it. Thank you


Mar 01, 2017, 01:01 am Last Edit: Mar 02, 2017, 09:28 am by gonalonsox
I've just installed simba package on platformio and gave it a try. Though it compiles and uploads the binary, it doesn't output anything nor blinks the LED
I'm using esp8266 platform ( esp12e )
If I reset the device it outputs garbage

Any ideas?
Thank you
I've found the problem. It seems the uart baudrare is different from my previous esp8266 projects. Just tried all of them until finally it output correct text.
So a new question arises; how do I set it to my desired baudrate?


Mar 02, 2017, 08:57 pm Last Edit: Mar 02, 2017, 09:18 pm by eerimoq
Create a file (also called tab) named config.h in your Arduino sketch. You can read more Simba configuration in here: http://simba-os.readthedocs.io/en/latest/user-guide/configuration.html#arduino-ide

An example file:

Code: [Select]
#ifndef __CONFIG_H__
#define __CONFIG_H__



Go Up