scmRTOS What's New

Version 3.05

  • 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.

Version 3.00 (since v2.xx)

  • 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).