diff --git a/docs/fm100b-firmware-re.md b/docs/fm100b-firmware-re.md index 8d261d7..0d80a87 100644 --- a/docs/fm100b-firmware-re.md +++ b/docs/fm100b-firmware-re.md @@ -43,6 +43,27 @@ AMBE выполняется на отдельном DSP-ядре/хардвар - РЕАЛЬНО моддится: параметры WebRTC (агрессивность шумодава/AGC, качество звука), кодек-гейны (`ATC_MICCodecGainSet`/`ATC_SPKCodecGainSet`), DTMF, логика управления DMR, NV-калибровка (EasyFlash). +## ⭐ Таблица разделов flash модуля (найдена @0x15e828) +``` +Bootloader | Application | RF Firmware | NET info +``` +Чип на базе **Beken SDK** (API `bk_gpio_*`, `bk_pwm_*`, efuse-cal, RTOS + RT-Thread FAL/EasyFlash). +Разбивка flash модуля: +- **Bootloader** — загрузчик (в т.ч. режим «Обновление DMR чипа»). +- **Application** — ЭТО наш `FM100B_*.bin` (управление + WebRTC-аудио + интерфейс к AMBE). +- **RF Firmware** — ОТДЕЛЬНЫЙ раздел: DMR-baseband / модем / **предположительно AMBE-DSP**. У нас его НЕТ. +- **NET info** — NV-настройки (**EasyFlash ENV** — то, что нужно для доступа к хранимым параметрам). + +Плюс сырые cal-таблицы во flash: `manual_cal_write_flash`, `save txpwr tab to flash` (темп-компенсация +мощности), efuse-cal ADC/батареи (`efuse get cal`, `CodeOffset`, `dvbatref`), кодек `set dac vol dig/ana`. + +## Как получить NV/RF Firmware: ДАМП flash модуля +Ни NV, ни RF Firmware в образе Application нет — нужен **дамп SPI-flash модуля** (все разделы). +Путь: протокол загрузчика/апдейтера (режим «Обновление DMR чипа» активен) — у него есть чтение flash. +Реверснуть команду чтения из `RT-4D Upgrade V3_25_260205.exe` (как сделали с тюнером) → безопасно +снять полный дамп → распарсить EasyFlash ENV (NET info) + разобрать RF Firmware (vocoder/DMR). +Это разблокирует СРАЗУ: NV-настройки, калибровку, и сам DMR-baseband для реверса. + ## Реальные следующие шаги (реверс+правка+тест) 1. **API-поверхность:** извлечь полный список ATC_*/SP*-команд (это протокол 0x68 между AT32 и модулем) — карта того, чем вообще можно управлять. Уже частично в docs/fm100b-commands.md.