• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Модификация бинарника

AlexeyGR

New member
После редактирования бинарника прошивки в секции данных (замена 2-ух символов не влияющаю на выполнение кода) и заливки в модуль, последний отказывается работать.
С чем это связано?, неужели считается контрольная сумма (типа защиты)?
 

pvvx

Активный участник сообщества
После редактирования бинарника прошивки в секции данных (замена 2-ух символов не влияющаю на выполнение кода) и заливки в модуль, последний отказывается работать.
С чем это связано?, неужели считается контрольная сумма (типа защиты)?
Никакой контрольки там нет.
 

pvvx

Активный участник сообщества
Бинарник ESP_8266_v0.9.2.2 AT Firmware, заменил три символа ESP_%02X%02X%02X на AAA_%02X%02X%02X в итоге не отвечает на АТ команды.
Эта надпись находится в сегменте данных и грузится отдельно. Проверка есть только у первых, обычно 3-х кусков:
Segment 1: offset: 0x40100000, size: 26236
Segment 2: offset: 0x3ffe8000, size: 2744
Segment 3: offset: 0x3ffe8ac0, size: 5692

У них проверяется chksum:
load 0x40100000, len 26236, room 16
tail 12

chksum 0xa3
ho 0 tail 12 room 4
load 0x3ffe8000, len 2744, room 12
tail 12

chksum 0x18
ho 0 tail 12 room 4
load 0x3ffe8ac0, len 5692, room 12
tail 0

chksum 0x9d
csum 0x9d
Остальная, большая часть - код и данные кешируемых сегментов flash, проверок не имеют.
Вам повезло, что решили изменить имя WiFi, устанавливаемое по умолчанию и оно находиться в блоке, загружаемым 3-тим, как константы в RAM. :)

Самый простой метод, если меняете что-то в "ESP_8266_v0.9.2.2 AT Firmware.bin" до адреса 0x87ff - изменить и прошить. Потом запустить и посмотреть что напишет загрузчик (78400 baud) в последней строке "chksum 0xe6" - это значение и прописать в байт по адресу 0x87ff.
"chksum 0xe6" - это как раз "AAA_" и после загрузки наблюдаем:
AT+CWSAP?
+CWSAP:"AAA_9FC0BF","",1,0
OK
На другие прошивки это может не распространятся - там могут быть другие начальные загрузчики. Такие как boot_v1.1.bin или boot_v1.2.bin...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Корректное замечание), именно в сегменте (это не плоская модель памяти flat), большое спасибо за исчерпывающий ответ!
В SDK 0.9.5 такие переменные переехали в другую часть (в конец второго блока кодов, после них, ближе к концу flash) и там нет контрольки.
Все эти flat и сегменты чисто условно. Сегментами (кусками) грузит встроенный загрузчик в чипе (BootROM): ESP8266 Формат данных прошивки, протокол обмена
 
Последнее редактирование:
Сверху Снизу