Download link

Version Description:

First release with support of STM32F7 family. The version also includes TGUI module and LCDTFT driver, and much more changes.

Features:

  • Chell – the shell to control the OS
  • Machine independent code thanks to drivers, and LLD
  • Basic file system with support of ramfs and devfs
  • ChocoOS RTOS kernel
  • Programs like on PCs
  • User-friendly ‘linked-list’ library
  • Users and login system
  • Expanded errors system with additional errors stack system
  • Helpful bits library for operation based on bits (set/clear, etc)
  • 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)
  • Simple configuration of STDIN and STDOUT
  • Streams can be selected for each program
  • The pin selection configuration is very simple (just by choosing new name of the pin)
  • Configuration of drivers can be independent of the target machine
  • Possibility of choose, which components should be included to the system (programs/drivers/file systems)
  • Drivers visible in file system
  • stdio.h POSIX basic functions
  • Simple boot mechanism
  • 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
  • Library for creating GUI based on VT100 commands
  • 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
  • stm32f746ngh6

Programs:

  • chell – simple shell 
  • 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
  • gpio_test – performs test of GPIO or PINs module
  • lcdtft_test – performs simple tests of LCDTFT
  • led – configures and controls LED
  • ls – prints list of files and directories at the given path
  • memory – TGUI program for controlling memory
  • mkdir – creates a directory
  • 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 system
  • tcolors – prints available terminal colors
  • time– shows time from the start of the system

Supported file systems:

  • devfs
  • ramfs

Core-Space drivers:

  • FMC
  • GPIO
  • LCDTFT
  • LED
  • PWM
  • TIMER
  • UART

LLD:

  • CLOCK
  • DMA
  • FMC
  • GPIO
  • LCDTFT
  • MEM
  • SPI
  • SYS
  • TIMER
  • UART

Release notes:

  • Creation of the simple module library, that manage turning on modules – implemented for saving RAM
  • Add error code for wrong module index
  • Add GPIO main driver
  • Add GPIO to UART required drivers
  • Add macro for redefinition of function. Thanks to that one function can be used with 2 different names
  • Add macro to driver header for redefinition of functions from the LLD layer
  • changed version of the UART driver to 1.0.0
  • Add pins needs unlock error
  • Add GPIO to UART required drivers
  • Add macro gen_point_value to oc_null header (macro for reading/setting value to generic pointer)
  • Add LED driver
  • Add PWM driver
  • Add sscanf function to the STDIO
  • Remove temporary turning on the GPIO LLD in the boot (it is done by GPIO now)
  • Add require of memory manager to GPIO boot level
  • Add color library
  • Add IndexNotCorrect error code
  • Add MaximumValueNotCorrect error
  • Fix bug in scanf – instead of %x there was a %h specifier. Moreover fix problems in led driver
  • Fix problem with write in GPIO LLD in attempt to write different pins state in the same port
  • Add LED program
  • Add Timer Set/Read match/current values functions
  • Add SPI LLD driver to LM4F120H5QR architecture
  • Add ‘Unused’ variable macro
  • New architecture of the portable space (refactorization was required by the STM32 support)
  • New TGUI module for handling terminal GUI operations
  • Few new programs, the most important: system and memory
  • script for generation template of a new program
  • Add support of graphical operations in driver interface
  • Update templates for driver generator
  • New portable modules: Pins, Channels, Registers, Interrupts, BaseAddresses, RMAPS
  • Add clearing of the output files before build space, and stopping build when some build failed
  • Add newdriver script, that creates files for a new driver
  • Add search_arch script – thanks to that now it is possible to select architecture by typing only machine name (without typing producent and family)
  • Add windows set_user script, that allows for saving user data
  • Add definition of oC_Pin_NotUsed that is helpful in the pins configuration (thanks to that not all pins must be used)
  • Add debuglogs
  • Add Auto-Stack-Detector feature
  • Add support of STM32F7 architecture
  • Add generation of stack-usage files
  • Add function for reading startup time
  • Significantly reduce the boot time
  • Add FMC module
  • Add LCDTFT driver
  • Add colormap module
  • Add Font module
  • Add verification of threads and heap during idle task
  • Add handle of external heap in the memory manager
  • Add functions for locking/unlocking STDIO buffer
  • Add re-runing default program, when it finishes
  • Add function for cloning thread
  • Add interface for handling the ElementHandle in oC_List_t module
  • Add VT100 border characters definitions
  • Add MAX frequency definition to clock configuration
  • Add critical section for portable space
  • Fix problem with printing floats by the printf
  • Add killing zombies in the idle
  • The size argument in the streams/drivers read and write functions changed to pointer (functions now returns number of read bytes)
  • Add macro for redefinition of the function
  • Add memory module with definitions of memory types
  • Add functions for managing strings: string_reverse, remove_in_string , put_to_string , string_backspace
  • Add oc_struct library
  • Add new MCS module, with Machine Core Specific operations
  • Add TGUI login form