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

bootloader для Arduino

enjoynering

Well-known member
Стандартное SDK от Espressif использует bootloader для загрузки и две области flash памяти для user кода. А как это происходит в Arduino? Использует ли Arduino Espressif-овский загрузчик? Спасибо.
 

Вложения

Последнее редактирование:

pvvx

Активный участник сообщества
Стандартное SDK от Espressif использует bootloader для загрузки и две области flash памяти для user кода. А как это происходит в Arduino? Использует ли Arduino Espressif-овский загрузчик? Спасибо.
Правильный вопрос - а нужен ли вообще дополнительный Espressif-овский загрузчик (boot_v1.2.bin, boot_v1.6.bin...) на платах и модулях пользователей?

Что разбивается на вопросы:

Какие функции, кроме уменьшения доступного пространства в Flash и увеличения времени старта системы он выполняет?

Когда вы прошиваете модуль, то программа должна знать какие опции для ROM-BIOS установить в заголовке для поддержки типа Flash на вашем модуле. Но программы, которые сделаны для Arduino и прочие прошивальщики не отличаются сообразительностью, что все данные они сами бы могли снять с самого модуля, если уж пытаются его прошить, указав пользователем только номер COM порта :) А аналогично и с дополнительными boot от Espressif – они исправляют ошибки самой же Espressif для поддержки других типов Flash, установленных в их dev-board, а не в ваш и передают информацию, которую вы же указали программе прошивальщика в часть второго, основного загрузчика самой SDK. Т.е. перекладывают установку известных вам параметров, которые вы потом можете получить (используя никчемные функции SDK) указанные на момент выставления их вами-же во время программирования. Это такой вид показа деятельности у Espressif, что они стараются и что-то делают, и, если разобраться глубже, то окажется что это не нужно никому, а только мешает, т.к. увеличивает размер кода SDK и время исполнения. Именно так и построен весь SDK от Espressif и их Arduino. В итоге пичкания Espressif своего SDK ненужными функциями для показа “деятельности” и имеет уже невозможность обновления flash по OTA c малыми размерами Flash.
И это только одна часть из множества веселых извращений у Espressif полученных по системе патча для патча из-за множественных начальных ошибок, допущенных в начальном проектировании всех их проектов (в самих чипах и особенно в ROM-BIOS коде).
По этой причине они и стесняются показывать исходники, т.к. там сплошной бардак, совершенно безграмотно писанный, с более 80% ошибок в самих алгоритмах... Коррекция которых осуществляется за счет пользователей. На вас у них и одна надежда - пришлите им правильно сформированный bootloader c нормальной функциональностью и программу программатора, которую они сами не смогли написать, а взяли стороннюю, от разобравшего их чип энтузиаста...:)
 
Последнее редактирование:

enjoynering

Well-known member
те по сути в ардуино bootloader выполняет функцию только за выбор Bootloader Modes (сотояние пинов GPIO0, 2, 15)? Все остальные его плюшки никем не используются? или он каждый раз перезаписывается Arduino IDE?
 
Последнее редактирование:

enjoynering

Well-known member
немножко покопался в хаосе документации и выудил интересную картинку. похоже что кажды раз при заливке скеча перезаливается boot. такое впечатление, что он интегрируется в скеч на стадии компиляции.

я так понял что область с 0x00000 и 0x01000 которая используеся в SDK для boot.bin и user.bin превращается в arduino в область для скеча.

и где-то между 0x01000 и 0xfe000 превращается в arduino в область для обновления кода по воздуху, OTA update. В SDK по адресу 0xfe000 пишется пустой blank.bin.

область 0xfc000 которая используеся в SDK для init.bin остается в arduino не изменной. в ней хранятся настоики WiFi Config SDK.
 

Вложения

  • Like
Реакции: kab
Сверху Снизу