9977bac71561482120dcdf3f2d948411112fd46b
Chopstx - Threads and only Threads
Version 2.3
2021-10-12
Niibe Yutaka
Flying Stone Technology
What's Chopstx?
===============
Chopstx is an RT thread library for STM32F103 and GD32F103 (ARM
Cortex-M3), STM32F030 (ARM Cortex-M0), MKL27Z (ARM Cortex-M0plus),
STM32L432 (ARM Cortex-M4), GD32VF103 (RISC-V Bumblebee) and emulation
on GNU/Linux.
While most RTOSes come with many features, drivers, and protocol
stacks, Chopstx just offers a simple RT thread library.
With Chopstx, interrupt handling is also done by a thread. This
enables coherent code for ease of maintenance.
While threads are important, we don't need more threads than
necessary. Chopstx provides a feature of poll, so that we can
handle multiple events by a single thread.
Note that this library is _not_ related to the hand game:
https://en.wikipedia.org/wiki/Chopsticks_(hand_game)
Thanks to Yao Wei and Enrico Zini for giving me an opportunity
visiting the wiki page above in Debconf Taiwan, when my children were
playing the game.
License
=======
It is distributed under GNU General Public Licence version 3 or later
(GPLv3+), with additional permission. Please see COPYING and
EXCEPTION.
Example code
============
We have some examples in this distribution; Useful ones are LED
blinker and USB CDC-ACM device. For STM32F103, you can build it USB
CDC-ACM demo by:
$ cd example-cdc
$ ln -sf ../board/board-olimex-stm32-h103.h board.h
$ make
If you want to try GD32F103, Add -DMHZ=96 to DEFS in Makefile.
For a specific board named FSM-55, an example of LED matrix dynamic
driver is provided. See the directory: example-fsm-55.
For STM32 Primer2, see the directory: example-primer2.
Future Works
============
Convenience function to determine the bottom of thread stack,
configuration of thread size by compiler's output would be next things
to be done.
We have an experimental SMP port for Cortex-A7. For SMP, more careful
considerations for shared access to objects of struct chx_pq is
needed. So, modifications required will not be small.
--
Description
Languages
C
96.3%
Makefile
1.5%
M4
0.9%
Modula-3
0.7%
HTML
0.5%