TinyCTS/AL
Introduction
Software
Download TinyCTS/AL
Download TinyCTS only
 

Introduction

TinyCTS/AL is a Cooperative Task Scheduler (CTS) in combination with an Abstraction Layer (AL). It is still under development and this is only a proof of concept up to now.

The following architectures should be supported by TinyCTS:

  • Cortex A9, A8, A7, M7, M4, M3, M0
  • ARM 7
  • Nios II
  • RISC-V

Some components are already be available and must be revised to fit together. They was created in the past and forgotten in the digital nirvana :o)

Why TinyCTS? Here Tiny means small in functionality. I have only added the functionality which I really needed. If you need more functionality, take a look at (in alphabetical order) ChibiOS/RT, embOS, NutOS, TNKernel, µC/OS-II and more.

If you compare main.c from the EIR and STM3240G example of the TinyCTS only project you will see the differences of led, interrupt and systick initialisation.

All these differences are now fixed by the abstraction layer (AL). Up to now the following functionality are provided:

  • CPU and CTS initialisation
  • UART communication
  • CAN communication
  • LED support

Software

The core of the cooperative scheduling algorithm was acquired by the Ethernut project. All other features has been developed from scratch to be able to support the TCP/IP stack from Ethernut. Up to now the following features are implemented:

  • Cooperative scheduling
  • Unlimited number of tasks (1)
  • Unlimited number of tasks with the same priority (1)
  • Round robin scheduling for tasks with the same priority
  • Unlimited number of semaphores (1)
  • Unlimited number of events (flags) (1)
  • Timer and Statistic support

(1) Unlimited is not correct, it depends on the available memory.

In best case it should be possible to use the same application on different CPU architectures and platforms. At start the application with the abstraction layer, will output some information over the UART (115200, 8, N, 1):

It is possible to check the runtime stack:

But one of the most useful features is the task info:

Some information about the tasks which are available in the system will be displayed. Here six tasks are available. Two system tasks, "stat" and "idle" and four application tasks, "CANTask", "LEDTask", "Terminal" and "StartTask". The priority, stack size, stack utilisation and CPU load of each tasks will be displayed too. Furthermore the overall CPU and IRQ stack utilisation.

Btw, the task info for a web server which is under test by JPerf might look like this:

But this is another story...

This project is still under development. Therefore it is possible that some nasty errors exists.
I have warned you ;o)

Download TinyCTS/AL

For the compiler SEGGER Embedded Studio or CrossWorks was used.

tcts-tal-blinky-rt1020evk_20221120 CTS/AL example for a Cortex-M7 board (2.34 MB)

 

For the compiler SEGGER Embedded Studio was used.

tcts-tal-blinky-de1soc_20230603 CTS/AL example for a Cortex-A9 board (2.73 MB)

tcts-tal-blinky-neorv32-de0n_20231231 CTS/AL example for a RISC-V board (1.12 MB)

tcts-tal-blinky-ea1062_20221023 CTS/AL example for a Cortex-M7 board (1.88 MB)

tcts-tal-blinky-rt1170evk_20230318 CTS/AL example for a Cortex-M7 board (3.64 MB)

tcts-tal-blinky-rt1160evk_20230318 CTS/AL example for a Cortex-M7 board (3.18 MB)

tcts-tal-blinky-rt1060evk_20221119 CTS/AL example for a Cortex-M7 board (1.88 MB)

tcts-tal-blinky-rt1050evk_20221023 CTS/AL example for a Cortex-M7 board (1.78 MB)

tcts-tal-blinky-stm32779i_20221002 CTS/AL example for a Cortex-M7 board (2.08 MB)

tcts-tal-blinky-stm32769i_20221002 CTS/AL example for a Cortex-M7 board (2.09 MB)

tcts-tal-blinky-stm32746g_20221002 CTS/AL example for a Cortex-M7 board (2.08 MB)

tcts-tal-blinky-stm32h743zi_20221002 CTS/AL example for a Cortex-M7 board (2.31 MB)

tcts-tal-blinky-b3_20221002 CTS/AL example for a Cortex-A8 board (1.85 MB)

tcts-tal-blinky-6ulevk_20200614 CTS/AL example for a Cortex-A7 board (1.22 MB)

tcts-tal-blinky-frdmk64f_20230715 CTS/AL example for a Cortex-M4 board (1.36 MB)

tcts-tal-blinky-empower_20230727 CTS/AL example for a Cortex-M4 board (1.35 MB)

tcts-tal-blinky-sam4expro_20190210 CTS/AL example for a Cortex-M4 board (1.30 MB)

tcts-tal-blinky-bf4088_20230404 CTS/AL example for a Cortex-M4 board (944 KB)

tcts-tal-blinky-stm3210e_20230218 CTS/AL example for a Cortex-M3 board (712 KB)

tcts-tal-blinky-samd21xpro_20190126 CTS/AL example for a Cortex-M0+ board (734 KB)

 

For the compiler CrossWorks for ARM was used.

tcts-tal-blinky-stm32769i_20220925 CTS/AL example for a Cortex-M7 board (1.66 MB)

tcts-tal-blinky-b3_20220925 CTS/AL example for a Cortex-A8 board (709 KB)

tcts-tal-blinky-stm32746g_20220925 CTS/AL example for a Cortex-M7 board (1.99 MB)

tcts-tal-blinky-qsb4088_20161028 CTS/AL example for a Cortex-M4 board (827 KB)

tcts-tal-blinky-ea4088_20161026 CTS/AL example for a Cortex-M4 board (827 KB)

tcts-tal-blinky-stm3240g_20180312 CTS/AL example for a Cortex-M4 board (747 KB)

tcts-tal-blinky-frdmk66f_20180330 CTS/AL example for a Cortex-M4 board (835 KB)

tcts-tal-blinky-twrk65f_20181103 CTS/AL example for a Cortex-M4 board (1.12 MB)

tcts-tal-blinky-frdmk64f_20180323 CTS/AL example for a Cortex-M4 board (742 KB)

tcts-tal-blinky-e407_20160428 CTS/AL example for a Cortex-M4 board (742 KB)

tcts-tal-blinky-p405_20160521 CTS/AL example for a Cortex-M4 board (734 KB)

tcts-tal-blinky-ea1788_20161026 CTS/AL example for a Cortex-M3 board (700 KB)

tcts-tal-blinky-samd20xpro_20160616 CTS/AL example for a Cortex-M0+ board (495 KB)

tcts-tal-blinky-samd21xpro_20160617 CTS/AL example for a Cortex-M0+ board (736 KB)

tcts-tal-blinky-eir_20160312 CTS/AL example for an ARM 7 board (172 KB)

Download TinyCTS only

For the compiler CrossWorks for ARM v3.6.2 and Quartus II 11.1sp2 was used.

tcts-blinky-stm3240g_20160312 CTS example for a Cortex-M4 board (161 KB)

tcts-blinky-eir_20160312 CTS example for an ARM 7 board (97 KB)

tcts-blinky-de1_20160312 CTS example for a Nios II board (317 KB)

Download TinyCTS only

For the compiler SEGGER Embedded Studio and Quartus was used.

tcts-blinky-neorv32-de0n_20230224 CTS example for a RISC-V board (764 KB)