feat: add lab-rv32i-freertos-integration card
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# K16 — Integrated real-time application and evidence report
|
||||
|
||||
## Position
|
||||
|
||||
- Series: FreeRTOS C++
|
||||
- Lesson: L15, card K16
|
||||
- Duration: 30 minutes
|
||||
- Final integration card; no new wrapper primitive
|
||||
- Reproducible end-to-end evidence on Hazard3
|
||||
|
||||
## Outcome
|
||||
|
||||
The student composes ownership, storage, task priorities, startup coordination,
|
||||
ISR/timer boundaries, queue pressure and memory/stack diagnostics into one
|
||||
defensible real-time service graph.
|
||||
|
||||
## Lesson plan
|
||||
|
||||
| Time | Mode | Evidence |
|
||||
| --- | --- | --- |
|
||||
| 0–5 | inventory | static services delta 0; dynamic report queue 128 B |
|
||||
| 5–10 | startup | EventGroup barrier=0x7; task priorities and ownership |
|
||||
| 10–15 | inputs | real IRQ tick 1; timer ticks 5/10 |
|
||||
| 15–20 | pipeline | three samples, transform sum 120 |
|
||||
| 20–25 | pressure | peaks 2/2, sequence 4 dropped, end marker recovers |
|
||||
| 25–30 | report | latency 6, stack HWM, 24-event digest c474ac09 |
|
||||
|
||||
## Acceptance
|
||||
|
||||
- no new wrapper primitive is introduced;
|
||||
- producer, processor and reporter are StaticTask instances;
|
||||
- startup EventGroup remains at mask 0x7;
|
||||
- external IRQ wakes producer at tick 1 and requests exactly one yield;
|
||||
- periodic timer callbacks occur at ticks 5 and 10, then timer becomes inactive;
|
||||
- three samples are produced, processed and reported with sum 120;
|
||||
- input and report queues both reach depth 2;
|
||||
- sequence 4 is explicitly drop-newest and the end marker later succeeds;
|
||||
- static services have heap delta zero;
|
||||
- exactly one persistent dynamic Queue costs 128 B;
|
||||
- oversized fallible allocation returns null without changing free heap;
|
||||
- producer/processor/reporter stack HWM are positive and recorded;
|
||||
- end-to-end latency is 6 ticks and trace digest is c474ac09;
|
||||
- target exits with PASS.
|
||||
|
||||
## Main traps
|
||||
|
||||
1. Adding abstraction without a new invariant.
|
||||
2. Hiding an unbounded allocation or queue wait in the periodic path.
|
||||
3. Treating a pressure drop as success or failing to count it.
|
||||
4. Performing transformation in ISR/timer callback instead of a task.
|
||||
5. Reporting screenshots without source, timestamped trace and repeatable gate.
|
||||
Reference in New Issue
Block a user