Add FreeRTOS heap4 intro card
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
# rv32i-freertos / heap4
|
||||
|
||||
Karta pracy 1/? z serii `rv32i-freertos`.
|
||||
|
||||
Temat: mechanika alokatora `heap_4.c` z FreeRTOS-a na małych przykładach
|
||||
uruchamianych w środowisku RV32I.
|
||||
|
||||
Ta karta jest pomostem po kartach C: używa wskaźników, struktur, listy
|
||||
jednokierunkowej, `static`, `typedef`, makr i arytmetyki adresów, ale nie
|
||||
wymaga jeszcze schedulera, tasków ani przerwań.
|
||||
|
||||
Kod w `src/tasks` jest dydaktycznym modelem zachowania `heap_4`, a nie kopią
|
||||
pliku upstream FreeRTOS.
|
||||
|
||||
## Taski
|
||||
|
||||
- `task01_heap_map.c` - mapa pojęć: sterta, blok, nagłówek bloku.
|
||||
- `task02_free_list.c` - lista wolnych bloków.
|
||||
- `task03_heap_init.c` - inicjalizacja sterty i wartownik końca listy.
|
||||
- `task04_alignment.c` - wyrównanie rozmiarów i adresów.
|
||||
- `task05_malloc_first_fit.c` - pierwszy pasujący wolny blok.
|
||||
- `task06_split_block.c` - podział większego bloku.
|
||||
- `task07_free_insert.c` - zwracanie bloku na listę wolnych.
|
||||
- `task08_coalescing.c` - scalanie sąsiednich wolnych bloków.
|
||||
- `task09_config_macros.c` - makra konfiguracyjne i warunkowy `printf`.
|
||||
- `task10_heap4_demo.c` - mini-demonstracja `malloc/free` bez pełnego RTOS-a.
|
||||
|
||||
Hostowe `printf` jest dostępne tylko przez `-DHOST_PRINTF=1`; RV32I zapisuje
|
||||
wyniki w globalnych zmiennych `volatile`.
|
||||
|
||||
## Budowanie
|
||||
|
||||
```bash
|
||||
RV_ENV_ROOT=~/dev/workspace/rv/tools/rv32i-hazard3-student-env make tasks
|
||||
make host
|
||||
```
|
||||
|
||||
## Praca przez rvctl
|
||||
|
||||
```bash
|
||||
./rvctl series cards fetch inf heap4
|
||||
./rvctl card use inf heap4
|
||||
./rvctl tasks list
|
||||
./rvctl debug rv32i 1
|
||||
```
|
||||
Reference in New Issue
Block a user