chore: preserve current FreeRTOS and C card updates

This commit is contained in:
user
2026-07-21 19:14:19 +02:00
parent 4785d506fc
commit 10a8be72e3
37 changed files with 2857 additions and 1571 deletions
+25 -1
View File
@@ -76,11 +76,29 @@ stemctl debug rp2350 freertos heap4 3 --device /dev/bus/usb/BBB/DDD
## Debugowanie Task 3
Automatyczny start: `heap4_fragmented_checkpoint`.
Automatyczny start: `heap4_reset_checkpoint`. Karta prowadzi po ośmiu
powtarzalnych stanach jednego procesu:
| Event | Symbol | Najważniejszy dowód Hazard3 |
|---|---|---|
| E01 | `heap4_reset_checkpoint` | `free=largest=4080`, 1 blok |
| E02 | `heap4_alloc_a_checkpoint` | A(24), `consumed=48`, `free=4032` |
| E03 | `heap4_alloc_b_checkpoint` | B(40), `consumed=64`, `free=3968` |
| E04 | `heap4_alloc_c_checkpoint` | C(16), `consumed=32`, `free=3936` |
| E05 | `heap4_free_a_checkpoint` | `free=3984`, 2 bloki |
| E06 | `heap4_fragmented_checkpoint` | `free=4016`, 2 bloki, `free>largest` |
| E07 | `heap4_coalesced_checkpoint` | `free=largest=4080`, 1 blok |
| E08 | `task03_debug_checkpoint` | OOM `NULL`, hook=1, asserts=0, PASS=1 |
`BlockLink_t` ma na RV32 8 B, ale port wymaga wyrównania 16 B, dlatego
`xHeapStructSize` wynosi 16 B. To rozróżnienie tłumaczy zużycie 48/64/32 B.
```gdb
p g_fragmented_stats
p g_final_stats
p g_a_consumed
p g_b_consumed
p g_c_consumed
p xFreeBytesRemaining
p xMinimumEverFreeBytesRemaining
p xStart
@@ -91,6 +109,12 @@ b pvPortMalloc
b vPortFree
```
Scalanie sprawdzamy z replay E06: zatrzymujemy się przed `vPortFree(g_b)`,
ustawiamy tymczasowy breakpoint na `prvInsertBlockIntoFreeList` i krokujemy.
Upstream V11.3.0 scala najpierw poprzedni/lewy, a potem następny/prawy blok.
Pełna macierz kroków diagramów jest w
[`doc/hazard3-iteration-plan.md`](doc/hazard3-iteration-plan.md).
W UI: Termdebug po lewej; źródło i listing po prawej; bash pod Neovimem.
`F5` continue, `F9` breakpoint, `F10` next, `F11` step, `Shift-F11`
finish, `F8` stepi, `:StudentStack`, `:StudentMemory`, `:StudentLst`.