|Last modified on Sun Feb 5 19:19:24 2017 UTC.||Improve this page|
The CMSIS++ RTOS APIs are a set of RTOS interfaces, highly portable but designed to best match the ARM Cortex-M processor-based devices.
The project highlights are:
the core CMSIS++ RTOS is based on a C++ API (namespace
os::rtos), defined in <cmsis-plus/rtos/os.h>;
exactly the same functionality is provided in C, with a C wrapper, for those who prefer to use plain C; the C API is defined in <cmsis-plus/rtos/os-c-api.h>;
on top of the core C++ API, the ISO standard thread library is fully implemented (namespace
os::estd), and this is the recommended C++ API for future applications; the definitions are available from <cmsis-plus/estd/*>;
all RTOS objects are based on the core C++ objects, and objects created in C++ can be used in C and similarly objects created in C can be used in C++ (there is no mystery here, they represent exactly the same objects);
the C++ API was originally derived from the original CMSIS RTOS C API, but was adjusted to match the POSIX and ISO requirements as close as possible, so now it is generally a C++ version of the POSIX pthread library;
the CMSIS++ RTOS specification will go one step further then the original CMSIS, it will also suggest a portable scheduler API, and a set of portable synchronisation primitives, calling the portable scheduler; the portable synchronisation objects can be considered a ‘reference implementation’, however CMSIS++ does not mandate the use of these objects, it is quite easy to forward all calls to the underlaying implementation, as the current version using FreeRTOS does (partly implemented, to be completed soon);
there will also be a reference scheduler implementation (called µOS++ III), that will also be highly portable; it will run in 32-bits and 64-bits environments but will be specifically tailored for Cortex-M cores; it’ll also run on synthetic POSIX platforms, for example as a user mode POSIX process, on OS X and GNU/Linux, possibly on Windows if MinGW-w64 will allow an easy port. (will be based on prior µOS++ versions, which are fully functional);
CMSIS++ also includes a POSIX IO interface (namespace
os::posix), bringing together access to terminal devices, files and sockets, via a unified and standard API (functional in a separate project, will be updated and moved here shortly);
CMSIS++ Drivers are the response to CMSIS Drivers, but designed in C++ (namespace os::drivers), and with a C API on top of them (CMSIS++ serial, USB Device and USB Host already defined and partly implemented);
the CMSIS++ packaging solution will extend and complement CMSIS Packs with xPack/XCDL packs.