38 lines
1.3 KiB
Markdown
38 lines
1.3 KiB
Markdown
# FC02 — pierwszy task, TCB i stos taska
|
||
|
||
Karta jest surowym punktem odniesienia w C dla późniejszej karty FreeRTOS C++.
|
||
Uczeń tworzy dwa równorzędne taski przez `xTaskCreate`, śledzi
|
||
`void *pvParameters` do jawnego `WorkerContext`, odróżnia kontekst aplikacji od
|
||
TCB i stosu taska oraz obserwuje time slicing na Hazard3.
|
||
|
||
## Kontrolowany eksperyment
|
||
|
||
- dwa workery o priorytecie 2 liczą niezależnie sumę `1..20000`;
|
||
- oba wyniki muszą wynosić `200010000`;
|
||
- supervisor o priorytecie 1 uruchamia się po zakończeniu workerów;
|
||
- ślad planisty musi zawierać `A -> B -> A` i co najmniej dwa ticki;
|
||
- konteksty aplikacji są statyczne, natomiast TCB i stosy pochodzą z `heap_4`;
|
||
- E01–E12 są deterministycznymi punktami replay dla Neovima, GDB i Hazard3.
|
||
|
||
Karta nie zawiera C++, wrappera, kolejek, mutexów, ISR ani peryferiów.
|
||
|
||
## Budowanie i weryfikacja
|
||
|
||
```sh
|
||
make task1
|
||
make check
|
||
make check-pair
|
||
```
|
||
|
||
`make check` uruchamia kompilację freestanding C11, test kontraktu kontekstu,
|
||
test obciążenia hosta, kontrolę ABI i symulator Hazard3. `make check-pair`
|
||
porównuje konfigurację i parametry doświadczenia z K02 FreeRTOS C++.
|
||
|
||
## Materiały
|
||
|
||
- plan: `doc/card-plan.md`;
|
||
- model A1–A8: `doc/task01-a1-a8-plan.md`;
|
||
- źródło karty: `json/card_source.json`;
|
||
- wynik HTML: `web/index.html`;
|
||
- wynik TeX: `doc/generated/main.tex`.
|