chore: preserve FreeRTOS and C series updates

This commit is contained in:
2026-07-21 19:14:29 +02:00
parent 9f1b2399a8
commit 11d17b1c92
8 changed files with 240 additions and 46 deletions
+6
View File
@@ -5,6 +5,12 @@ Publiczny manifest wspólnego workspace EDU.
Repo opisuje serie i karty pracy dostępne dla `stemctl`. Nie przechowuje Repo opisuje serie i karty pracy dostępne dla `stemctl`. Nie przechowuje
tokenów, lokalnych ścieżek użytkownika ani plików roboczych ucznia. tokenów, lokalnych ścieżek użytkownika ani plików roboczych ucznia.
Widoczność karty w katalogu nie jest uprawnieniem do jej wykonania. W
zarządzanej usłudze nauczyciel uruchamia kartę przez `teactl`, a `stemctl`
ucznia może otworzyć i wykonać tylko wersję wskazaną bieżącym
`CardRunGrant`. Bezpośrednie przeglądanie katalogu pozostaje funkcją
developerską i standalone.
`workspace.json.series` zawiera wyłącznie aktywne serie obsługiwane przez `workspace.json.series` zawiera wyłącznie aktywne serie obsługiwane przez
`stemctl`. `workspace.json.catalog_subjects` zasila drzewo UI także seriami `stemctl`. `workspace.json.catalog_subjects` zasila drzewo UI także seriami
planowanymi, ale nie udostępnia ich poleceniom pobierania. Pozycję można dodać planowanymi, ale nie udostępnia ich poleceniom pobierania. Pozycję można dodać
+5 -5
View File
@@ -3,7 +3,7 @@
"title": "FreeRTOS C", "title": "FreeRTOS C",
"catalog_only": true, "catalog_only": true,
"cards": [ "cards": [
{"id": "FC01", "repo": "lab-rv32i-freertos-heap4", "number": "01", "title": "heap_1heap_5 and heap_4 mechanics", "status": "existing"}, {"id": "FC01", "repo": "lab-rv32i-freertos-heap4", "number": "01", "title": "heap_4: From Linear Cursor to Reusable Blocks", "status": "existing"},
{"id": "FC02", "repo": "lab-rv32i-freertos-c-first-task", "number": "02", "title": "First Task, TCB and Task Stack", "status": "existing"}, {"id": "FC02", "repo": "lab-rv32i-freertos-c-first-task", "number": "02", "title": "First Task, TCB and Task Stack", "status": "existing"},
{"id": "FC03", "repo": "lab-rv32i-freertos-c-scheduler", "number": "03", "title": "Tick, Scheduler, Priorities and Time Slicing", "status": "existing"}, {"id": "FC03", "repo": "lab-rv32i-freertos-c-scheduler", "number": "03", "title": "Tick, Scheduler, Priorities and Time Slicing", "status": "existing"},
{"id": "FC04", "repo": "lab-rv32i-freertos-c-delay-state", "number": "04", "title": "Delay, Blocking and Task States", "status": "existing"}, {"id": "FC04", "repo": "lab-rv32i-freertos-c-delay-state", "number": "04", "title": "Delay, Blocking and Task States", "status": "existing"},
@@ -14,9 +14,9 @@
{"id": "FC09", "repo": "lab-rv32i-freertos-c-event-groups", "number": "09", "title": "Event Groups and Multi-event Synchronization", "status": "existing"}, {"id": "FC09", "repo": "lab-rv32i-freertos-c-event-groups", "number": "09", "title": "Event Groups and Multi-event Synchronization", "status": "existing"},
{"id": "FC10", "repo": "lab-rv32i-freertos-c-notifications", "number": "10", "title": "Direct-to-task Notifications", "status": "existing"}, {"id": "FC10", "repo": "lab-rv32i-freertos-c-notifications", "number": "10", "title": "Direct-to-task Notifications", "status": "existing"},
{"id": "FC11", "repo": "lab-rv32i-freertos-c-static-allocation", "number": "11", "title": "Static Allocation and Bounded Storage", "status": "existing"}, {"id": "FC11", "repo": "lab-rv32i-freertos-c-static-allocation", "number": "11", "title": "Static Allocation and Bounded Storage", "status": "existing"},
{"id": "FC12", "repo": "lab-rv32i-freertos-c-diagnostics", "number": "12", "title": "Assertions, Hooks, Stack Checks and Runtime Diagnostics", "status": "planned"}, {"id": "FC12", "repo": "lab-rv32i-freertos-c-diagnostics", "number": "12", "title": "Assertions, Hooks, Stack Checks and Runtime Diagnostics", "status": "existing"},
{"id": "FC13", "repo": "lab-rv32i-freertos-c-uart", "number": "13", "title": "UART Interrupt-to-task Pipeline", "status": "planned"}, {"id": "FC13", "repo": "lab-rv32i-freertos-c-uart", "number": "13", "title": "UART Interrupt-to-task Pipeline", "status": "existing"},
{"id": "FC14", "repo": "lab-rv32i-freertos-c-gpio-timer", "number": "14", "title": "GPIO, Hardware Timer and Deferred Work", "status": "planned"}, {"id": "FC14", "repo": "lab-rv32i-freertos-c-gpio-timer", "number": "14", "title": "GPIO, Hardware Timer and Deferred Work", "status": "existing"},
{"id": "FC15", "repo": "lab-rv32i-freertos-c-integration", "number": "15", "title": "Integrated Deterministic FreeRTOS C Application", "status": "planned"} {"id": "FC15", "repo": "lab-rv32i-freertos-c-integration", "number": "15", "title": "Integrated Deterministic FreeRTOS C Application", "status": "existing"}
] ]
} }
+15 -15
View File
@@ -3,20 +3,20 @@
"title": "FreeRTOS C++", "title": "FreeRTOS C++",
"catalog_only": true, "catalog_only": true,
"cards": [ "cards": [
{"id": "K02", "repo": "lab-rv32i-freertos-task-stack-vector", "number": "02", "title": "First Task, Stack, Tick, Scheduler and Vector V0", "status": "existing"}, {"id": "K02", "repo": "lab-rv32i-freertos-task-stack-vector", "number": "02", "title": "C++ Task<Derived> Wrapper, CRTP and Lifecycle", "status": "existing"},
{"id": "K03", "repo": "lab-rv32i-freertos-vector-raii", "number": "03", "title": "Vector V1 — Destructor, Move, Ownership and RAII", "status": "planned"}, {"id": "K03", "repo": "lab-rv32i-freertos-vector-raii", "number": "03", "title": "Vector V1 — Destructor, Move, Ownership and RAII", "status": "existing"},
{"id": "K04", "repo": "lab-rv32i-freertos-scheduler-states", "number": "04", "title": "Scheduler States, Priorities and Typed Ticks", "status": "planned"}, {"id": "K04", "repo": "lab-rv32i-freertos-scheduler-states", "number": "04", "title": "Scheduler States, Priorities and Typed Ticks", "status": "existing"},
{"id": "K05", "repo": "lab-rv32i-freertos-heap-models", "number": "05", "title": "C++ Heap Bridge, Heap Models and HeapStats", "status": "planned"}, {"id": "K05", "repo": "lab-rv32i-freertos-heap-models", "number": "05", "title": "C++ Heap Bridge, Heap Models and HeapStats", "status": "existing"},
{"id": "K06", "repo": "lab-rv32i-freertos-allocator-resource", "number": "06", "title": "MemoryResource and FreeRtosAllocator<T>", "status": "planned"}, {"id": "K06", "repo": "lab-rv32i-freertos-allocator-resource", "number": "06", "title": "MemoryResource and FreeRtosAllocator<T>", "status": "existing"},
{"id": "K07", "repo": "lab-rv32i-freertos-task-wrapper", "number": "07", "title": "TaskHandle_t, Explicit Start and Static Trampoline", "status": "planned"}, {"id": "K07", "repo": "lab-rv32i-freertos-task-wrapper", "number": "07", "title": "TaskHandle_t, Explicit Start and Static Trampoline", "status": "existing"},
{"id": "K08", "repo": "lab-rv32i-freertos-static-task", "number": "08", "title": "DynamicTask, StaticTask, Deletion and Lifetime", "status": "planned"}, {"id": "K08", "repo": "lab-rv32i-freertos-static-task", "number": "08", "title": "DynamicTask, StaticTask, Deletion and Lifetime", "status": "existing"},
{"id": "K09", "repo": "lab-rv32i-freertos-kernel-facade", "number": "09", "title": "Scheduler Facade and Scoped Kernel Guards", "status": "planned"}, {"id": "K09", "repo": "lab-rv32i-freertos-kernel-facade", "number": "09", "title": "Scheduler Facade and Scoped Kernel Guards", "status": "existing"},
{"id": "K10", "repo": "lab-rv32i-freertos-queue", "number": "10", "title": "Queue<T> and StaticQueue<T, N>", "status": "planned"}, {"id": "K10", "repo": "lab-rv32i-freertos-queue", "number": "10", "title": "Queue<T> and StaticQueue<T, N>", "status": "existing"},
{"id": "K11", "repo": "lab-rv32i-freertos-mutex", "number": "11", "title": "Mutex, LockGuard and Priority Inheritance", "status": "planned"}, {"id": "K11", "repo": "lab-rv32i-freertos-mutex", "number": "11", "title": "Mutex, LockGuard and Priority Inheritance", "status": "existing"},
{"id": "K12", "repo": "lab-rv32i-freertos-semaphore-notify", "number": "12", "title": "Semaphores and Task Notifications", "status": "planned"}, {"id": "K12", "repo": "lab-rv32i-freertos-semaphore-notify", "number": "12", "title": "Semaphores and Task Notifications", "status": "existing"},
{"id": "K13", "repo": "lab-rv32i-freertos-event-group", "number": "13", "title": "EventGroup and Coordinated State", "status": "planned"}, {"id": "K13", "repo": "lab-rv32i-freertos-event-group", "number": "13", "title": "EventGroup and Coordinated State", "status": "existing"},
{"id": "K14", "repo": "lab-rv32i-freertos-sw-timer", "number": "14", "title": "Software Timer and the Timer Daemon Task", "status": "planned"}, {"id": "K14", "repo": "lab-rv32i-freertos-sw-timer", "number": "14", "title": "Software Timer and the Timer Daemon Task", "status": "existing"},
{"id": "K15", "repo": "lab-rv32i-freertos-isr-drivers", "number": "15", "title": "Explicit FromISR, UART and GPIO Wrappers", "status": "planned"}, {"id": "K15", "repo": "lab-rv32i-freertos-isr-drivers", "number": "15", "title": "Explicit FromISR, UART and GPIO Wrappers", "status": "existing"},
{"id": "K16", "repo": "lab-rv32i-freertos-integration", "number": "16", "title": "Integrated Real-time Application and Evidence", "status": "planned"} {"id": "K16", "repo": "lab-rv32i-freertos-integration", "number": "16", "title": "Integrated Real-time Application and Evidence", "status": "existing"}
] ]
} }
+58 -1
View File
@@ -1,6 +1,6 @@
# C — Freestanding RV32I and K&R # C — Freestanding RV32I and K&R
Status: 8 kart istniejących lub rozpoczętych, 5 planowanych. Status: C01C13 gotowe; seria C zakończona przed rozpoczęciem serii C++.
```text ```text
C · Freestanding RV32I and K&R C · Freestanding RV32I and K&R
@@ -23,5 +23,62 @@ RV32I ASM jest osobną serią-prerekwizytem. C01C03 tworzą przejście z
freestanding assemblera do środowiska C, ale pozostają kartami serii C, freestanding assemblera do środowiska C, ale pozostają kartami serii C,
ponieważ ich wynikiem jest rozumienie uruchomienia i ABI programu C. ponieważ ich wynikiem jest rozumienie uruchomienia i ABI programu C.
## Układ każdego przykładu: A1A8
Każdy przykład źródłowy w karcie serii C jest osobnym taskiem i jawnie
odpowiada na komplet pytań A1A8:
```text
A1 CONTEXT granica systemu i odpowiedzialność przykładu
A2 STRUCTURE typy, obiekty, reprezentacja i ownership
A3 DISPATCH granica wywołania, callbacku albo ISR
A4 APPLICATION konkretne funkcje, dane i inwariant przykładu
A5 FLOW kolejność wykonania oraz checkpointy
A6 STATE stan, lifetime i przejścia wartości
A7 RUNTIME ABI, rejestry, adresy, sekcje ELF i wynik pomiaru
A8 PATTERNS nazwana, rzeczywiście wielokrotnego użytku decyzja
```
A1A8 jest profilem pytań, a nie nakazem tworzenia ośmiu dekoracyjnych
diagramów. Każda pozycja ma status `enabled` albo `unavailable`. Widok
`enabled` musi wnosić odrębny dowód; `unavailable` zawiera konkretny powód.
Wartościowy opis tekstowy jest pełnoprawnym widokiem. Diagram powstaje tylko
wtedy, gdy relacja, kolejność lub stan są mniej czytelne w krótkim tekście.
Dla C04C06 nowe źródło JSON, TeX, HTML i nowy PDF są dodawane obok
historycznych kart. Oryginalne `doc/main.tex`, PDF-y oraz przykłady w
`src/tasks/` pozostają niezmienionym materiałem referencyjnym.
Pełne cele C10C13 i granica roku znajdują się w Pełne cele C10C13 i granica roku znajdują się w
`series/inf/lab-rv32i-c-pointers-arrays/guidelines/year-01-interrupts-to-year-02-freertos.md`. `series/inf/lab-rv32i-c-pointers-arrays/guidelines/year-01-interrupts-to-year-02-freertos.md`.
## Stan odbioru serii C — 2026-07-20
Każda karta ma wygenerowane źródło JSON, widok web i nowy PDF. Odbiór
potwierdza dokładną kolejność A1A8 w każdym tasku, jawne uzasadnienie każdego
N/D, poprawny JSON i JavaScript, poprawność PDF według `qpdf` oraz brak pustych,
anonimowych i przepełnionych stron. Przykłady uruchamialne przeszły właściwe
testy hostowe i/lub wyrocznie Hazard3.
```text
karta przykłady bloki A1A8
C01 3 24
C02 4 32
C03 2 16
C04 12 96
C05 8 64
C06 11 88
C07 12 96
C08 4 32
C09 5 40
C10 3 24
C11 3 24
C12 3 24
C13 4 32
RAZEM 74 592
```
PDF-y mają łącznie 180 stron. Spośród 592 widoków 508 ma stan `enabled`, a 84
ma stan `unavailable` z konkretnym powodem. Historyczne źródła C04C06 nadal są
materiałem referencyjnym: nowy układ nie nadpisuje `doc/main.tex`, starych
PDF-ów ani przykładów w `src/tasks/`.
+39 -20
View File
@@ -1,8 +1,8 @@
# FreeRTOS C — book-led card sequence # FreeRTOS C — book-led card sequence
Status: FC01FC02 exist; FC03 is the next implementation; FC04FC15 are Status: FC01FC15 istnieją; blok 15 kart FreeRTOS C jest kompletny i stanowi
planned. This series uses only the FreeRTOS C API. C++ wrappers belong to a zamknięty fundament przed serią FreeRTOS C++. Każda karta używa publicznego
later, separate series. API C, a końcowa FC15 scala mechanizmy w jeden deterministyczny eksperyment.
## Primary source and ordering rule ## Primary source and ordering rule
@@ -62,7 +62,7 @@ simulator.
```text ```text
FreeRTOS C — 15 cards FreeRTOS C — 15 cards
├── FC01 · Heap schemes and heap_4 block mechanics ├── FC01 · heap_4: from a linear cursor to reusable blocks
├── FC02 · First task, typed context, TCB and task stack ├── FC02 · First task, typed context, TCB and task stack
├── FC03 · Tick, priorities, preemption and time slicing ├── FC03 · Tick, priorities, preemption and time slicing
├── FC04 · Delay, blocking, task states and deletion ├── FC04 · Delay, blocking, task states and deletion
@@ -79,22 +79,37 @@ FreeRTOS C — 15 cards
└── FC15 · Integrated deterministic FreeRTOS C application └── FC15 · Integrated deterministic FreeRTOS C application
``` ```
## FC01 — Heap schemes and heap_4 block mechanics ## FC01 — `heap_4`: from a linear cursor to reusable blocks
**Book basis:** 3.13.4: `heap_1``heap_5`, heap utilities, allocation **Duration:** one 30-minute lesson.
failure and static allocation introduction.
**Direct predecessor:** C07, K&R 5.4 Task04 — `allocbuf[64]`, `allocp`,
`alloc(5)`, `alloc(7)` and cursor offsets `0 -> 5 -> 12`.
**Book basis:** the `heap_4` and heap-statistics parts of Chapter 3. The other
FreeRTOS heap implementations are a one-minute map of alternatives, not
parallel lesson content.
- Opening problem: the linear project cannot release the first 5-byte area
while preserving the later 7-byte area, cannot remember reusable holes and
recovers the arena only with a whole-arena reset.
- New model: a block header, an address-ordered free list, first-fit selection,
splitting and coalescing of physically adjacent free blocks.
- Raw API: `pvPortMalloc`, `vPortFree`, `xPortGetFreeHeapSize`, - Raw API: `pvPortMalloc`, `vPortFree`, `xPortGetFreeHeapSize`,
`xPortGetMinimumEverFreeHeapSize`, `vPortGetHeapStats`. `xPortGetMinimumEverFreeHeapSize`, `vPortGetHeapStats`.
- Main task: compare allocator policies, then walk allocation, split, free - Task 1 and Task 2 are short teacher-led models with a student prediction;
and coalescing in `heap_4`. they are not separate build/debug sessions during the lesson.
- Blocks: A1 allocator boundary; A2 block/list layout; A5 allocation flow; - Task 3 is the only central student replay: real upstream `heap_4.c`, two
A6 free/allocated block state; A7 heap addresses and statistics. stable checkpoints, fragmentation metrics, recovery and OOM.
- Exercise: predict the free-list shape for a new allocate/free order. - Pico 2 W supplies one prebuilt RP2350 hardware observation. `heap_4` is the
- Hazard3/GDB proof: block headers, aligned sizes and coalesced neighbors allocator selected and linked by the project, not a hardware feature of the
agree with the final heap statistics. microcontroller.
- Main pitfall: treating the minimum-ever-free value as current free space or - Acceptance: the student names the three additions over the linear allocator
assuming all heap implementations support free/coalescing. (header, free list, coalescing), predicts `2 free blocks -> 1 free block`,
and distinguishes current free bytes, largest free block and minimum-ever
free bytes.
- Main pitfall: assuming that a large sum of free bytes guarantees one large
allocation, or that minimum-ever-free increases after `free`.
## FC02 — First task, typed context, TCB and task stack ## FC02 — First task, typed context, TCB and task stack
@@ -367,10 +382,12 @@ Every new card must contain:
8. HTML and TeX generated from one `card_source.json`; 8. HTML and TeX generated from one `card_source.json`;
9. no PDF generation and no commit unless explicitly requested. 9. no PDF generation and no commit unless explicitly requested.
## Implementation order ## Completed implementation order
```text ```text
FC03 scheduler FC01 heap_4
→ FC02 first task
→ FC03 scheduler
→ FC04 state/delay → FC04 state/delay
→ FC05 queues → FC05 queues
→ FC06 software timers → FC06 software timers
@@ -385,5 +402,7 @@ FC03 scheduler
→ FC15 integration → FC15 integration
``` ```
Ukończenie FC15 jest pierwszą z dwóch bramek wejścia do FreeRTOS C++; drugą Obie bramki wejścia do FreeRTOS C++ są spełnione: FC15 zamyka tor systemowy C,
jest ukończenie właściwych kart językowych C++/OOP. a właściwe karty językowe C++/OOP dostarczają model własności, RAII, szablony i
statyczne trampoline. Następnym etapem jest audyt i realizacja serii FreeRTOS
C++ karta po karcie, bez mieszania wrapperów z implementacją kernela w C.
+8 -4
View File
@@ -1,14 +1,18 @@
# FreeRTOS C++ — plan kart # FreeRTOS C++ — plan kart
Status: K02 istnieje i jest bieżącą kartą; K03K16 są planem. Status: K02K16 są gotowe; blok 15 kart jest kompletny. Każda karta ma
freestanding build C++17, test hosta, kontrolę ABI, wykonanie na Hazard3 oraz
sprawdzony PDF. Źródła i artefakty używają wspólnej numeracji Kxx/16.
Karta `heap_4` należy do serii FreeRTOS C. FreeRTOS C++ zaczyna się dopiero po Karta `heap_4` należy do serii FreeRTOS C. FreeRTOS C++ zaczyna się dopiero po
ukończeniu dwóch torów prowadzonych równolegle: FreeRTOS C oraz C++. K02 ukończeniu dwóch torów prowadzonych równolegle: FreeRTOS C oraz C++. K02
porównuje znany już surowy task C z freestanding wrapperem C++ i Vector V0. wprowadza freestanding wrapper `Task<Derived>`, CRTP i statyczny trampoline.
K03 pokazuje krótki, celowo niepełny Vector V0 bez ukrytego wymagania wykonania
osobnej karty, a następnie buduje z niego move-only Vector V1 z RAII.
```text ```text
FreeRTOS C++ FreeRTOS C++
├── K02 · First Task, Stack, Tick, Scheduler and Vector V0 ├── K02 · C++ Task<Derived> Wrapper, CRTP and Lifecycle
├── K03 · Vector V1 — Destructor, Move, Ownership and RAII ├── K03 · Vector V1 — Destructor, Move, Ownership and RAII
├── K04 · Scheduler States, Priorities and Typed Ticks ├── K04 · Scheduler States, Priorities and Typed Ticks
├── K05 · C++ Heap Bridge, Heap Models and HeapStats ├── K05 · C++ Heap Bridge, Heap Models and HeapStats
@@ -32,7 +36,7 @@ freestanding, bez wyjątków, RTTI i zależności od hosted `libstdc++`.
Każda karta linkuje również do osobnej serii OOP, gdy wrapper rzeczywiście Każda karta linkuje również do osobnej serii OOP, gdy wrapper rzeczywiście
realizuje wzorzec lub idiom wymagający osobnego omówienia. realizuje wzorzec lub idiom wymagający osobnego omówienia.
Szczegółowy plan bieżącej K02 oraz kontrolowane porównanie z FC02: Materiały wejściowe K02 oraz kontrolowane porównanie z FC02:
- [K02 Task01 — A1A8 plan](../../../../series/freertos/lab-rv32i-freertos-task-stack-vector/doc/task01-a1-a8-plan.md) - [K02 Task01 — A1A8 plan](../../../../series/freertos/lab-rv32i-freertos-task-stack-vector/doc/task01-a1-a8-plan.md)
- [FC02/K02 — paired first-task experiment](freertos-first-task-a1-a8.md) - [FC02/K02 — paired first-task experiment](freertos-first-task-a1-a8.md)
+25 -1
View File
@@ -14,7 +14,7 @@
"id": "FC01", "id": "FC01",
"repo": "lab-rv32i-freertos-heap4", "repo": "lab-rv32i-freertos-heap4",
"branch": "main", "branch": "main",
"title": "heap_1heap_5 and heap_4 mechanics" "title": "heap_4: From Linear Cursor to Reusable Blocks"
}, },
{ {
"id": "FC02", "id": "FC02",
@@ -75,6 +75,30 @@
"repo": "lab-rv32i-freertos-c-static-allocation", "repo": "lab-rv32i-freertos-c-static-allocation",
"branch": "main", "branch": "main",
"title": "Static Allocation and Bounded Storage" "title": "Static Allocation and Bounded Storage"
},
{
"id": "FC12",
"repo": "lab-rv32i-freertos-c-diagnostics",
"branch": "main",
"title": "Assertions, Hooks, Stack Checks and Runtime Diagnostics"
},
{
"id": "FC13",
"repo": "lab-rv32i-freertos-c-uart",
"branch": "main",
"title": "UART Interrupt-to-task Pipeline"
},
{
"id": "FC14",
"repo": "lab-rv32i-freertos-c-gpio-timer",
"branch": "main",
"title": "GPIO, Hardware Timer and Deferred Work"
},
{
"id": "FC15",
"repo": "lab-rv32i-freertos-c-integration",
"branch": "main",
"title": "Integrated Deterministic FreeRTOS C Application"
} }
] ]
} }
+84
View File
@@ -15,6 +15,90 @@
"repo": "lab-rv32i-freertos-task-stack-vector", "repo": "lab-rv32i-freertos-task-stack-vector",
"branch": "main", "branch": "main",
"title": "C++ Task wrapper: OOP and lifecycle" "title": "C++ Task wrapper: OOP and lifecycle"
},
{
"id": "K03",
"repo": "lab-rv32i-freertos-vector-raii",
"branch": "main",
"title": "Vector V1: destructor, move, ownership and RAII"
},
{
"id": "K04",
"repo": "lab-rv32i-freertos-scheduler-states",
"branch": "main",
"title": "Scheduler states, priorities and typed ticks"
},
{
"id": "K05",
"repo": "lab-rv32i-freertos-heap-models",
"branch": "main",
"title": "C++ heap bridge, heap models and HeapStats"
},
{
"id": "K06",
"repo": "lab-rv32i-freertos-allocator-resource",
"branch": "main",
"title": "MemoryResource and FreeRtosAllocator<T>"
},
{
"id": "K07",
"repo": "lab-rv32i-freertos-task-wrapper",
"branch": "main",
"title": "TaskHandle_t, explicit start and static trampoline"
},
{
"id": "K08",
"repo": "lab-rv32i-freertos-static-task",
"branch": "main",
"title": "DynamicTask, StaticTask, deletion and lifetime"
},
{
"id": "K09",
"repo": "lab-rv32i-freertos-kernel-facade",
"branch": "main",
"title": "Scheduler facade and scoped kernel guards"
},
{
"id": "K10",
"repo": "lab-rv32i-freertos-queue",
"branch": "main",
"title": "Queue<T> and StaticQueue<T, N>"
},
{
"id": "K11",
"repo": "lab-rv32i-freertos-mutex",
"branch": "main",
"title": "Mutex, LockGuard and priority inheritance"
},
{
"id": "K12",
"repo": "lab-rv32i-freertos-semaphore-notify",
"branch": "main",
"title": "Semaphores and task notifications"
},
{
"id": "K13",
"repo": "lab-rv32i-freertos-event-group",
"branch": "main",
"title": "EventGroup and coordinated state"
},
{
"id": "K14",
"repo": "lab-rv32i-freertos-sw-timer",
"branch": "main",
"title": "Software timer and the timer daemon task"
},
{
"id": "K15",
"repo": "lab-rv32i-freertos-isr-drivers",
"branch": "main",
"title": "Explicit FromISR, UART and GPIO wrappers"
},
{
"id": "K16",
"repo": "lab-rv32i-freertos-integration",
"branch": "main",
"title": "Integrated real-time application and evidence"
} }
] ]
} }