From 49cabf2077ab9ccf74190c56c21af0df033d7624 Mon Sep 17 00:00:00 2001 From: mpabi Date: Tue, 14 Jul 2026 18:55:20 +0200 Subject: [PATCH] Document FreeRTOS Book v1.1.0 mapping --- README.md | 20 +++++++++++++++++++- doc/main.tex | 18 ++++++++++++++++-- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 60f5c9e..bb10b1e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # 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 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 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.1–3.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 01–03 odtwarzają mapę bloku, wolną listę i inicjalizację heapu; +- Taski 04–08 izolują wyrównanie, first-fit, podział, wstawianie i scalanie; +- Task 09 łączy konfigurację z sekcjami 3.1.3–3.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 ```bash diff --git a/doc/main.tex b/doc/main.tex index d097b8a..074d059 100644 --- a/doc/main.tex +++ b/doc/main.tex @@ -23,7 +23,7 @@ \newcommand{\CardArea}{inf} \newcommand{\CardSeries}{rv32i-freertos} \newcommand{\CardNumber}{01} -\newcommand{\CardCount}{??} +\newcommand{\CardCount}{14} \newcommand{\CardSlug}{heap4} \newcommand{\CardVersion}{v0.1} \newcommand{\DocumentKey}{\PublisherDomain/\CardArea/\CardSeries/\CardNumber/\CardSlug/\CardVersion} @@ -53,7 +53,7 @@ Project: & FreeRTOS: \texttt{heap\_4} \\ Subject: & Informatyka \\ Level: & 1, Zakres Podstawowy, PP \\ Topic: & dynamiczna alokacja pamięci, lista wolnych bloków, scalanie bloków \\ -Revision date: & 02.05.2026 \\ +Revision date: & 14.07.2026 \\ Status: & Draft \\ Card in series: & \small\texttt{\CardNumber/\CardCount} \\ 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ę 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} \subsection{\texttt{static inline} w nagłówku}