Files
lab-rv32i-freertos-heap4/doc/stan-prac.md
T

2.0 KiB
Raw Blame History

FC01 heap_4 — stan weryfikacji

Stan na 2026-07-20

Karta ma jeden centralny eksperyment na niezmodyfikowanym heap_4.c z FreeRTOS-Kernel V11.3.0. Przebieg jest podzielony na osiem deterministycznych checkpointów E01E08 i działa na RV32I/Hazard3.

Potwierdzone na Hazard3

Event Stan Dowód
E01 arena po inicjalizacji free=largest=4080, 1 blok
E02 alloc A(24) zużyto 48, zostało 4032
E03 alloc B(40) zużyto 64, zostało 3968
E04 alloc C(16) zużyto 32, zostało 3936
E05 free(A) 3984, 2 wolne bloki
E06 free(C) 4016, 2 bloki, free > largest
E07 free(B) free=largest=4080, 1 blok
E08 kontrolowany OOM NULL, hook=1, asserts=0, PASS=1

Na RV32 sizeof(BlockLink_t) == 8, ale portBYTE_ALIGNMENT == 16, więc prywatne xHeapStructSize == 16. To wyjaśnia zużycie 48/64/32 bajtów.

Diagramy i iteracja

  • A1 CONTEXT: pięć kroków CODE — granice odpowiedzialności.
  • A2 STRUCTURE: jeden krok CODE i pięć kroków RUN — nagłówek, split, lista adresowa oraz scalenie lewego i prawego sąsiada.
  • A5 FLOW: osiem kroków RUN mapowanych 1:1 na E01E08.
  • A6 STATE: pięć reprezentatywnych stanów E01, E04, E06, E07 i E08.
  • A7 RUNTIME: tożsamość źródła/ELF, pamięć ucHeap i końcowy werdykt.
  • A3, A4 i A8 są jawnie pominięte, ponieważ dublowałyby A2/A5.

Szczegółowa kolejność komend, obserwacji i kryteriów znajduje się w hazard3-iteration-plan.md.

Wykonane testy

  • testy hostowe Task 13;
  • budowa RV32I i kontrola symboli ELF;
  • Hazard3 RTL: zakończenie kodem 0 po 27308 cyklach;
  • osiem checkpointów obecnych w ELF;
  • walidacja JSON i odwołań code_ref/snapshot_ref;
  • kontrola PlantUML, SVG, HTML, TeX i siedmiostronicowego PDF;
  • TypeScript/React typecheck generatora.

Pozostaje poza zakresem tej iteracji

  • próba na fizycznym RP2350/Pico 2 W;
  • commit i publikacja — wymagają osobnego polecenia.