# 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`.