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

Разработка ‘библиотеки’ малого webсервера на esp8266.

pvvx

Активный участник сообщества
А в чем принципиальная разница между SDK 1.4.0 (у меня сейчас используется) и современной 1.5.2 ? Какая стабильнее? стоит ли перейти на 1.5.2 ?
Уже описывалось.
Чтоб модуль программировать. Посмотрите на схему Schematics for ESP-12E DevKit | User Manual for ESP-12E DevKit Видите куда идет RTC CP2102. Если у VCP CP2102 перевести RTC в активное состояние то формируется сигнал eRST. hercules_3-2-8 это позволяет.
Я думал GPIO15 припаяно к RESET ESP8266. :)
Это влияет на что-то кроме красоты? Т.е. "гадость" выше является штатной. Но почему она не детерминирована?
Что за гадость?
-------
Доделал "ход конем" при перезагрузке когда выставлен на GPIO2 уровень ноль (GPIO0 = "0", GPIO1 = "1", GPIO2 = "0" (boot mode: ( 2,x)) (Ещё одна хитрая опция так и не доделана...).
esp8266web/app_main.c at master · pvvx/esp8266web · GitHub
А то надоел поток "протектед" сообщений при перезагрузке при опущенном GPIO2
Теперь при первой загрузке (GPIO2 обязательно должен быть в "1") штатно пишет:
Код:
 ets Jan  8 2013,rst cause:2, boot mode:(3,7)

load 0x40100000, len 92, room 16
tail 12
chksum 0x85
csum 0x85
А если потом замкнуть через резистор GPIO2 на GND и пересбросить ESP8266, то:
Код:
 ets Jan  8 2013,rst cause:2, boot mode:(2,0)

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

PycLan

New member
Но абракадабра то вылезает. Значит по какой-то причине не читается flash. Данное сообщение выводится по копированию из кеша на Flash строки в RAM, а наблюдаем не строку, а абракадабру. И таких неверных чтений в логе несколько. Причин тоже может быть несколько. Наперво надо проверить контакты с flash, питание и не подключено ли чего лишнего к шине flash. Пробовать читать flash в файл и сравнивать.
Доброе утро.
Расказываю предисторию.
Вечером не выключая железки, залил последнюю версию web страницы.
Проверил, что все работает как нужно и выключил. Утром, как уже писал, включаю и "Ограниченный доступ".
Но если оставить так висеть с ограниченным доступом, то через некоторое время, подключение становится в "Подключенно" и все пашет.
При этом заливка разных "фулфлаш" не помогала, но при этом не менялся сам WEBFiles.bin.
Сегодня утром, по совету pvvx считать флаш, я просто перезалил WEBFiles.bin и все стало в норму.
Как все намекали на INI и я думаю, что проблема была в "битом" файле init.ini и приводило к "Ограниченный доступ",
после неудачных попыток считать из него данные, ESP инилась по внутриним параметрам, что в итоге приводило к "Подключенно".
 

vad7

Active member
У меня они хорошо работают, те которые на этой плате:
У меня другие, сзади написано ESP12-F. Антенна тоже другая - широкая.
Какая память сказать не могу, крышку еще не снимал, вот сейчас хочу определиться, это я что-то не так делаю, или это брак. Если брак буду открывать диспут, а потом уже ковырять.
Странно, что прошивка пишется и читается, программа начинает выполняться, а потом в ошибку вываливается или виснет. Выводы подключал как здесь.
Судя по строчке "rror wifi_config!" настройки WiFi читаются пустые. Инициализации их не нашел.
Получается, сначала эти настройки нужно перенести в 7D000 и в 7E000 для вебсвалки?
 

pvvx

Активный участник сообщества
Судя по строчке "rror wifi_config!" настройки WiFi читаются пустые. Инициализации их не нашел.
Получается, сначала эти настройки нужно перенести в 7D000 и в 7E000 для вебсвалки?
Это китайское дело их инить. У меня разобрана только стартовая проверка и загрузка, а меняют и пишут китайцы сами эти сектора по смене установок WiFi и прочего до дырок... На каждую запись этих секторов китайцы стирают и пишут сектор с их контролькой в 0x7f000. Количество записей отображается в web на странице Debug and Test: "Counter erase the last flash sector..."
Кроме того в эти настройки пишет китайский загрузчик (который у меня не используется), а контрольку не правит. Всё у них по китайски. :) Подумаешь, что опции WiFi слетят при переключении загрузчиков - так и должно считают китайцы...
 
