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.
As we want to improve our quality of the code, I have a pleasure to invite all willing to review of the simple pull request. A goal of the pull request is to implement simple helper library responsible for managing data in the buffer. Please fill free to leave your comments:
It is pleasure to announce, that in the next release (V.0.17.2.0) the system will handle ELF and CBIN files. Thanks to that it will be possible to build and run programs that are not compiled with the system - for example by placing them in SD card or samba share.
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
First release with support of STM32F4 family, network (Ethernet), system debug logs, and much more!
Features:
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
Programs:
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...
The new version (V.0.16.9.0) 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!
You need an implementation of libc (try porting MUSL?) and at least partial POSIX support. Without these, you are going to be fighting an uphill battle just to get people to try ChocoOS.
Thanks for your opinion! We already have partial support of POSIX :) And we still add new interface functions. And you know.. We even not try to find users for now. We do not earn money on it, and we don't have enough time to take the responsibility for professional user support. We want to develop it slowly, but reliable and exactly according our plan and view. ChocoOS is not the next unix OS. It is something more - it is our point of view for programming. We avoids using someone else's libraries - you can think it is wrong or not, but for us it is important. Thanks to that we know each part of the system, and it is all integrated with itself. And also thanks to that, we are not limited by used libraries. Simple example - does standard printf function check if pointers given by the user are correct? Usually it only checks if pointer is not NULL. It is not enough. It can store random data as well... Our implementation verifies the pointer address - checks if it is in ROM/RAM or SDRAM. We've also developed 'printf' with features such as '%R' - the quick way to print the error string, '%t' for printing time, etc. I believe that one day, when the system is ready you will appreciate these features :)
You know, we all work as programmers in huge corporations. We have to use libraries for all the time - and it is normal and of course it is needed, when you have to provide the product on time. Using libraries also gives you an opportunity to share the responsibility for the final product, but ... It gives us a lot of fun, when all lines are ours, and we don't have to learn someone else's coding style, and libraries. In our system everything has been written in the same way, so switching between the modules is not a problem. Even if the module has not been written by you, you can see it as yours. This is one of the reasons why we like our system. Without this assumption it will be just another project that consist of million of glued subprojects and it will not give us so much fun as now - it would be only a craft instead of hobby :)
You need an implementation of libc (try porting MUSL?) and at least partial POSIX support. Without these, you are going to be fighting an uphill battle just to get people to try ChocoOS.