I added an example about how to run Pico]OS on Texas Instruments Tiva C Launchpad, which is a very affordable Cortex-M4 evaluation board. It costs currently less than $13 and has 256 Kb of flash and 32 Kb of ram.
Supporting it wasn’t quite as easy as I thought. Texas Instruments provides a C-language library called ‘Tivaware’ which contains functions to access all peripherals provided by the chip. However, tivaware does not include CMSIS headers currently (I was using version 2.x), which makes porting software that uses CMSIS (like Pico]OS) more difficult than it would otherwise be.
Luckily, there seems to be a project in github that provides CMSIS headers for TI Tiva chips. Another project provides BSD-licensed parts of tivaware. I decided to use those projects, even they are not ‘official distributions’ by TI, mainly because they solve the problem of missing CMSIS and are also very easy to include in open-source projects. My cmsis-ports now contains a first draft of these libraries for Pico]OS.
After getting a working CMSIS, building a working blink-test for this launchpad was easy! Just add a few driverlib calls to initialise and toggle GPIO lines of board’s RGB led.
There were some warnings when compiling code that uses both CMSIS and driverlib as they seem to define symbols with same names for on-board peripheral register addresses. The addresses in both definitions seemed same so I ‘fixed’ this by undefining the values defined by CMSIS to favour those, more officially supported ones by Tivaware driverlib.