-
Review invitation - DataPackage
09/15/2017 at 16:57 • 0 commentsAs 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:
https://bitbucket.org/chocos/chocos/pull-requests/41/implement-datapackage-library/diff
-
ELF and CBIN floating programs will be available in the next release!
07/20/2017 at 09:19 • 0 commentsIt 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.
Here some hello world example:
-
TouchScreen (ft5336) handling in the ChocoOS!
05/06/2017 at 23:01 • 0 commentsWe 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.0.16.9.0 - Daskylion
03/01/2017 at 21:06 • 0 commentsVersion 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 programifconfig
- 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 typeoC_Event_State_t
- Add function for quickly getting current user
getcuruser
and function for getting root usergetrootuser
- 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 fromenter
toCtrl+C
- Add DynamicConfig library, that helps in managing system configuration
- Implementation of the TCP module
- Fix bug in the
object
library – theObjectControl
value has not been calculated correctly - Add
PortMan
module – the module for managing ports reservations for different modules - Add
&
option handling in thechell
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 (likegetallocs
andgeterrors
) - Add possibility of memory allocation tracking in programs (definition in the makefile)
- Add
-v
(verbose) option togetallocs
to provide possibility of printing full list of allocations - Add
OVERFLOWED
mark to the programgetallocs
- 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 thegetlogs
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 thegeterrors
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
-
New version is coming!
02/22/2017 at 16:44 • 0 commentsThe 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!