This repository has been archived by the owner on Mar 27, 2021. It is now read-only.
Files
IntrOS
Folders and files
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||
IntrOS --------- Free, simple and tiny cooperative operating system (OS) designed for deeply embedded applications. Target: ARM Cortex-M, STM8, AVR8. It was inspired by the concept of a state machine. Procedure executed by the task (task state) doesn't have to be noreturn-type. It will be executed into an infinite loop. There's a dedicated function for immediate change the task state. --------- Features: - kernel can operate in cooperative (non-preemptive) mode only - kernel can operate with 16, 32 or 64-bit timer counter - kernel can operate in tick-less mode - implemented basic protection using MPU (use nullptr, stack overflow) - implemented functions for asynchronous communication with unmasked interrupt handlers - spin locks - once flags - events - signals with protection mask - flags (any, all) - barriers - semaphores - mutexes - condition variables - read/write locks - memory pools - stream buffers - message buffers - mailbox queues - event queues - job queues - timers (one-shot, periodic) - c++ wrapper - all documentation is contained within the source files - examples and templates are in separate repositories (https://github.com/stateos) --------- 4.8 - added namespaces - updated onceflag - various updates - updated os version - preventing sign-conversion warnings - added core_tsk_exec procedure as an alternative for core_tsk_loop - task behavior on return from the task function is now configurable using the OS_TASK_EXIT config constant - used stdatomic for spin lock/unlock - added OS_LOCK_LEVEL config constant - updated internal insert / remove functions - added core_spn_tryLock function - implemented functions for asynchronous communication with unmasked interrupt handlers --------- 4.7 - updated os version - implementation of steady clock - updated Timer class - updated Task class - updated other classes - removed unused OS_FUNCTIONAL definition - added CNT_LIMIT definition - check task stack watermark - added tsk_stackSpace function - added MPU for prevention the use of the NULL / nullptr - added MPU for prevention the stack overflow - removed empty __CONSTRUCTOR definitions - updated signal functions - updated message buffer functions - updated stream buffer functions - totally changed and simplified OS API - added read/write lock - added lock guard --------- 4.6 - updated os version - updated license - updated c++ constructors - updated JobQueueT class - added baseStack class - added baseTimer class - updated usage of std::function - fixed errors reported by the armcc v5 compiler - simplified c++ constructors - added wrk_init function - updated c++ wrapper - rebuilded c++ static functions - added several static functions to the Timer class - added several static functions to the Task class - added constructor with function arguments to the Timer class - added constructor with function arguments to the Task class - updated semaphore (removed send function) --------- 4.5 - updated os version - added support for stm32l1 - updated stm8s port file - updated port definitions - added tsk_exit alias - fixed 'zero-as-null-pointer-constant' warnings - updated iarcc osdefs header file for cortexm - updated gnucc osdefs header file for x86 --------- 4.4 - added signal handler - changed c++ functional procedures - updated assertions - updated c++ wrapper --------- 4.3 - merged test branch - renamed 'SIZE' definitions - back to the event (evt) and event queue (evq) - added a few function aliases - added once flag object - updated flag object - updated queue/buffer objects - updated queue/buffer functions - changed assert definitions - updated signal object - renamed ID_DELAYED to ID_BLOCKED - added function aliases for the current task - changed usage of signals - updated event object and examples - removed ID_BLOCKED constant --------- 4.2 - updated priv_rdy_insert internal procedure - added initial value for flag object - updated tsk/tmr init functions - added static c++ classes - added optional stack size parameter for task create definitions - added optional type size parameter for message buffer create definitions - added optional limit parameter for semaphore create definitions - added optional type size parameter for stream buffer create definitions - updated stream buffer object - updated message buffer object - added optional init parameter for flag create definitions - added optional signal type parameter for signal create definitions - removed event object; event queue object renamed to 'evt' - fixed stack initialization - changed mem_init function - changed evt_init function - changed job_init function - changed box_init function - changed msg_init function - changed stm_init function - added tsk_kill function - added flg_clear function - reorganized kernel functions - changed timer / task header - added header init function - rebuilded sleep and suspend / resume functions --------- 4.1 - updated mailbox queue object - updated message buffer object - updated stream buffer object - added spin lock object - some lock definitions moved to kernel - updated XXX_CREATE definitions - updated lock definitions and usage - updated version identification - added tmr_startNext and tsk_sleepNext functions - reorganized the order of functions - the task/timer identifier is an enumeration constant --------- 4.0 - updated message buffer object: size of the message data limited to size of the buffer - updated stream buffer object: size of the stream data limited to size of the buffer - changed kernel filenames --------- 3.9 - updated kernel - updated mailbox queue object - updated stream buffer object - renamed message queue to event queue - added message buffer object - added examples for new feature - updated event queue object --------- 3.8 - added stream buffer object - updated examples - updated const qualifiers - changed syntax of box_init function - updated kernel --------- 3.7 - updated memory pool object - updated list object - updated examples - updated kernel - added box_push, msg_push and job_push functions --------- 3.6 - changed license to MIT --------- 3.5 - some preprocessor definitions have been changed - updated kernel files - removed Counter definition - added sys_time functions - removed Current definition - added tmr_this and tsk_this functions - the OS_ASSERT definition has been removed, use DEBUG/NDEBUG instead - updated tick-less mode - updated waitUntil functions - added tick-less mode for STM8S-Discovery board port - added tick-less mode for ATtiny817-Xplained-Mini board port - removed OS_TICKLESS definition, tick-less mode depends on OS_FREQUENCY value - os can work with 16, 32 or 64-bit timer counter --------- 3.4 - added startup files for cosmic compiler - added support for IAR compiler --------- 3.3 - updated inclusion of header files - updated job queue object - updated memory pool object - updated internal MSIZE definition --------- 3.2 - added init functions for all objects - added aliases for XXX_CREATE macro definitions (XXX_NEW) - updated c++ code - added OS_TMR_START, OS_WRK_START and OS_TSK_START macros only available for compilers supporting the "constructor" function attribute or its equivalent - added examples for new feature - added OS_TMR_UNTIL macro (with tmr_startUntil function) similar to OS_TMR_START macro (with tmr_start function) - internal system timer handler moved to kernel - added job queue object - changed internal implementation of some objects - updated inclusion of header files --------- 3.1 - updated access to the c++ functional library - updated port files - added osdefs.h header file - used config OS_TICKLESS instead of OS_TIMER - added stack assertion --------- 3.0 - updated kernel security - updated osport header file - system counter is always 32-bit size - added port_cnt_lock / port_cnt_unlock macros - added sys_time function for read current value of system counter - reorganized port directories - optionally included c++ functional library (not available for all compilers) - added examples for new feature --------- 2.9 - changed tsk_suspend / tsk_resume functions - added tsk_suspend example - rebuilt port / core files - added support for ATtiny817-Xplained-Mini board --------- 2.8 - updated OS_TMR / static_TMR macros - added OS_TMR_DEF / static_TMR_DEF macros - updated OS_WRK / static_WRK macros - renamed OS_DEF / static_DEF macros to OS_WRK_DEF / static_WRK_DEF - renamed OS_NEW / static_NEW macros to OS_TSK_DEF / static_TSK_DEF - updated examples --------- 2.7 - added tick-less mode - function core_tsk_break renamed to core_tsk_switch - updated macros for task and timer objects - updated examples - reorganized kernel directories - updated objects definitions --------- 2.6 - rename flgOne to flgAny - function mem_reset renamed to mem_bind - redefined timer macros and procedures - function core_tsk_start renamed to core_tsk_loop --------- 2.5 - added oslibc.c file for COSMIC Software CORTEX-M C Cross Compiler - added _TSK_CREATE macro in os_tsk.h file - changed OS_DEF macro and added OS_NEW macro in os_tsk.h file - added changes in some definitions - context switch is realized by functions setjmp / longjmp - rebuilt kernel --------- 2.4 - rebuilt internal preprocessor definitions - rebuilt data structures - rebuilt c++ classes - updated examples - added support for Small Device C Compiler --------- 2.3 - some kernel improvements - added tsk_join function - added assertions --------- 2.2 - added support for STM8S-Discovery board - updated timer object (tmr_start) - updated task object (tsk_wait, tsk_give) --------- 2.1 - added list object - updated memory pool object - optimized c++ code --------- 2.0 - added memory pool object - added memory pool example - fixed bug in memory pool object --------- 1.9 - added support for COSMIC Software CORTEX-M C Cross Compiler --------- 1.8 - program code cleaned --------- 1.7 - changed startup files - fixed bug in core_ctx_switch for armclang and Cortex-M0 --------- 1.6 - fixed some bugs in arm clang code - fixed stack alignment - fixed some bugs --------- 1.5 - added support for arm clang --------- 1.4 - sys_init (port_sys_init) is invoked as a constructor --------- 1.3 - minor update - added c++ examples - example files moved to dedicated folder - changed makefiles --------- 1.2 - reorganization of the code - fixed bug in MailBoxQueueT<> class --------- 1.1 - add signal object - add example for new feature - change flag object - add sig_take function - add some optimizations - change startup files - fixed bug in startup file for armcc compiler --------- 1.0 - first release