Последнее редактирование:

aloika

Active member
Уже описывалось.
Не добавилось, а изменилось с одних глюков на другие. В 1.4.2 есть очень плохой глюк с подключениями STATION и его не обойти. В 1.5.2 его нет, но есть другие :)
Это всё и останавливает от полного реверса, т.к. нет стабильного варианта по WiFi от китайцев, на котором можно-бы было построить базовую версию. А из-за "недокументированости" WiFi регистров исправить код будет невозможно, т.е. реверс будет неполным, но переносимым. Переносить и реверсить китай-глюки нет никакого желания.
Т.е. с этих пор ничего принципиально не поменялось?
 

vad7

Active member
@pvvx, Так что мне с этими платами то делать? Прошивка не работает.
Китайский загрузчик в китайской прошивке пишет в другое место, так флеш не 512KB, а больше.
Чипы бракованные или я что-то упускаю из вида?
 

pvvx

Активный участник сообщества
Т.е. с этих пор ничего принципиально не поменялось?
Не знаю, что такое принципиально не менялось. Вроде много менялось - modbus там прижился и ещё ошибка пофиксена в tcp_srv_conn.c, сменился алго TCP2UART... Сегодня вот boot mode: ( 2, x), которая давала вечный поток protected при перезагрузке, если GPIO2 на GND... В табличке загрузки у китайцев значится как 'Jump Boot'.
 
Последнее редактирование:

pvvx

Активный участник сообщества
@pvvx, Так что мне с этими платами то делать? Прошивка не работает.
Китайский загрузчик в китайской прошивке пишет в другое место, так флеш не 512KB, а больше.
Чипы бракованные или я что-то упускаю из вида?
В честь чего он пишет в другое место, если написано в первом сообщении темы ставить всегда разметку на flash на 512k?
Если сочиняете свои загрузчики, тогда всё меняйте сами.
 

pvvx

Активный участник сообщества
PostLast - какова причина абракадабры при выводе?
По вопросу с RESET от транзисторов в модуле DEVKIT - он работет, а если припаять правильные номиналы резисторов, то и deep_sleep работает. Проблем не встречалось, чтобы RESET от USB не работал.

@pvvx, ковыряю тут модули ESP12-F, что-то ни как не запускается.
Прошивки с АТ шьются, если ставлю 4Mb флеш - падает, 8Mb - выдает приветсвие и тишина, на команды не отвечает.
Прошиваю вебсвалку - не грузится, выдает вперемежку с мусором - "rror wifi_config!" и "ets_main.c".
Я не помню, как на этих "-F" модулях распаяна Flash. Были модули с DIO (DSPI), а не c QIO (QSPI). Если без QSPI - то однозначно в помойку, т.к. тормоз. :) NodeMCU-шникам показалось, что надо освободить ещё пару выводов, лишая модуль производительности... при этом потребление не падает :)
 
Последнее редактирование:

aloika

Active member
http://esp8266.ru/forum/threads/esp-12f-esp-202.612/

Вот тема про ESP12-F. У меня такие были, веб-свалка на них отлично работает (на SDK 1.4.0). Вообще разницы, кроме светодиода, не заметил по сравнению с -E и -Q.
Может, конечно, партии разные или брак какой...
 

vad7

