ChocoOS - OS for Embedded

OpenSource Project of Operating System for embedded architectures.

Similar projects worth following
Our team is working on open source project:

It is a simple operating system designed for embedded architectures. The project is written in C, but the Tools supporting it in the development site are implemented in Qt (C++). The main purpose of the project is to systematize, facilitate and accelerate
development of the embedded projects. We hope, that someday realisation of even most complicated projects will be possible at the short time. The project is free, and will be free. It is hobby only. For more informations please look at the link.

We are looking for people willing to cooperate - this applies to all levels of knowledge - the advanced will help us by their experience, and thanks to the people, that are starting their story of programming we will know what in our system is not clear or difficult to understand.
  • TouchScreen (ft5336) handling in the ChocoOS!

    chocoos.cooperation05/06/2017 at 23:01 0 comments

    We are still hard working on new version of the system. It will introduce many feautres we hope you enjoy. One of them will be support of the input event drivers such as TouchScreen. As example of usage we present simple program "paint" implemented by using new ICtrl interface

  • V. - Daskylion

    chocoos.cooperation03/01/2017 at 21:06 0 comments

    Download Here!

    Version Description:

    First release with support of STM32F4 family, network (Ethernet), system debug logs, and much more!


    • Support for Ethernet according to standard IEEE_802.3
    • New network driver type
    • Netif object – sublayer of the network layer in the OSI model
    • NetifMan module – it handles netif objects and IP layer in the OSI model
    • Implementation of UDP, TCP, ARP, ICMP, DHCP protocols
    • Support for Telnet protocol (logging to chell is possible via UART and Telnet)
    • ping – program for sending echo request
    • Possibility of limitation of memory allocations for the selected allocator
    • New program getlogs that prints logs at the screen in simple way (like getallocs and geterrors)
    • New option -v (verbose) option to getallocs to provide possibility of printing full list of allocations
    • New option –real to the geterrors program – it allows for printing logs in real time
    • New option –real to the getlogs program – it allows for printing logs in real time
    • Inverting printing logs by getlogs – now logs are arranged from the oldest to the newest
    • Timestamp and function name to debuglogs
    • RevertAction feature in threads
    • Possibility of calling custom function when the thread is finished
    • Closing process when main thread is finished
    • New user program – it allows for adding/removing user and changing it’s password
    • ModuleMan module for managing system modules
    • Function name and line number is available in Errors Stack
    • External and DMA RAM heaps is available in memory manager
    • In case of error Thread list might be auto repair
    • Support of the STM32F4 family
    • FlashFs – file system for placing files from the developer PC to the target machine during compilation
    • Cat program – command for printing content of a file
    • Chell – the shell to control the OS
    • Machine independent code thanks to drivers, and LLD
    • ChocoOS RTOS kernel
    • Programs like on PCs
    • User-friendly ‘linked-list’ library
    • Users and login system
    • Safe C objects development library with expanded pointer verification
    • Library for pointer verifications, that allows to check if the pointer is in RAM or ROM section, to check if pointer was dynamically allocated, is in heap, or stack, and much more
    • Time measurement from the start of the system (timestamps)
    • Configuration of drivers can be independent of the target machine
    • Expanded Memory Manager for dynamic memory allocations (malloc,free,etc)
    • Full control of the memory – you can check where the memory was allocated
    • Smart-allocations system helps to save memory
    • A lot of task-synchronization methods, such as: Semaphores,Mutexes,Events,Signals,Queues, and Critical-Sections
    • Memory can be allocated for the current process, so when the process will be killed, it will be released. It helps in memory leaks problem
    • Stack, and heap verification functions – checking for buffers overflow, memory exhausted, memory leaks
    • Function for repairing damaged heap
    • Auto-Detecting stack size mechanism
    • Simple stack-control, and close the program, when the stack is not correct
    • Program template generated by a script
    • and much more!

    Targets supported:

    • lm4f120h5qr
    • stm32f429zit6u
    • stm32f746ngh6


    • chell – simple shell
    • cat – prints files content
    • cpu_info – shows CPU informations
    • echo – just echo the message like in unix
    • fmc_test program for performing test of FMC driver
    • getallocs – prints current memory allocations
    • geterrors – prints system errors
    • getlogs – prints system logs
    • gpio_test – performs test of GPIO or PINs module
    • http_server simple test HTTP server
    • ifconfig shows network interface configuration
    • kill – kills a process according to name or ID
    • lcdtft_test – performs simple tests of LCDTFT
    • led – configures and controls LED
    • littlenes – simple little NES emulator
    • ls – prints list of files and directories at the given path
    • memory – TGUI program for controlling memory
    • mkdir – creates a directory
    • ping – performs ping protocol
    • printf – prints formatted a message given as argument
    • ps – prints currently runned threads
    • reboot – restarts the system
    • spi_lld_test – performs tests of the SPI LLD
    • system – TGUI program for controlling and configuring...
    Read more »

  • New version is coming!

    chocoos.cooperation02/22/2017 at 16:44 0 comments

    The new version (V. of the ChocoOS will be available this month! It will include support of new architecture, new modules, ways of communication and more! We can't wait to share it with you!

View all 3 project logs

  • 1

    Get the latest version of the system here:

  • 2

    Enter to the Source directory and choose architecture by using select_arch script (for windows it is select_arch.bat and for linux)

    Important for linux environmental:

    Note, that in linux you have to load the script instead of execution by using 'dot' (source) command:

    . ./ stm32f746ngh6

    In linux it is also possible to use `` script instead of loading by ``. Just run ./ and you will see:

    Now you see a simple shell for controlling board (type `help` for list of available commands)

  • 3

    Run the build.bat (or script to compile the project

View all 5 instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates