Skip to content
This repository has been archived by the owner on Mar 27, 2021. It is now read-only.

Files

Latest commit

author
Szymański Rajmund
Mar 26, 2021
3de5b09 · Mar 26, 2021

History

History

IntrOS

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Mar 26, 2021
Mar 26, 2021
Mar 26, 2021
Mar 26, 2021
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