Release V.0.16.9.0 – Daskylion

Version Description:

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

Documentation:

Click here to open documentation

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 system
  • tcolors – prints available terminal colors
  • time– shows time from the start of the system
  • user – allows to add or remove users

Supported file systems:

  • devfs – allows for accessing drivers
  • ramfs – allows for storing files in RAM memory
  • flashfs – allows for simply moving files between PC and ChocoOS

Core-Space drivers:

  • ETH – Ethernet driver
  • FMC – Flexible Memory Control driver
  • GPIO – General IO driver
  • LCDTFT – LCD TFT driver
  • LED – Driver for controlling LEDs
  • PWM – Driver for controlling PWM
  • TIMER – Driver for controlling uC timers
  • UART – Driver for controlling UART peripheral

LLD:

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

Network-Protocols:

  • DHCP
  • ICMP
  • TCP
  • Telnet
  • UDP

Release notes:

  • Fix for #171
  • Support of Linux environmental
  • Add handle of SDRAM in FMC driver
  • Add Memory Region Configuration support
  • Add automatic driver configurations
  • Add handling of arrays in the tmplpars
  • Add possibility to read variable value from the file in the tmplpars
  • Allow for recursive REPEAT loops in the tmplpars
  • Add `FlashFs` – file system for placing files from the developer PC to the target machine during compilation
  • Implementation of stdio function: fopen,fclose,fread, fwrite, feof
  • Add the `cat` program – command for printing content of a file
  • Automatically adding ‘\r’ at the end of line (if it is not already given)
  • Partially support of the “littlenes”
  • Add command hints in chell
  • Add files hints in `chell`
  • Saving last few chell commands (commands history) for hinting it by using arrows keys
  • Add default configurations support
  • Add linux script for generation of the drivers template files (newdriver.sh)
  • Add linux script for saving user data
  • Implementation of the screen manager and screen object (basic GUI support)
  • Add `BaudRate` library definitions
  • Support of the STM32F4 family
  • Split drivers to types (with STANDARD driver type as default)
  • Add network driver type
  • Add diagnostics driver interface function
  • Add oc_diag.h header with diagnostics types and functions
  • Add oc_net.h header with network interface definitions
  • Add protection against unprivileged releasing memory allocated in the core space
  • Add delete protection feature to the Event object
  • Add registers sizes verification (compilation error when the number of defined bits is not correct)
  • Add -Wall compilation flag to the makefiles
  • Implementation fot the pflashfs.bat (preparation of the flashFs for windows)
  • Add `netif` object – sublayer of the network layer in the OSI model
  • Add `NetifMan` module – it handles netif objects and IP layer in the OSI model
  • Add `ifconfig` command – program for displaying informations about network interfaces
  • Add reboot of the system when the threads list is damaged
  • Implementation of the loopback test feature in ifconfig
  • Fix problem with incorrect base in scanf related functions
  • Add string_contains function for searching for a substring in a string with case sensitive or insenstive that is given as an argument
  • Add diagnostics to ifconfig and ethernet driver
  • Add External and DMA RAM heaps to the memory manager
  • Add `listen` option to program `ifconfig`
  • Implementation of UDP protocol
  • Implementation of DHCP
  • Fix problem with timeout smaller than 0 in mutex object when taking object
  • Add possibility of waiting for state different than the selected one in `oC_Event_WaitForEvent` function
  • Add `oC_Event_StateMask_t` type instead of using as mask the type `oC_Event_State_t`
  • Add function for quickly getting current user `getcuruser` and function for getting root user `getrootuser`
  • Add `oC_KTime_CalculateTimeout` function for calculating timeout according to the end timestamp
  • Basic implementation of the Exception Handler
  • Add kernel panic message when threads list is damaged,
  • Add auto repair of threads list
  • Add hard fault message, delay for 3 secods, and auto reboot
  • Fix problem with too short pointer print in case of NULL value (6 characters instead of 8)
  • Implementation of the ARP protocol – auto reply for a ARP requests
  • Implementation of the ICMP protocol
  • Daemon for responding for echo requests
  • `ping` – program for sending a echo requests
  • Fix too small stack problem in program `time`
  • Replace exit key in `time` program from `enter` to `Ctrl+C`
  • Add DynamicConfig library, that helps in managing system configuration
  • Implementation of the TCP module
  • Fix bug in the `object` library – the `ObjectControl` value has not been calculated correctly
  • Add `PortMan` module – the module for managing ports reservations for different modules
  • Add `&` option handling in the `chell` to make possible to run threads in background
  • Add program `kill` for killing processes
  • Add function to `ProcessMan` module for getting process by PID
  • Fix for critical bug in the kernel – threads has not been unblocked after taking semaphore
  • Add function `oC_Event_GetState` to easy read state of event
  • Add possibility of limitation of memory allocations for the selected allocator
  • Add new program `getlogs` that prints logs at the screen in simple way (like `getallocs` and `geterrors`)
  • Add possibility of memory allocation tracking in programs (definition in the makefile)
  • Add `-v` (verbose) option to `getallocs` to provide possibility of printing full list of allocations
  • Add `OVERFLOWED` mark to the program `getallocs`
  • Add -`fstack-protector-strong` for programs (detecting segmentation faults)
  • Add `service` objects – service is a part of the system, that is similar to a core space program, but it can be used as a part of the system architecture. Services can also be started and stoped
  • Add program `restart` for restarting drivers/services/modules
  • Add `ModuleMan` module for managing system modules
  • Add `oC_DefaultString_t` type for definitions of strings with default length
  • Add function for checking if a process is active `oC_Process_IsActive`
  • Add function name and line number to `Errors Stack`
  • Add option `–real` to the `getlogs` program – it allows for printing logs in real time
  • Add function `oC_Thread_IsActive` for checking if the given thread is active (activated)
  • Add function `oC_ThreadMan_ContainsThread` for checking if the given thread exist on the thread list
  • Add option `–real` to the `geterrors` program – it allows for printing logs in real time
  • Inverting printing logs by `getlogs` – now logs are arranged from the oldest to the newest
  • Add 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
  • Add `user` program – it allows for adding/removing user and changing it’s password