scmRTOS What's New
- GPL license changed to MIT license.
- Resume/Suspend code of services significantly redesigned. This eliminates bug
with skipping events when more then one process waits the event (Bug 1878045, see Project Tracker for details).
- Added GCC Ports and Samples for AVR and MSP430.
- Added support and Samples for STR71x (ARM7).
- Function Sleep added to namaspace OS. This function is inline function and
just call function TBaseProcess::Sleep. This allows a simple way to call
Sleep from any place in user code, not only from root process's function.
- Added ContextSwitchUserHook - the user defined function that is called from
OS::TKernel::ContextSwitchHook. The function is inlined and does not bring
overhead on calling.
- Bugfixes:
- TMutex: incorrect behaviour during locking (Bug 1732748, see Project Tracker for details).
- Blackfin port: space in stacks for calling function incoming parameters added.
- EWAVR port: macro A90_PROC_OPTION was not properly defined. Fixed. Support for another Analog Comparator vector name added.
- EWAVR port: support for devices with more then 64 kbytes flash added in target assembler file.
- The source code significant 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:
- scmRTOS_CONFIG.h.
- scmRTOS_TARGET_CFG.h.
- 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 significant 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 byte, word or 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 or
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).
|
|