Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

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

Тема в разделе "Общие вопросы по esp8266", создана пользователем AlexeyGR, 7 фев 2015.

  1. AlexeyGR

    AlexeyGR Новичок

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

    pvvx Активный участник сообщества

    Сообщения:
    8.993
    Симпатии:
    1.302
    Никакой контрольки там нет.
     
  3. AlexeyGR

    AlexeyGR Новичок

    Сообщения:
    67
    Симпатии:
    0
    Бинарник ESP_8266_v0.9.2.2 AT Firmware, заменил три символа ESP_%02X%02X%02X на AAA_%02X%02X%02X в итоге не отвечает на АТ команды.
     
    Последнее редактирование: 7 фев 2015
  4. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.993
    Симпатии:
    1.302
    Эта надпись находится в сегменте данных и грузится отдельно. Проверка есть только у первых, обычно 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...
     
    Последнее редактирование: 7 фев 2015
    AlexeyGR нравится это.
  5. AlexeyGR

    AlexeyGR Новичок

    Сообщения:
    67
    Симпатии:
    0
    Корректное замечание), именно в сегменте (это не плоская модель памяти flat), большое спасибо за исчерпывающий ответ!
     
  6. pvvx

    pvvx Активный участник сообщества

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

Поделиться этой страницей