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;
  • E01E12 są deterministycznymi punktami replay dla Neovima, GDB i Hazard3.

Karta nie zawiera C++, wrappera, kolejek, mutexów, ISR ani peryferiów.

Budowanie i weryfikacja

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 A1A8: 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.
S
Description
FC02 — First Task, TCB and Task Stack
Readme 900 KiB
Languages
C 62.9%
Makefile 16.8%
Shell 15.8%
Assembly 3.1%
HTML 1.4%