Skip to content
Эталоны прошивок: карта и дисциплина работы

Эталоны прошивок: карта и дисциплина работы

Эталоны прошивок (fw/)

Карта «файл → занятия → формат»

ФайлЗанятияФормат по педдизайнуКлючевой навык
fw01_i2c_es8311.c16worked exampleI2C, write-verify, чтение даташита кодека (карточка 12)
fw02_passthrough_dma.c17–19, 21worked exampleSAI, DMA circular + double buffer, кэш H7, GPIO-профиль
fw03_dsp_chain.c20, 22, 27worked exampleбиквады RBJ (с расчётом!), лимитер, пресеты без щелчка
ir_tools.py23worked example (читается вместе)деконволюция с регуляризацией, экспорт ядра
fw04_fir_ir.c24worked example + измерениецена O(N), таблица потолка прямого FIR
fw05_partitioned_conv.c25completion problem, 7 дырокпартиционированная свёртка, сверка с эталоном
fw05_answers.md25ключ наставникавыдаётся после письменной попытки

Лестница самостоятельности внутри пакета повторяет SSDL фазы C: fw01–fw04 разобраны построчно (каждая строка отвечает «зачем»), fw05 отдаёт ученику семь ключевых решений, а «своё» — задания в хвосте каждого файла (они не декоративные: их результаты — артефакты рубежей 24, 25, 28).

Дисциплина работы (три правила)

Правило чтения

Эталон читается до клавиатуры: ученик проходит файл с карандашом и помечает каждую строку ✓ («понял») или ? («спросить»). Занятие начинается с «?»-строк — это и есть карта его границы понимания, точнее любого теста.

Правило переноса

Код не копируется в проект целиком: переносится по блокам, каждый блок запускается и проверяется прибором (методики DHO804). Скопировал всё разом и «оно работает» — не зачёт: на рубеже наставник откроет любую строку.

Правило эталона

Новый быстрый код всегда сверяется со старым медленным (fw05 против fw04 побитово). Это не учебная условность, а рабочая практика DSP-инженерии — проговорить прямо.

Сборка и честные оговорки

Эталоны написаны под STM32 HAL (стиль CubeMX H743/F411) и не являются полным проектом: пины, хэндлы и линкер-секция .dma_buffer создаются в CubeMX/линкер-скрипте ученика на занятиях — это осознанно, генерация проекта своими руками входит в цели. Точные значения регистров ES8311 в fw01 фиксируют порядок и назначение шагов; сверка битов с таблицами даташита вашей ревизии — обязательная активность занятия 16 (write-verify её принудит: несверенное значение упадёт громко и на конкретном шаге). CMSIS-DSP подключается в CubeIDE галочкой Software Packs → DSP.
Порядок цепи в собранном виде (занятие 28): fw02.process_half → распаковка fw03 → биквад-EQ → fw05.pconv_process (или fw04 для короткой IR на U585) → лимитер fw03 → упаковка. Смена пресетов и IR — только на границе блока (см. комментарий в fw02.audio_loop).