Эталоны прошивок: карта и дисциплина работы
Эталоны прошивок (fw/)
Карта «файл → занятия → формат»
| Файл | Занятия | Формат по педдизайну | Ключевой навык |
|---|---|---|---|
fw01_i2c_es8311.c | 16 | worked example | I2C, write-verify, чтение даташита кодека (карточка 12) |
fw02_passthrough_dma.c | 17–19, 21 | worked example | SAI, DMA circular + double buffer, кэш H7, GPIO-профиль |
fw03_dsp_chain.c | 20, 22, 27 | worked example | биквады RBJ (с расчётом!), лимитер, пресеты без щелчка |
ir_tools.py | 23 | worked example (читается вместе) | деконволюция с регуляризацией, экспорт ядра |
fw04_fir_ir.c | 24 | worked example + измерение | цена O(N), таблица потолка прямого FIR |
fw05_partitioned_conv.c | 25 | completion problem, 7 дырок | партиционированная свёртка, сверка с эталоном |
fw05_answers.md | 25 | ключ наставника | выдаётся после письменной попытки |
Лестница самостоятельности внутри пакета повторяет SSDL фазы C: fw01–fw04 разобраны построчно (каждая строка отвечает «зачем»), fw05 отдаёт ученику семь ключевых решений, а «своё» — задания в хвосте каждого файла (они не декоративные: их результаты — артефакты рубежей 24, 25, 28).
Дисциплина работы (три правила)
Правило чтения
Эталон читается до клавиатуры: ученик проходит файл с карандашом и помечает каждую строку ✓ («понял») или ? («спросить»). Занятие начинается с «?»-строк — это и есть карта его границы понимания, точнее любого теста.
Правило переноса
Код не копируется в проект целиком: переносится по блокам, каждый блок запускается и проверяется прибором (методики DHO804). Скопировал всё разом и «оно работает» — не зачёт: на рубеже наставник откроет любую строку.
Правило эталона
Новый быстрый код всегда сверяется со старым медленным (fw05 против fw04 побитово). Это не учебная условность, а рабочая практика DSP-инженерии — проговорить прямо.
Сборка и честные оговорки
.dma_buffer создаются в CubeMX/линкер-скрипте ученика на занятиях — это осознанно, генерация проекта своими руками входит в цели. Точные значения регистров ES8311 в fw01 фиксируют порядок и назначение шагов; сверка битов с таблицами даташита вашей ревизии — обязательная активность занятия 16 (write-verify её принудит: несверенное значение упадёт громко и на конкретном шаге). CMSIS-DSP подключается в CubeIDE галочкой Software Packs → DSP.fw02.process_half → распаковка fw03 → биквад-EQ → fw05.pconv_process (или fw04 для короткой IR на U585) → лимитер fw03 → упаковка. Смена пресетов и IR — только на границе блока (см. комментарий в fw02.audio_loop).