About ChocoOS

The Choco-OS is a real time operating system designed for microcontrollers. The project has started at 2014/04/18. It is not only RTOS kernel – the system includes drivers for microcontroller peripherals, such as UART, SPI or TIMER, drivers for chips (HD44780,nRF24L01,LCD-TFT, etc..), file system, most of POSIX libraries and much more.


Product Flow

The main assumption of the system is to speed up product development time. It provides simple interface for all supported devices and peripherals. Thanks to that developer must not learn all unnecessary details before he starts implementation of the project main point. It’s simple – you don’t have to know how exactly SD-Card is handled. It is enough, that you know, that it exists, and where it is connected.


Main Architecture

Architecture of the system is based on the main division – kernel space and user space. The Kernel part is an lower layer responsible for managing system resources, drivers, programs, etc. Modules, that belongs to the space has access for all resources. It is important, that each kernel module must be compiled and programmed together. The User Space is a layer with limited access. It allows to prevent against unauthorized operations what makes the system more safe. The other feature specific for the space is possibility of programs execution that are compiled separately and can be added during work of the system. An engineer during development of a program has to choose one of these layers. But what actually program is?

Program Types

The program is part of the software which realizes some task by using system resources and libraries. The system can executes many independent programs in the same time by sharing resources between them. Any program can be compiled with the system and be included to the common binary file. In such case we are talking about the Embedded Programs. These programs cannot be removed or replaced without recompilation of the system. The other solution, named Floating Programs, allows for managing and changing the software during run of the system (for example by using SD Card). How programs can be executed?

Connected everywhere

 If you want to release a product, that will not be changed in the future you can set your program as main entry point. It will be automatically executed in the loop after start of the system. This allows you to remove all not needed modules and save some memory. In the other case you can connect to the system by using one of supported ways, and run program by using GUI or terminal. The list is still developed and depends of the system version, but the basic type of connection is an access via UART interface (by usage of any computer program that handles VT100 terminals, e.g. Putty).

Now you know basics of the system and you are ready to write your first application. Let’s do this. JOIN TO THE CHOCOLATE WORLD!!