Document FreeRTOS Book v1.1.0 mapping

This commit is contained in:
mpabi
2026-07-14 18:55:20 +02:00
parent ef1854cfa0
commit 49cabf2077
2 changed files with 35 additions and 3 deletions
+19 -1
View File
@@ -1,6 +1,6 @@
# rv32i-freertos / heap4 # rv32i-freertos / heap4
Karta pracy 1/? z serii `rv32i-freertos`. Karta pracy `01/14` z serii `rv32i-freertos`; jest opcjonalnym fundamentem L1.
Temat: mechanika alokatora `heap_4.c` z FreeRTOS-a na małych przykładach Temat: mechanika alokatora `heap_4.c` z FreeRTOS-a na małych przykładach
uruchamianych w środowisku RV32I. uruchamianych w środowisku RV32I.
@@ -38,6 +38,24 @@ kod pomocniczy i pliki danego zadania.
Uczeń nie commituje bezpośrednio do `tasks/*`. W repozytorium klasy tworzy Uczeń nie commituje bezpośrednio do `tasks/*`. W repozytorium klasy tworzy
gałąź pochodną, na przykład `students/u01/tasks/05-malloc-first-fit`. gałąź pochodną, na przykład `students/u01/tasks/05-malloc-first-fit`.
## Powiązanie z FreeRTOS Book v1.1.0
To jest opcjonalna karta `K01` z
[mapy serii](../README.md). Jej źródłem pojęciowym jest rozdział 3 książki
*Mastering the FreeRTOS Real Time Kernel*, przede wszystkim sekcja 3.2.4 o
`heap_4` oraz rysunki 3.13.4. Rozdział o heapie nie ma numerowanego programu
z zestawu `Example001``Example025`, dlatego karta rozkłada mechanikę
alokatora na własne, krótsze eksperymenty:
- Taski 0103 odtwarzają mapę bloku, wolną listę i inicjalizację heapu;
- Taski 0408 izolują wyrównanie, first-fit, podział, wstawianie i scalanie;
- Task 09 łączy konfigurację z sekcjami 3.1.33.1.5;
- Task 10 składa te elementy w jeden model zachowania `heap_4`.
Karta nie jest kopią upstreamowego `heap_4.c` ani listingów książki. Jest
modelem dydaktycznym, po którym karta `K02` przechodzi na prawdziwy plik
`portable/MemMang/heap_4.c` z FreeRTOS V11.3.0.
## Budowanie ## Budowanie
```bash ```bash
+16 -2
View File
@@ -23,7 +23,7 @@
\newcommand{\CardArea}{inf} \newcommand{\CardArea}{inf}
\newcommand{\CardSeries}{rv32i-freertos} \newcommand{\CardSeries}{rv32i-freertos}
\newcommand{\CardNumber}{01} \newcommand{\CardNumber}{01}
\newcommand{\CardCount}{??} \newcommand{\CardCount}{14}
\newcommand{\CardSlug}{heap4} \newcommand{\CardSlug}{heap4}
\newcommand{\CardVersion}{v0.1} \newcommand{\CardVersion}{v0.1}
\newcommand{\DocumentKey}{\PublisherDomain/\CardArea/\CardSeries/\CardNumber/\CardSlug/\CardVersion} \newcommand{\DocumentKey}{\PublisherDomain/\CardArea/\CardSeries/\CardNumber/\CardSlug/\CardVersion}
@@ -53,7 +53,7 @@ Project: & FreeRTOS: \texttt{heap\_4} \\
Subject: & Informatyka \\ Subject: & Informatyka \\
Level: & 1, Zakres Podstawowy, PP \\ Level: & 1, Zakres Podstawowy, PP \\
Topic: & dynamiczna alokacja pamięci, lista wolnych bloków, scalanie bloków \\ Topic: & dynamiczna alokacja pamięci, lista wolnych bloków, scalanie bloków \\
Revision date: & 02.05.2026 \\ Revision date: & 14.07.2026 \\
Status: & Draft \\ Status: & Draft \\
Card in series: & \small\texttt{\CardNumber/\CardCount} \\ Card in series: & \small\texttt{\CardNumber/\CardCount} \\
Card version: & \small\texttt{\CardVersion} \\ Card version: & \small\texttt{\CardVersion} \\
@@ -105,6 +105,20 @@ statycznego bufora do sterty zarządzanej przez algorytm.
Listingi C i ASM mają numerowane linie. Opisy w sekcjach tasków odnoszą się Listingi C i ASM mają numerowane linie. Opisy w sekcjach tasków odnoszą się
do numerów widocznych po lewej stronie listingów C. do numerów widocznych po lewej stronie listingów C.
\subsection{Powiązanie z FreeRTOS Book v1.1.0}
Karta K01 odpowiada rozdziałowi 3 książki \emph{Mastering the FreeRTOS Real
Time Kernel}, przede wszystkim sekcji 3.2.4 o \texttt{heap\_4} oraz rysunkom
3.1--3.4. Ten rozdział nie ma programu z numerowanego zestawu
\texttt{Example001}--\texttt{Example025}. Dlatego Taski 01--08 są krótkimi,
własnymi eksperymentami izolującymi kolejne elementy algorytmu, a Task 10
składa je w jeden model.
Nie kopiujemy listingu upstream ani projektu Win32/MSVC. Ta karta służy do
zrozumienia mechaniki; karta K02 przechodzi na niezmodyfikowany
\texttt{portable/MemMang/heap\_4.c} z FreeRTOS V11.3.0. Pełna mapa książki,
lekcji i kart znajduje się w pliku \texttt{series/inf/README.md}.
\lstinputlisting[language=C,caption={Wspólny nagłówek dla karty \texttt{heap\_4}},label={lst:common-h}]{../src/tasks/heap4_common.h} \lstinputlisting[language=C,caption={Wspólny nagłówek dla karty \texttt{heap\_4}},label={lst:common-h}]{../src/tasks/heap4_common.h}
\subsection{\texttt{static inline} w nagłówku} \subsection{\texttt{static inline} w nagłówku}