• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Прошивка ESP32 по JTAG единым файлом.

oleg.boicenco

New member
Всем привет!
Стоит следующая задача. Необходимо зашить девайс с ESP32-WROOM-32D модулем на борту на производстве. Посредством JTAG. Необходимо использовать один BIN - файл, который "суммирован" из bootloader.bin, partitions_singleapp.bin и app.bin. Был успешно создан единый файл посредством функции CombineBin из утилиты FLASH DOWNLOAD TOOL V3.6.5. При "визуальном" осмотре файла ничего "необычного" не обнаружилось: с начала файла до смещения 0х1000 были 0xFF. Начиная с адреса 0x8000 расположилась partition_table и с адреса 0x10000 начиналась прикланой код. Как и положено "пустые места" в файле были заполненны 0xFF.
Логично ожидать, что необходимо запустить процедуру прошивки начиная с нуля. Т.е. команда для прошивки должна выглядеть так: "program_esp32 app.bin 0x0000 verify exit". Но не получилось! %)

OpenOCD (Open On-Chip Debugger v0.10.0-esp32-20190313 (2019-03-13-09:57)) выругался следующим образом:

Info : Configured 2 cores
esp32 interrupt mask on
Info : J-Link V10 compiled Jan 7 2020 16:51:47
Info : Hardware version: 10.10
Info : VTarget = 3.322 V
Info : clock speed 1000 kHz
Info : JTAG tap: esp32.cpu0 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
Info : JTAG tap: esp32.cpu1 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
Info : esp32: Debug controller 0 was reset (pwrstat=0x5F, after clear 0x0F).
Info : esp32: Core 0 was reset (pwrstat=0x5F, after clear 0x0F).
Info : Listening on port 3333 for gdb connections
Info : JTAG tap: esp32.cpu0 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
Info : JTAG tap: esp32.cpu1 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
Error: Exception reading epc6!

Info : Target halted. PRO_CPU: PC=0x00000000 (active) APP_CPU: PC=0x00000000
Info : esp32: Debug controller 0 was reset (pwrstat=0x5F, after clear 0x0F).
Info : esp32: Core 0 was reset (pwrstat=0x5F, after clear 0x0F).
Info : esp32: Debug controller 1 was reset (pwrstat=0x5F, after clear 0x5F).
Info : esp32: Core 1 was reset (pwrstat=0x5F, after clear 0x5F).
Info : Target halted. PRO_CPU: PC=0x40007BA1 (active) APP_CPU: PC=0x00000000
Info : esp32: Core 0 was reset (pwrstat=0x1F, after clear 0x0F).
Info : Target halted. PRO_CPU: PC=0x40000400 (active) APP_CPU: PC=0x40000400
** Programming Started **
auto erase enabled
Info : Target halted. PRO_CPU: PC=0x4009171A (active) APP_CPU: PC=0x40000400
Warn : Empty flash mapping!
Warn : Failed to get flash mappings (0)!
Info : Target halted. PRO_CPU: PC=0x4009171A (active) APP_CPU: PC=0x40000400
Info : Target halted. PRO_CPU: PC=0x4009171A (active) APP_CPU: PC=0x40000400
Info : Auto-detected flash size 4096 KB
Info : Using flash size 4096 KB
Error: Invalid offset!
Error: failed erasing sectors 0 to 110

** Programming Failed **
shutdown command invoked

Warn : Flash driver of esp32.flash does not support free_driver_priv()
Warn : Flash driver of irom does not support free_driver_priv()
Warn : Flash driver of drom does not support free_driver_priv()

Очевидно, что offset не понравился! А про failed erasing sectors 0 to 110 ничего не могу сказать.. Не знаю..

Прокомментируйте, пожалуйста, кто в теме! Может мы что-то делаем не так?
И еще хотелось бы узнать, был ли у кого опыт запуска в серийное производство девайсов с ESP32? Был бы интересен обмен опытом в этом вопросе(например тестирование радочастотных узлов, граничное сканирование и т.д.)!

Заранее благодарю!
С уважением, Олег.

PS Если понадобится более подробная инфа (например логи OpenOCD) - пишите, все выложу.. (не стал выкладывать сразу, т.к. возможно есть тривиальный ответ на данный вопрос)) )
 

oleg.boicenco

New member
Привет всем!
Проблема, описанная выше, решилась путем ручного редактирования бин-файла (были убраны 0xFF, которые вставляла функция CombineBin из утилиты FLASH DOWNLOAD TOOL V3.6.5 вплоть до адреса 0х1000 ). Далее удалось загрузить полученный бинарник по смещению 0х1000.
Может кто-то столкнется с данной проблемой.. Эта инфа для Вас, Господа! :)
Остается вопрос: есть ли народ, кто сталкивался с запуском изделий с ЕСП-шным "сердцем" в серию? Было бы интересно пообщаться!
 
Сверху Снизу