Active member
В честь чего он пишет в другое место, если написано в первом сообщении темы ставить всегда разметку на flash на 512k?
Это я про китайскую АТ прошивку, которая там стояла с завода. В ней настройки сохранены по другому адресу. Ваша прошивка запускаясь не находит по нему настройки, так как там пусто. пробежался бегло по коду, но не нашел вызов инициализации настроек в tst_cfg_wifi уже идет работа с настройками, а там 0xFF.

Кто-то в отзывах у продавца написал: "Check flash shows 4MB of 40 MHz QIO"

Я так понимаю, если память была бы DIO, то прошивка вообще бы не стартанула, т.к. в загрузчике стоит включение QIO режима.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Это я про китайскую АТ прошивку, которая там стояла с завода. В ней настройки сохранены по другому адресу. Ваша прошивка запускаясь не находит по нему настройки, так как там пусто. пробежался бегло по коду, но не нашел вызов инициализации настроек в tst_cfg_wifi уже идет работа с настройками, а там 0xFF.

Кто-то в отзывах у продавца написал: "Check flash shows 4MB of 40 MHz QIO"
Тип Flash же считывается в программе программирования... На ESP12-F замечены эти BG25Q32A: http://www.firstjit.com/Uploadfiles/20131107103522734.pdf
Я так понимаю, если память была бы DIO, то прошивка вообще бы не стартанула, т.к. в загрузчике стоит включение QIO режима.
Проверить не могу - нет модулей с распайкой только DIO, а резать дороги - лень. :)
 

pvvx

Активный участник сообщества
@aloika - ещё по старой просьбе кого-то что-то кое-как поменял в makefile :) , чтобы транслировалась нормально и при изменении в проекте кода meSDK, а не надо было делать clean или clobber... Ещё websocket заработал...
 
  • Like
Реакции: vad7

pvp

New member
@aloika - ещё по старой просьбе кого-то что-то кое-как поменял в makefile :) , чтобы транслировалась нормально и при изменении в проекте кода meSDK, а не надо было делать clean или clobber... Ещё websocket заработал...
Что-то мусорничает немного (выделил жирным)...
Вот вывод при загрузке:

ets Jan 8 2013,rst cause:2, boot mode:(3,7)

load 0x40100000, len 92, room 16
tail 12
chksum 0x85
csum 0x85


meSDK<0>lŒ#{|Œd`don't use rtc mem data

Save rx_gain_dc table (0, 1)


Изменил в проекте только скорость UARTo со 115200 на 74880 (ну чтобы совсем без крокозябр было) и перенаправил вывод в UART0 вмместо UART1.
 

vad7

Active member
@pvvx, иногда (через несколько успешных) идут сбои подключения к WiFi роутеру. Пишет Error wifi_config!. Это на модуле ESP01 с 512KB.
Error wifi_config! Clear.
юr
Simple WEB version: 0.1.4
......
read-id:6977[304] ok,size:304 WiFi mode:3 phy:3 dhcp:1/0
AP:ESP8266[7] hiden(0) psw:[0123456789] au:0 chl:1 maxcon:4 beacon:100
ip:192.168.4.1 gw:192.168.4.1 msk:255.255.255.0 mac:1a:fe:34:9c:b8:d1
DHCP ip:192.168.4.2..192.168.4.10
ST:[test] psw:[xxxxxxxx] b:0 e4:8d:8c:23:99:2e ac:1
ip:192.168.0.222 gw:192.168.0.10 msk:255.255.255.0 mac:18:fe:34:9c:b8:d1
sleep:0, rect:30, maxtpw:78, sthn:[ESP_9CB8D1]
sleep disable
ErrWiFiSet: 0x00000800

