What new in v3.00
- The source code significantly rearranged. As result:
- Definitions of kernel and services are placed on separate files.
- User support library has been removed from Port part and now the library is resided in Common part of the RTOS.
- Portable part is much more "decoupled" from Common part that gives more freedom for Port functionality realization.
- The RTOS is positioned as explicitly separated on three parts:
- Common part.
- Target-dependent part (port).
- Project-dependent part that allows user to tune the RTOS according to his project requirements. Project-dependent part includes two header files:
- Any available hardware timer in processor can be used as System Timer.
- System Timer and Context Switch Software interrupts are fully definable at user's project level.
- Context Switch mechanisms are significantly redesigned:
- when Direct Program Control Flow transfer scheme is used no special requirements to place context saving code immediately at begining of interrupt service routine (ISR). This eliminates the most frequent cause of program (that using the RTOS) failure, which has taken place in versions (v1.xx and v2.xx) of the RTOS.
- when Software Interrupt Program Control Flow transfer scheme is used the only one rescheduling is performed inside interrupt service routine - on ISR exit, no in every service function that is called. This improves performance.
- Priority names order do not depend on Context Switch Scheme (in contrast to v2.xx).
pr0 - is always the highest priority,
prN - is always the lowest priority, where N - is integer number in range [1..32] and defined as
scmRTOS_PROCESS_COUNT + 1. As usual,
prN is priority of the System's IdleProcess.
- Software switch on ISR stack support. Currently, this feature is suitable for MSP430 and AVR only. The feature is optional. See MSP430 Port or AVR Port pages or [and] Ports descriptions for more details.
- Type of the System timeouts is defined at project level now. See project RTOS configuration file
scmRTOS_CONFIG.h. The type of the System timeouts can be
dword. The user can choose the most suitable variant for his current project.
- IdleProcess stack[s] size specified at user's project level now (see below).
- Some configuration options have been added:
scmRTOS_ISRW_TYPE. The macro defines type of ISR Wrapper object in System Timer interrupt. The macro can have values
TISRW_SS. Now this is applicable for MSP430 and AVR ports only.
scmRTOS_IDLE_PROCESS_STACK_SIZE. Specifies IdleProcess stack size. AVR Port has two same macros to define stacks sizes (because of two stacks used with EWAVR):
scmRTOS_IDLE_PROCESS_DATA_STACK_SIZE - stack size for process's data.
scmRTOS_IDLE_PROCESS_RETURN_STACK_SIZE - stack size for return addresses storage.
- Several ARM7 Ports added:
- LPC2xxx (NXP).
- AT91SAM7 (Atmel).
- ADuC7xxx (ADI).