4.5 KiB
4.5 KiB
K01 heap4 — punkt zatrzymania
Stan repozytorium
- Data:
2026-07-14. - Commit bazowy:
8aee0b104c4f6e6ffef119ab6f57a3e724144221. - Gałąź robocza:
work/list-first-rp2350-debug. - Zmienione źródła: brak.
- Zmieniona karta PDF: brak.
- Lokalny stan
.stem/: wygenerowany przez testystemctl, nie jest częścią karty. - Review Claude: nieukończony; dwie sesje CLI nie zwróciły wyniku i zostały zatrzymane.
Potwierdzone
make hostbuduje 10/10 programów.- Wszystkie programy hostowe uruchamiają się z kodem
0. make tasks RV_ENV_ROOT=...buduje 10/10 ELF dla RV32I.stemctl test native-amd64 freertos heap4 10przechodzi.- RP2350 Probe jest wykrywany bez
sudopo wejściu do grupyrpdebug. - OpenOCD wykrywa
rp2350.rv0irp2350.rv1. - Oba rdzenie raportują
XLEN=32. - Nie wykonano testu programu K01 na RTL Hazard3.
- Nie wgrano programu K01 na fizyczny RP2350.
Wyniki bazowe — host AMD64
| Task | Wynik |
|---|---|
| 01 | header=16 aligned=16 allocated=1 total=32 user=16 |
| 02 | free=136 largest=80 count=3 |
| 03 | offset=0 free=144 end_last=1 |
| 04 | r1=24 r9=32 r17=40 delta=7 |
| 05 | ok=1 allocated=120 remaining=0 |
| 06 | allocated=48 split=128 nodes=1 |
| 07 | order=1 count=3 total=120 |
| 08 | count=1 size=160 merged_right=1 |
| 09 | heap=256 adjusted=248 dynamic=1 host_trace=1 |
| 10 | ok=1 nodes=1 free=240 min=144 |
Braki P0
- Dodać
stem-card.yaml. - Obsłużyć targety:
native/native-amd64;hazard3-baremetal/hazard3-sim;rp2350-rv/ fizyczny Hazard3.
- Naprawić
stemctl test hazard3-sim freertos heap4 10.- Stan obecny:
Legacy Hazard3 card/task is unsupported.
- Stan obecny:
- Dodać asercje wyniku.
- Stan obecny: każdy
main()zwraca0niezależnie od wartościg_*.
- Stan obecny: każdy
- Dodać automatyczne porównanie wyników AMD64 i RV32.
- Dodać bezpieczne sprawdzanie przepełnienia rozmiaru żądania.
- Sprawdzić wyrównanie buforów używanych jako
HeapBlock. - Nie dereferencjonować wyniku alokacji przed sprawdzeniem
p != NULL.
Braki debug
- K10: dodać jawne checkpointy:
INIT;ALLOC_A;ALLOC_B;FREE_A;ALLOC_C;ALLOC_REJECTED;FREE_B;FREE_C;DONE.
- K10: zapisywać przy checkpointcie:
- numer zdarzenia;
- adres bloku;
- liczbę wolnych bloków;
- sumę wolnej pamięci;
- minimum wolnej pamięci;
- status
RUNNING/PASS/FAIL.
- Simulator:
- breakpoint na funkcji checkpointu;
- inspekcja listy i pamięci;
- bez obiecywania watchpointów — szybki stub obsługuje obecnie breakpointy wykonania.
- RP2350:
- OpenOCD
target/rp2350-riscv.cfg; - breakpoint
main; - sprzętowy watchpoint na numerze zdarzenia/statusie;
- porównanie adresów i wyników z symulatorem;
- Termdebug i DAP na tym samym ELF.
- OpenOCD
Braki materiału
- Zmniejszyć udział prozy.
- Zastąpić akapity:
- listami kontrolnymi;
- tabelami wartości;
- komendami do skopiowania;
- punktami zatrzymania GDB;
- kryteriami zaliczenia.
- Szablon każdego taska:
Cel— maksymalnie 3 punkty;Uruchom— komendy;Zatrzymaj— breakpoint/watchpoint;Obserwuj— symbole i pamięć;Oczekuj— wartości host/RV32;Zmień— jeden eksperyment;Zaliczenie— mierzalna checklista.
- Przenieść pełne listingi C/ASM do dodatku.
- Pierwsze strony PDF przeznaczyć na kartę prowadzącego i przebieg lekcji.
Kolejność wznowienia K01
- Zamknąć wymagania w bezpośrednim poprzedniku
inf/structures. - Dodać testy wyniku do K01.
- Dodać kontrakt
stem-card.yaml. - Uruchomić 10/10 tasków na Hazard3 RTL.
- Dodać checkpointy K10.
- Zbudować K10 dla
rp2350-rv. - Wgrać i debugować K10 przez JTAG.
- Przebudować README/PDF do formatu list-first.
- Wykonać końcowy review techniczny i dydaktyczny.
Bezpośredni poprzednik
- Seria:
inf. - Karta:
structures. - Repozytorium:
lab-rv32i-c-structures. - Przejście wymagane przed K01:
structitypedef;- struktura samoreferencyjna;
- pole
next; - przejście po liście;
- wstawianie elementu;
- wartownik;
sizeof, padding i wyrównanie na AMD64/RV32;- niezmienniki listy;
- obserwacja w GDB.