Category Archives

9 Articles
Release V.0.16.9.0 – Daskylion

Release V.0.16.9.0 – Daskylion

by Patryk

Download link

Version Description:

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 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
Release V.0.16.2.0 – Chalkida

Release V.0.16.2.0 – Chalkida

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
Release V.0.15.7.0 – Bursa

Release V.0.15.7.0 – Bursa

by Patryk 0 Comments

Download link

Version Description:

The initial version of the ChocoOS after refactorization.

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 (printf/scanf)
  • 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

Targets supported:

  • lm4f120h5qr

Programs:

  • chell
  • echo
  • getallocs
  • geterrors
  • ls
  • memory
  • mkdir
  • printf
  • ps
  • reboot
  • time

Supported file systems:

  • devfs
  • ramfs

Drivers (without LLD):

  • UART
  • TIMER

LLD:

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

Release notes:

  • New portable architecture
  • New core architecture
  • Add layers for architecture, and create separate library for each one
  • New programs structure
  • New build, connect and flash scripts
  • New machine module, that contains all definitions and register-based operations
  • Program main function renamed to just ‘main’
  • New file with machine depended definitions
  • List library reimplemented with new, more friendly interface
  • Add forif and ifnot  libraries
  • Add errors stack for reading errors from the past
  • Added bits library
  • Create oc_math library for math operations (only poor version)
  • Add objects library for verification of the kernel, and not kernel objects
  • Add functions for checking if pointer is in RAM/ROM/stack/heap, etc
  • Add function to reverse the string (string_reverse)
  • Own RTOS kernel implementation
  • Kernel time library implemented
  • Add library for version controling
  • Add machine-dependent pins map configuration file
  • Add DevFs and RamFs to file systems
  • Implementation of the virtual file system
  • KPrint module implementation
  • printf and scanf functions implementation
  • Memory manager implemented
  • Mutexes, Semaphores, Events, and IntMan imlemented