XMOS FreeRTOS port

Started 6Feb2020. Updated 31Oct2021
This note is in group Technology (plus My XMOS pages) and is meant to track what is happening on the XMOS pages about their FreeRTOS port

Also see

  1. My SafeRTOS notes


The source code, of f.ex. tasks.c (here) tells me that this is an Amazon derivation, even if it says it’s forked from https://github.com/FreeRTOS/FreeRTOS. It’s probably easy to understand once I understand it:

 * FreeRTOS Kernel V10.2.1
 * Copyright (C) 2019 Amazon.com, Inc. or its affiliates.  All Rights Reserved.
 * ...
 * http://www.FreeRTOS.org
 * http://aws.amazon.com/freertos
 * 1 tab == 4 spaces!

FreeRTOS port for XMOS xcore-200 multicore microcontrollers

What me worrying about the role of xC?

Why me worried?

13May2021: no text here. Press the picture.


7Oct2020. See below.

8Apr2020: I see that on lib_rtos_support – which is a software library that provides support for running an RTOS on xCOREAny RTOS:

lib_soc provides a system on chip like platform in which an RTOS application may run. It allows for separation of an RTOS application from the more hardware-like xCORE libraries that run on their own cores, and a mechanism for communication between them. Common peripheral devices, including i2c and Ethernet, are provided, as well as drivers to use them from an RTOS application. Currently only FreeRTOS is supported by the RTOS drivers.

When me worry?

A library I have used a lot, the lib_i2c is at: lib_i2c.

These libraries are of course written in xC. I should not be worried about xC and xTIMEcomposer with this knowledge in mind. The quote above is also reassuring. Then I am only worried about xC and xcore.ai!


29Apr2020 (1): However, in [2] XMOS CEO Mark Lippet says (in the context of Neuromorphic Computing) that

Lippett also said any technology that involves a change in the way people think about programming systems will be faced with challenges when it comes to market. Even the

Xcore, though based on a RISC architecture, faced market challenges. Lippett said any technology that involves new programming paradigms will meet resistance.

“The key observation that we’ve made is you really need to be very close to a pre-existing, familiar programming model in order for rapid adoption to take place. So, I think that’s the challenge, to make the benefits of those technologies available from a cost perspective, but also accessible to the skills of the existing community, otherwise adoption will be very slow,” he added. “I’m comfortable that we’re not competing [with neuromorphic computing] in the very near term, but clearly it’s an exciting technology and one to watch.”

xC or not? I feel I get a tiny amount of doubt there again..


29Apr2020 (2): Not a word about xC in xCORE.AI product brief [3]. I feel the ME WORRY figure is out of scope. I should worry.

But now I have finally queried at the xCore Exchange forum (bullet 3).


In 206:[13] the author Linley Gwennap writes (below). Is the blue text about xC?

The Xcore CPU lacks an MMU, but it can run a real-time operating system such as FreeRTOS on a single thread or multiple threads. For the flexible I/O, the company supplies library code for many protocols. It also offers libraries of DSP kernels and neural-network functions. Users can create applications in high-level code and link them to these library routines. XMOS provides an LLVM compiler, Gnu debugger, linker, software-timing-closure tool, and other tools for directly programming its architecture. Note that instead of using interrupts, programmers can allocate threads to time- critical tasks; these threads can restart immediately when an input is received, eliminating interrupt latency.
XMOS also provides a C compiler and other tools for developing application software, including optimized libraries of DSP and voice functions, but these tools are less complete than those for Arm and even RISC-V.

XMOS FreeRTOS port on GitHub

Start here: https://github.com/xmos/FreeRTOS

Release announcements

Update 7Oct2020. Press release from XMOS [4]. New: The AIoT SDK: AIoT tools (may convert TensorFlowLite) and FreeRTOS. From [4]: «Examples: examples showing a variety of operations based on bare-metal and FreeRTOS operation, including smart microphone sensing». Bare-metal I assume is XMOS’s way of saying that they will continue with xTIMEcomposer and xC – without using those words.

19Jan2020: «XMOS has released an SMP (Symmetric multiprocessing) FreeRTOS port along with a peripheral support library for xcore-200 silicon devices» at: FreeRTOS port for XMOS xcore-200 multicore microcontrollers. It points to these two GitHub entries: RTOS Support Library and How to use the app_freertos_micarray_board application

