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

Решено Настроить прошивку с АТ на 40 МГц кварц

krdmitry

New member
Друзья, всем доброго времени суток!

Волей случая в руки попали две оригинальных отладочных платы ESP, одна старая - синяя, вторая новая, белая. Со старой все ОК, заработала сразу. А вот с новой казус вышел: попробовал ее обновить до стека 1.0.0 и получил "кирпич". Вернее, полукирпич: бутлоадер работает нормально, но после старта user-прошивки последняя начинает сыпать мусор в порт.

Предполагаю, дело в том, что на новой плате стоит кварц 40 МГц, и очень похоже на то, что "стоковый" вариант из SDK рассчитан на 26 МГц, откуда и результат. Обновления до более старых версий прошивок также ничего не дали...

Вопрос: как можно указать прошивке, что она работает на плате с 40 МГц тактированием?
Пробовал установить Crystal Freq на 40М в программе FLASH DOWNLOAD TOOLS, но это не дало никакого результата. Что делать?
 

Victor

Administrator
Команда форума
Подключите к терминалу на скорости 74880, посмотрите, что там загрузчик пишет.
 

krdmitry

New member
Виктор, там дело не в этом. Похоже, что стандартный user1.bin, который китайцы публикуют в составе SDK, рассчитан на кварц 26 МГц. И не понятно, как его перенастроить на 40МГц?
Попробовал перепаять кварц с 40 на 26 МГц, теперь прошивка стартует нф 115200, а бутлоадер, соответственно, теперь на 74880.
Вопрос: где указывается тип кварца? По логике, либо в теле самой прошивки, либо в файле esp_init_default.bin. Нет ли у кого описания формата этого файла?
 

JustACat

Moderator
Команда форума
krdmitry, а вы не пробовали покопаться в исходниках AT прошивки?
Открыть файл esp_iot_sdk_v1.0.0_15_03_20.zip - там examples - at - и там поизучать, я вот вижу там даже в Readme есть какие-то упоминания про скорость (сильно не вчитывался, так что не утверждаю).
Может там что-то найдется и проще будет самостоятельно подправить AT прошивку и собрать ее?

Notice: AT added some functions so it's larger than before, if you want to compile it, please change the correspondence ld file, for example "eagle.app.v6.new.512.app1.ld"(compile for 512KB flash user1.bin with new boot), "irom0_0_seg : org = 0x40201010, len = 0x2B000",change "len = 0x2B000" to be "len = 0x31000"

1Ўўcompile options

(1) COMPILE
Possible value: gcc
Default value:
If not set, use xt-xcc by default.

(2) BOOT
Possible value: none/old/new
none: no need boot
old: use boot_v1.1
new: use boot_v1.2
Default value: none

(3) APP
Possible value: 0/1/2
0: original mode, generate eagle.app.v6.flash.bin and eagle.app.v6.irom0text.bin
1: generate user1
2: generate user2
Default value: 0

(3) SPI_SPEED
Possible value: 20/26.7/40/80
Default value: 40


(4) SPI_MODE
Possible value: QIO/QOUT/DIO/DOUT
Default value: QIO

(4) SPI_SIZE
Possible value: 256/512/1024/2048/4096
Default value: 512

For example:
make COMPILE=gcc BOOT=new APP=1 SPI_SPEED=40 SPI_MODE=QIO SPI_SIZE=512

2ЎўYou can also use gen_misc to make and generate specific bin you needed.
Linux: ./gen_misc.sh
Windows: gen_misc.bat
Follow the tips and steps.
 

Victor

Administrator
Команда форума
Виктор, там дело не в этом.
просто перед текстом "jump to user..." загрузчик (или AT прошивка - тут точно не знаю) пишет частоту, вот и предлагаю сверить то, что он ожидает и то, что есть по факту. Это поможет разобраться.
 

krdmitry

New member
JustACat, посмотрел примеры. Там только функции обновления ПО по воздуху. Позабавила строчка:
" * Copyright 2015-2018 Espressif Systems (Wuxi) ". Привет из будущего? :)
Вообще в *.c, *.h файлах нигде константы с "26" или "40" внутри SDK не нашлись....

Виктор, в блоке "jump to run user1" сообщается только частота SPI - 40 МГц.
 

JustACat