Disk init: 64 files, addr = 0x0003e000
mode : softAP(1a:fe:34:9c:b8:d1)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
WiFi mode:3 phy:3 dhcp:1/0
AP:ESP8266[7] hiden(0) psw:[0123456789] au:0 chl:1 maxcon:4 beacon:100
ip:192.168.4.1 gw:192.168.4.1 msk:255.255.255.0 mac:1a:fe:34:9c:b8:d1
DHCP ip:192.168.4.2..192.168.4.10
ST:[test] psw:[xxxxxxxx] b:0 e4:8d:8c:23:99:2e ac:1
ip:192.168.0.222 gw:192.168.0.10 msk:255.255.255.0 mac:18:fe:34:9c:b8:d1
sleep:0, rect:30, maxtpw:78, sthn:[ESP_9CB8D1]
bcn 0
del if1
usl
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
sec 7f error
sec 7f error
sec 7f error
sec 7f error
sec 7f error
sec 7f error
sec 7f error
sec 7f error
sec 7f error
bcn 0
del if1
usl
add if1
bcn 100
ErrWiFiSet: 0x00000600
WiFi event(7): Probe Request (MAC:08:11:96:01:a3:14, RSSI:-84)

После сброса - нормально подключается, потом через несколько сбросов - опять ошибка и т.д.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Что-то мусорничает немного (выделил жирным)...
meSDK<0>lŒ#{|Œd`don't use rtc mem data
Это нормально. Это гадят китайские процедуры в init_wifi(). У них так задумано. Они там скорости UART переключают, общую PLL крутят, FIFO UART сбрасывают, не заботясь что перед этим сами что-то вывели в UART. :) Пытаются наверно китайские символы вывести...или зашифровать :) Выходит как на китайском - не читаемо.
don't use rtc mem data - это тоже сообщение от них (из init_wifi()). Я его уже из буфера UART выуживаю, иначе оно тоже в кракозябы у них шифруется...
Вот - перед входом в этот бардак перенаправляю вывод не в UART, а в буфер esp8266web/app_main.c at master · pvvx/esp8266web · GitHub
Потом распечатываю, что они там хотели сказать: esp8266web/app_main.c at master · pvvx/esp8266web · GitHub
Но что они творили с выходом UART не поправить. Надо всё ихнее выкидывать, "реверсить" и исправлять, но лень.
 
Последнее редактирование:

pvvx

Активный участник сообщества
@pvvx, иногда (через несколько успешных) идут сбои подключения к WiFi роутеру. Пишет Error wifi_config!. Это на модуле ESP01 с 512KB.

sec 7f error
sec 7f error
sec 7f error
sec 7f error
sec 7f error
sec 7f error
sec 7f error
sec 7f error

После сброса - нормально подключается, потом через несколько сбросов - опять ошибка и т.д.
sec 7f error - это китайцы не смогли записать свой любимый сектор с контрольками.
Первый раз вижу это соо в живую, но видел процедуру, которая это выводит.
Что-то с настройками flash?
Проверил - работает, диск пишет, а там не одна запись и раз 20 сбросил - всё ok.
Как такое достичь?
 
Последнее редактирование:

pvp

New member
@pvvx,
Спасибо за исчерпывающее объяснение.

А ещё дурацкий вопрос - поддерживается ли режим сниффера в Вашем MinEspSDK?
 
Последнее редактирование:

vad7

Active member
Как такое достичь?
Я вашу прошивку практически не изменил. Несколько мест пере-инициализации UART заремарил, мне UART1 сразу при старте нужен, уменьшил скорость UART0 до 74888, чтобы постоянно не переключать скорость, прерывание по GPIO3 используются, но оно в это время не срабатывает.
Прошивка здесь: https://github.com/vad7/PowerMeter/blob/master/bin/firmware.bin

Я тут еще одну непонятку словил: опять же часто, но не всегда, через несколько секунд после старта меняются настройки GPIO.
Я для I2C использую в качестве SDA - GPIO2, SCL - CPIO0.
Слева импульсы это нормально чтение I2C памяти, потом через 2.9 секунды GPIO0 уходит "само" в low.
1.jpg

через 4.6 сек - начинается какая-то генерация c частотой 5.7кHz на GPIO0.

3.jpg

2.jpg

В отладке ничего необычного - "Run ini file: protect/init.ini" и далее до "WiFi event(7):".....
Что это и как это отловить вообще не представляю! Тем более без отладчика.
 
Сверху Снизу