In this whitepaper, we examine the way in which xcore multicore processors can be programmed using the recently released symmetric multiprocessing (SMP) FreeRTOS.
Traditionally, xcore multi-core processors have been programmed using the XC language. The XC language allows the programmer to statically place tasks on the available hardware cores and wire them together with channels to provide inter-process communication. The XC language also exposes “events,” which are unique to the xcore architecture and are a useful alternative to interrupts. Using a combination of tasks statically placed on hardware cores, channels, and events, it is possible to write software with deterministic timing, and with very low latency between I/O and software, as well as between tasks.
While XC elegantly enables the intrinsic the unique capabilities of the xcore architecture, there often needs to be higher level application type software running alongside it. The features and approaches that make lower level deterministic software possible may not be best suited for those parts of an application that do not require deterministic timing. Where strict real-time execution is not required, higher level abstractions can be used to manage finite hardware resources, and provide a more familiar programming environment.
A symmetric multiprocessing (SMP) real time operating system (RTOS) can be used to simplify xcore application designs, as well as to preserve the hard real-time benefits provided by the xcore architecture for the lower level software functions that require it. This whitepaper walks you through the way in which this can be done.