Moderator
Команда форума
krdmitry, ну а то, что в readme описано - не то? Там как раз что-то про 26 с копейками и про 40...
А, ну да, это и есть частота SPI... Наверное - не то :(
 

Victor

Administrator
Команда форума
попробовал ее обновить до стека 1.0.0 и получил "кирпич"
может быть дело не в железе, а в прошивке, если прошивали оригинальными файлами из SDK 1.0.0 "по кусочкам"
В этом релизе, кроме загрузчика и самой прошивки обязательно нужно шить
blank.bin 0x3e000 & 0x7e000
по двум адресам (в предыдущих версия был только один адрес)
0x3e000 - master_device_key для обновления через облако Espressif. Если там остался ключ от старой прошивки (AI-THINKER обычно), а прошили вы только user1 без user2, то
есть вероятность, что загрузчик не находит user2, думает что вы пытались обновится через облако но неудачно, загрузчик считывает настройки WiFi из 0x7e000, а там пусто и у него едет крыша.
Косвенно эту идею также подтверждает то, что на некоторых прошивках после попытки обновиться из облака заканчивалось тоже мусором на порту.
Попробуйте прошить нашу прошивку (она в точности как оригинальная, только все "пустоты" между кусочками заполнены FF) AT v0.22 SDK 1.0.0 20.03.2015 загрузчик v1.2
 

krdmitry

New member
Виктор, да, все верно, blank зашиваю по двум адресам - как и сказано в esp_iot_sdk_v1.0.0\bin\at\readme.txt. Первый раз попробовал зашить указанную Вами прошивку с сайта, с этого-то проблемы и начались :)
Ранее на плате (а это оригинальная отладочная плата от Espressif новой генерации, "белая" с IR детектором), была зашита прошивка 0.9.6(b1), которая в упор не хотела обновляться через AT+CIUPDATE.
 

Victor

Administrator
Команда форума
не дает мне ваш случай покоя...
может в новой версии DevBoard как-то по-другому перемычки стоят на MTDO/GPIO15
и вы не с той памяти грузитесь?
boot2.png
 

pvvx

Активный участник сообщества
Подключите к терминалу на скорости 74880, посмотрите, что там загрузчик пишет.
Это при старте ROM-BIOS включается 74880. И ROM-BIOS не смотрит на заголовок FLASH, какие скорости там указаны.
Стартовый код SDK тоже давался - там тоже не смотрится какая частота в заголовке FLASH, выставленная в программаторе. Всё везде жестко привязано на 26MHz.
И 74880*40/26 = 115200 :)
 

krdmitry

New member
Всем доброго дня.
Проблема решилась повторным скачиванием утилиты перепрошивки Flash Download Tools с BBS производителя чипов.
Уж не знаю, почему, но имевшаяся у меня версия, тоже 0.9.3.1, не хотела выставлять 40 МГц. А вновь скачанная захотела!
В общем, удалось вернуть кварц на 40 МГц, и снова все отлично. Но осадок, как в известном анекдоте, остался :)
Удивляет, что "народные" средства для обновления ПО вроде того же NodeMCU, радующего глаз приятным интерфейсом, не имеют возможности выбрать частоту кварца. Притом, что сам Espressif рекомендует в новых разработках ставить 40 МГц (зачем - не спрашивайте, не знаю).
 

mcmega

Member
Подскажите, а как прошить 2 бинарника во флешь ESP8285 из Flash Download Tools?

У меня 2 файла, 1 - прошивка (сделана в Ардуино), 2-ой - файловая система.
По структуре памяти должно быть 1Mbyte из него 128KByte для файловой системы.
Пробовал разные варианты, ничего не получается.
Пробовал сначала полностью очищать память и писать все файлы (boot_v1.7.bin, esp_init_data_default.bin, файлы прошивок), пробовал писать только прошивку и файловую систему, но не получается, модуль не запускается.
 

CodeNameHawk

Moderator
Команда форума
Пробовал сначала полностью очищать память и писать все файлы (boot_v1.7.bin, esp_init_data_default.bin, файлы прошивок)
"Между первой и второй промежуток не большой"
Заливаете файлы, кроме ваших, если правильно залили - работает АТ прошивка.
Тут засада взять правильные файлы и записать по нужному адресу.

Если работает АТ прошивка - заливаете ваши файлы напрямую из ардуиноиде, правильно установив тип есп и ее размер.

Подскажите, а как прошить 2 бинарника во флешь ESP8285 из Flash Download Tools?
Указываете файл и адрес для него, также для другого - заливаете.
Есп при этом должна быть "живой", например залита АТ прошивка.
 
Сверху Снизу