But what happens to xC and xTIMEcomposer when xcore.ai?

They haven’t told. (Update: But the «bare-metal» mentioning above makes some sense to me.) I suppose it’s ok to reveal that the whitepapers by XMOS:


don’t mention xC.

Embedded edge AI devices


20Feb2020. See [1] – Silicon to Satisfy the AIoT: xcore.ai


17Oct2021. This seems to be a competitor? See https://hailo.ai. But reading about their background, even if they show no examples of this, it makes me sad to even think about what this technology may be used for. But then, what do I know about what any technology is used for? I am probably totally naive.

«The Hailo Dataflow compiler is matching the target network’s resource graph to the physical resources on the device, generating a customized data pipe for the target network.»

FreeRTOS in an Erlang context

Briefly discussed at My leaf of comfort – SW / HW that cannot turn against us?

FreeRTOS whitepaper

Update 26Jul2021, while doing this: 222:[FreeRTOS whitepaper].

Programming xcore using FreeRTOS whitepaper is now available for download via log-in and a mail url. Its title is GETTING STARTED WITH FREERTOS APPLICATION PROGRAMMING ON XCORE USING THE AIOT SDK. WHITEPAPER JUNE 2021. At this level it’s confidential, so I guess you’d have to do the legal stuff yourself, to get a copy.

But determinism certainly is treated in the XMOS FreeRTOS port!

FreeRTOS Symmetric Multiprocessing (SMP)

I discovered this on Linkedin on 30Oct2021: «Introducing the FreeRTOS Symmetric Multiprocessing (SMP) Github Branch» [5].

I have not found any explanation on Github about the architecture of SMP on the xCORE and what it might imply. Here is a list of some points which I would however not know the relevance of:

  1. Several XMOS processors and external bus to shared memory?
  2. Several xCORE tiles which has shared memory with.. (on the xCORE architecture on-chip tiles are connected via the xConnect switch which may also be used when communicating with off-chip tiles on other XMOS processors. The xConnect also does hw routing of packet switched data, in several topologies). But SMP at this level?
  3. Several xCORE cores which already have shared memory with those on the same tile?

The architecture and xC already does this per tile = SMP (cores). I think this change is in the FreeRTOS kernel only.

I asked this on the XCore Exchange forum (list pint 4 below).

xCore Exchange forum

  1. FreeRTOS questions – 6Feb2020
  2. XMOS FreeRTOS port documentation? Plus some questions – 8Apr2020
  3. xC on xcore.ai – 30Apr2020
  4. FreeRTOS Symmetric Multiprocessing (SMP) for xCORE – 31Oct2021



Numbered refs

  1. Silicon to Satisfy the AIoT: xcore.ai, by Max Maxfield. In EEJ, Electronic Engineering Journal, see https://www.eejournal.com/article/silicon-to-satisfy-the-aiot-xcore-ai/ (20Feb2020)
  2. Will Neuromorphic Computing Compete with Today’s AI Accelerators? by Sally Ward-Foxton in EETimes, see https://www.eetimes.com/will-neuromorphic-computing-compete-with-todays-ai-accelerators/ (13Apr2020) (Referred 29Apr2020)
  3. xCORE.AI product brief, marketing material by XMOS, see https://www.xcore.ai/wp-content/uploads/2020/04/xcore.ai-Product-Brief.pdf (2020) (Referred 29Apr2020)
  4. XMOS announces all-new software development kit for the artificial intelligence of things, Oct2020, see https://www.xmos.ai/xmos-announces-all-new-software-development-kit-for-the-artificial-intelligence-of-things/.
  5. Introducing the FreeRTOS Symmetric Multiprocessing (SMP) Github Branch, by Lucio Di Jasio on 30 Jun 2021, see https://freertos.org/2021/06/introducing-the-freertos-symmetric-multiprocessing-smp-github-branch.html. The github branch is at https://github.com/FreeRTOS/FreeRTOS-Kernel/tree/smp

Leave a Reply

Dette nettstedet bruker Akismet for å redusere spam. Lær om hvordan dine kommentar-data prosesseres.