50 lines
1.5 KiB
Markdown
50 lines
1.5 KiB
Markdown
# FC02 card plan
|
||
|
||
## Position
|
||
|
||
```text
|
||
C pointers and structures
|
||
→ heap_4 mechanics in C
|
||
→ FC02 raw FreeRTOS task in C
|
||
→ C++ language/OOP prerequisites
|
||
→ K02 Task<Derived> wrapper in FreeRTOS C++
|
||
```
|
||
|
||
FC02 and K02 are a controlled pair. They use the same kernel, config,
|
||
priorities, stack depths, workload and `E01–E12` meanings. The variable under
|
||
study is the language-facing representation: raw C callback/context versus a
|
||
C++ CRTP wrapper.
|
||
|
||
## Task01
|
||
|
||
Two equal-priority CPU-bound workers independently sum `1..20000`. A lower
|
||
priority supervisor checks both results, task-stack evidence and an observed
|
||
`A,B,A` scheduling subsequence.
|
||
|
||
Enabled viewpoints:
|
||
|
||
- A1 Context;
|
||
- A2 Structure;
|
||
- A3 Dispatch;
|
||
- A5 Flow;
|
||
- A6 State;
|
||
- A7 Runtime.
|
||
|
||
A4 is unavailable because application topology is already complete in A2/A5.
|
||
A8 is unavailable because the relevant C idioms are attached directly to
|
||
A2/A3 rather than promoted into a decorative pattern diagram.
|
||
|
||
## Acceptance
|
||
|
||
- freestanding C11 build for RV32I/Hazard3;
|
||
- `make check-pair`, context contract, host workload and C-only ABI pass;
|
||
- simulator returns PASS with two results `200010000`;
|
||
- E03 proves `xTaskCreate` argument registers;
|
||
- E06 proves `a0 == &g_worker_a` at callback entry;
|
||
- E08 proves a real `A,B,A` subsequence;
|
||
- context, `&handle`, handle/TCB and separate task-stack range are not
|
||
conflated;
|
||
- all active UML anchors resolve and every RUN step has an event, strategy and
|
||
snapshot;
|
||
- navigation alone never mutates the simulator.
|