ota_addr_in_flash - эта откуда берется?
RTL871x Flash Memory Map - первая позиция в секторе
[off]pvvx если я это поменяю у меня только скеч ота будет по другому работать? [/off]
Да. OTA.cpp - это только для "скетчей"
Там всё равно путаница с переписыванием "сигнатур" в заголовках и разному расчету "где находиться OTA". Тяжелый случай от Ameba. Имеющаяся там логика имеет ошибки и это не исправимо.
В своем SDK уже долепил boot-loader. Он пока поддерживает оф. версии, но логика выбора "прошивки по старту" немного другая:
1) Если нет назначенных пинов выбора загрузки, то пытается загрузить:
Основную, "первую", прошивку. Если её нет, то смотрит указатель на OTA, но считает что он указывает на "резервную прошивку" и грузит её, если она там есть
2) Если назначены пины выбора загрузки, то грузит прошивку от №
1 до №
4. Два назначенных пинов дают 2 бита, "1" + 2-х битное значение = номер прошивки.
Если прошивки с таким номером нет, то смотрит указатель на OTA, но считает что он указывает на "резервную прошивку" (№
0) и грузит её, если она там есть
Сигнатуры, которые переписывает Ameba Arduino не смотрит, т.е. проверяет их наличие и валидность, но на отметку что это помеченная (зачем-то, для кого-то в Ameba, чтобы возникали непреодолимые варианты переключения пинами по их логике) не смотрит.
Скорее всего он (новый boot-loader) скоро переедет в RtlDuino.
Прошивки теперь подписываются именами, которые можно увидеть в логе загрузки.
Ранее там вписывалась никчемная надпись "Customer Signature-modelxxx" (32 символа).
Кроме надписи у каждого заголовка прошивки есть номер версии, подверсии и т.д. - с десяток параметров, которые прописываются всегда одним и тем-же... Пока не задействовано.
Код:
=========================================================
ROM Version: 0.3
Build ToolChain Version: gcc version 4.8.3 (Realtek ASDK-4.8.3p1 Build 2003)
=========================================================
Check boot type form eFuse
SPI Initial
Image1 length: 0x201c, Image Addr: 0x10000bc8
Image1 Validate OK, Going jump to Image1
===== Enter FLASH-Boot ====
CPU CLK: 83333333 Hz, SOC FUNC EN: 0x11113
Selected Image 1.
Load Flash seg0: 0x0000b010 -> SRAM: 0x10006000, size: 297868
Img Sign: RTKWin, Go @ 0x1000607d
===== Enter Image: MP3 Stereo ====
WdgPeriod = 10000 ms
CLK CPU 83333333 Hz
RAM heap 2217456 bytes
TCM heap 64768 bytes
...
===== Enter SRAM-Boot 1 ==== - указывает, что грузимся с RAM, по выбору процедуры загрузки №1. (Их 4 варианта - всё описано где-то, про загрузку)...
===== Enter FLASH-Boot ==== - указывает, что грузимся с flash.
Selected Image 1 - пинами выбрана прошивка №1.
===== Enter Image: MP3 Stereo ====
Причина такого бардака - на модуле RTL8711AM в flash на 512 МБайт лезет где-то 2 тысячи вариантов прошивок, а как выбрать какую грузить - ?