July 29, 2024
JeeH version
6.1.0
release notes and highlights:
This is a minor release. I’m pushing this release out to prepare for some new
ideas - mostly aimed at reducing overhead and complexity, and at improving
JeeH’s low-power capabilities.
The current low-power design lets JeeH decide when to enter a low-power mode,
based on jeeh::lowestPower
and jeeh::resumePower
functions which can be
tweaked for a specific scenario. One problem is that these two functions have to
run in “handler” mode, i.e. as exceptions, which has very specific “rules of
engagement”. Another more pressing problem is that this code is simply … not
working correctly in all cases!
...
June 29, 2024
JeeH version
6.0.0
release notes and highlights:
This is a major new release of JeeH. A lot of things have changed:
-
Now you see them, now you don’t: tasks are gone again. The routing of task
messages was too complex. Threads are unchanged. Messages can still be sent to
threads and to device drivers.
-
Instead of waiting for messages coming back as reply, the sender can now set
up a callback method, which is called when the reply is received. For this
to work, a thread needs to have while (true) sys::recv();
as its main loop.
There is a (template) function to store a callback into a message:
...
April 2, 2024
JeeH version 5.4.0 release notes and highlights:
This is mostly to consolidate what there is, to prepare for a new v6 series of
releases (the reason is described in this post - in short:
I want to redo the tasks-vs-threads design and the test automation).
Changes in v5.4.0:
-
More work on a RAM-based test runner, using openocd
to upload the code.
-
Explore more ways to send test output through ITM/SWO, which avoids the need
to dedicate a UART to this. It relies on PB3 being connected to the ST-Link,
which is the case on most Nucleo and Discovery boards from STM.
...
March 9, 2024
JeeH version 5.3.0 release notes and highlights:
This release brings a number of major changes:
-
Tasks have been renamed to Threads … because that’s what they really
are.
-
And with that out of the way: a new Task
type has been added, to support
asynchronous processing, i.e. an “async/await” style of doing work which does
not run in a separate thread. This reduces overhead and avoids the need for
a separate stack. A task in JeeH is a bit like a crossover between a thread
and a driver: you can send it messages, but like a driver it runs to
completion (i.e. until it returns) and is not allowed to block or suspend.
For details, see the Threads vs Async I/O article.
...
February 12, 2024
JeeH version 5.2.0 release notes and highlights:
This is the most extensive release so far, with new SDIO and Ethernet drivers.
Everything is still highly experimental, but the main pieces of the
multitasker puzzle are starting to fit together quite nicely. Using lightweight
messages as the main vehicle for communication between tasks and drivers works
really well and allows pacing the different pieces of an application.
The driver model helps decouple the different layers, as illustrated by the
eth
driver and net
worker task: neither one needs knowledge of the other
(their code can be included in either order). All the net
worker needs is the
id of the eth
driver to communicate with it. Conversely, the eth
driver
has no knowledge whatsoever of the protocol stack implemented in net
.
...