From scmRTOS

Jump to: navigation, search


General Description

Release, in fact, is a complete working project. Release consists of RTOS (Common part and Port) and bunch of test projects (samples). Each test project in addition to user's code includes a project-dependent part of the RTOS. Project-dependent part is intended to setup RTOS configuration and tune RTOS-exploited peripherals (one of hardware timers and Context Switch interrupt).

Current release version is v4.00. See Releases List (below on this page) for information about current platform releases and What's new in v4.00 document for differences from previous release.

Project-dependent Part

Project-dependent part includes three header files that are resided in a user project source folder[s]:

  • scmRTOS_CONFIG.h;
  • scmRTOS_extensions.h.

scmRTOS_CONFIG.h describes project-level RTOS configuration macros.

scmRTOS_TARGET_CFG.h contains project-level tuning code, in particular System Timer and Context Switch Software interrupt stuff. Generally, Release comes with default definitions of System Timer and Software Context Switch interrupts. The user can change these setting to more project-suitable if need.

scmRTOS_extensions.h controls of using of RTOS extensions that can be linked up to the project by including of the corresponding header file.


A user can get the RTOS using the following ways:

  • Download the appropriate Release from SourceForge and setup user's project based on Release structure and sources. This way is most suitable for users who do not use Subversion version control system or who want reside scmRTOS sources locally, without linking to main scmRTOS repository;
  • Export Release from tags branch of main RTOS repository - this is the same as above;
  • Checkout required Sample from main RTOS repository. This is most suitable for RTOS port developers. See #Working with Repository Samples for more details about using of this manner;
  • For users who employ Subversion and who want to synchronize project's RTOS sources with main RTOS repository the following way may be suitable: setup user project RTOS subfolders with svn:externals(1) properties that will link these subfolders to the appropriate folders in main RTOS repository and perform update. Thus, user gets the ability to synchronize its project scmRTOS sources with main scmRTOS repository.

Working with Repository Samples

Initially, after checkout from repository the folders


are empty. User has to switch these folders manually to appropriate repository folders:

scmRTOS/Common to $REP$/Common

scmRTOS/<Port> to $REP$/Ports/<Port>/<Toolkit>


scmRTOS/Extensions to $REP$/Extensions


  • $REP$ is proper repository url .
  • <Port> is name of target processor Port.
  • <Toolkit> is corresponding name and version of toolkit.

After this working copy is ready to build. There are useful switch.bat and batch files in root directory.

Typical Release Structure and Contents

Typical Release consists of the RTOS sources and a number of samples. For example, such structure may looks like:


where 1-EventFlag, 2-Message, 3-Channel, 4-Debug - are four different samples, each is a complete project. The RTOS sources are located in scmRTOS folder.

In this case 1-EventFlag sample brings test on speed. OS::TEventFlag is the simplest and fastest service of the RTOS. In this example program control flow transferred from timer interrupt service routine (ISR) to waiting process. Dedicated processor's pin is set to '1' before signalling of the EventFlag object and set to '0' inside waiting process. So, positive pulse width on this pin corresponds with program control flow transfer time.

2-Message sample demonstrates ability to send arbitrary information from ISRs and processes to processes. In the example one process waits the message and timer ISR and another process send the message. Message content is different in each case, so, process-receiver can distinguish the source of the message.

Sample 3-Channel shows a message queue. Since the message can have arbitrary type, current example uses pointers to class types. In the example two more priority processes "delegate" some actions to the third (low-priority) process. See scmRTOS User's Manual Appendix section for more details about this mechanism.

4-Debug presents debug features of the RTOS: stack slacks detecting, process profiling, etc.

Project releases may contain different sets of samples.

Contents of all parts is the same: test project and RTOS sources. Each located in its own folder.

Releases list

For more details about target- and compiler-specific implementations see corresponding page:

[1] For more details about svn:externals see Subversion documentation.

Languages English  • Русский

Personal tools