chore: preserve current FreeRTOS and C card updates

This commit is contained in:
2026-07-21 19:13:55 +02:00
parent e3420748ee
commit b7c3747e2c
6 changed files with 153 additions and 83 deletions
+6 -6
View File
@@ -314,7 +314,7 @@
},
{
"title": "A6 — State", "order": 50, "content_kind": "prose", "asset_page_mode": "one-per-page",
"content_tex": "Statyczny lifetime context, diagnostyczny trace_state i rzeczywiste stany taska kernela to trzy różne osie.",
"content_tex": "Statyczny lifetime context, diagnostyczny \\texttt{trace\\_state} i rzeczywiste stany taska kernela to trzy różne osie.",
"assets": [{
"path": "assets/a6-state.png", "html_path": "assets/a6-state.svg", "source_path": "assets/a6-state.puml",
"caption": "A6 STATE — korelacja stanu kontekstu z Ready, Running, time slice i Deleted.", "label": "fig:a6-state", "alt": "Oddzielne tory stanu diagnostycznego i stanu FreeRTOS.", "kind": "diagram", "width": 1.0,
@@ -370,17 +370,17 @@
"task01": {
"title": "Pierwszy task FreeRTOS — callback, context, TCB i stos",
"uuid": "a2538a1a-3c37-4c14-a6ea-db5aba8fd038",
"prompt_tex": "Przejdź po aktywnych perspektywach A1, A2, A3, A5, A6 i A7. Dla kroków RUN użyj Enter lub F2 i udowodnij w Hazard3/GDB przepływ \\texttt{xTaskCreate -> sum_task_entry -> WorkerContext -> vTaskDelete}.",
"prompt_tex": "Przejdź po aktywnych perspektywach A1, A2, A3, A5, A6 i A7. Dla kroków RUN użyj Enter lub F2 i udowodnij w Hazard3/GDB przepływ \\texttt{xTaskCreate -> sum\\_task\\_entry -> WorkerContext -> vTaskDelete}.",
"criterion": "Program wypisuje PASS; oba wyniki wynoszą 200010000; E06 pokazuje a0=&workerA; trace zawiera A-B-A; context, TCB i stack są rozdzielone.",
"conclusion_tex": "Surowe API C przekazuje zachowanie i dane oddzielnie: \\texttt{TaskFunction_t} wybiera kod, a \\texttt{void*} niesie adres jawnego kontekstu. Scheduler, TCB i stos pozostają własnością FreeRTOS.",
"conclusion_tex": "Surowe API C przekazuje zachowanie i dane oddzielnie: \\texttt{TaskFunction\\_t} wybiera kod, a \\texttt{void*} niesie adres jawnego kontekstu. Scheduler, TCB i stos pozostają własnością FreeRTOS.",
"flow": [
{"kind": "block", "id": "c-model", "title": "A — model C i granica ABI", "content_tex": "Najpierw czytaj A1--A3 bez uruchamiania programu.", "steps": [
{"id": "read-context", "title": "Odczytaj WorkerContext.", "content_tex": "Rozróżnij static context, adres pola handle, wartość handle, TCB i stack."},
{"id": "prove-c-abi", "title": "Udowodnij callback ABI.", "content_tex": "Na E03 zbadaj argumenty xTaskCreate, a na E06 rejestr a0 przed prologiem sum_task_entry."}
{"id": "prove-c-abi", "title": "Udowodnij callback ABI.", "content_tex": "Na E03 zbadaj argumenty \\texttt{xTaskCreate}, a na E06 rejestr \\texttt{a0} przed prologiem \\texttt{sum\\_task\\_entry}."}
]},
{"kind": "block", "id": "runtime-trace", "title": "B — sekwencja i scheduler", "content_tex": "Każdy RUN replay zaczyna się od czystej RAM.", "steps": [
{"id": "follow-context", "title": "Śledź jeden adres context.", "content_tex": "Porównaj &g_worker_a w main, xTaskCreate i sum_task_entry."},
{"id": "follow-stack", "title": "Śledź osobny stos.", "content_tex": "Potwierdź stack_low <= sp <= stack_high i created_handle == tcb_address."},
{"id": "follow-context", "title": "Śledź jeden adres context.", "content_tex": "Porównaj \\texttt{\\&g\\_worker\\_a} w \\texttt{main}, \\texttt{xTaskCreate} i \\texttt{sum\\_task\\_entry}."},
{"id": "follow-stack", "title": "Śledź osobny stos.", "content_tex": "Potwierdź \\texttt{stack\\_low <= sp <= stack\\_high} i \\texttt{created\\_handle == tcb\\_address}."},
{"id": "follow-scheduler", "title": "Śledź A-B-A.", "content_tex": "Zapisz triplet workerów, ticki i liczbę obserwowanych zmian."}
]},
{"kind": "exercise", "id": "raw-c-debug-report", "title": "Ćwiczenie — timestampowany ślad taska C", "prompt_tex": "Wybierz E01, E03, E06, E08, E10 i E12. Dla każdego zapisz timestamp, PC, SP, adres context, wartość handle/TCB i stan. Wyjaśnij, których adresów po E11 nie wolno dereferencjonować.", "evidence_tex": "Timestampowane snapshoty Hazard3/GDB powiązane z kotwami UML oraz końcowy PASS.", "criterion": "Raport zachowuje tożsamość context, rozdziela TCB od stack i nie myli trace_state z eTaskState.", "based_on": ["c-model", "runtime-trace"]}