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

EspLua вместо NodeMCU

pvvx

Активный участник сообщества
Он же управляется сигналами с пинов 0,2,15 ?
Да, но ещё и другими. boot mode: (3,7) говорит, что 6 выводов выбора загрузки у нас совпадают.
Видимо в соединении модуля с платой что-то сделано кроме Gpio 0,2,15.
Это происходит только с этим проектом- остальные проекты грузятся без проблем, это засада.:)
В чем отличие Вашего проекта?
В том, что вы выставили 921600 baud на программирование flash и у вас сбоит линия TX-RX на данном модуле? :)
Загрузчик с пониженной частотой сделали, но загрузить (прошить в модуль) пока не смогли. Об этом говорит другая контролька.
Но надо добить данное дело.
Если с загрузчиком с контролькой 0xA1 тоже не будет работать, то надо смотреть следующее - питание на данном модуле. Может он не держит стартового броска тока питания? В других вариантах прошивок идет долгая загрузка и броски по питанию распределены по другому...
Дальнейшие варианты хуже и сложнее.
 
Последнее редактирование:
В том, что вы выставили 921600 baud на программирование flash и у вас сбоит линия TX-RX на данном модуле? :)
921600 baud попробовал на ESP07/12/12e работает устойчиво.

с платой V2 , тестирую Ваш проект без изменений 9600.
Аппаратно все Ок. , на 921600 работаю со всеми модулями с самого начала без проблем.
Уже давно пробовал выставлять FLASH_DOWNLOAD_TOOLS_v1.2 115200(ниже не пускает)
- не помогло.
Метод исключения-
Все остальные проекты и даже "дуринио:)" работают - значит только в Вашем проекте засада.
Посмотрите еще раз что поменяли...
а я посмотрю питание на модуле самописцем.
 

pvvx

Активный участник сообщества
Посмотрите еще раз что поменяли...
Но у вас не может просто загрузиться первые 156 байт flash. Они даже не запускаются. Так что моё тут не при чем.
Код:
ets Jan  8 2013,rst cause:2, boot mode:(3,7) <-- загрузка по reset, пины выбора загрузчика аналогичны приведенному мной примеру.

load 0x40100000, len 156, room 16 <-- загрузка в правильный адрес - в начало IRAM
tail 12
chksum 0xef <-- контрольная сумма не верна ни одному из выданных мной loadery
csum 0xef
csum err <-- ROM-BIOS говорит, что контролька загруженного блока не верна - не совпадает с требуемой
ets_main.c <-- указание от ROM-BIOS, что она не будет запускать это.
Битая память в ESP или flash? Ей не нравится последовательность байт? Может записываете что-то не то?
На этом пока всё :)
 
Последнее редактирование:
Может он не держит стартового броска тока питания?
Посмотрел питание 3,3 20мВ (пик/пик) шум. У китайцев стоит танталовый конденсатор 100,0 мкФ. нормально работало.
Мы меняем только Bin файлы все остальное одинаково.
Нужно подумать...:cool:
 

pvvx

Активный участник сообщества
Посмотрел питание 3,3 20мВ (пик/пик) шум. У китайцев стоит танталовый конденсатор 100,0 мкФ. нормально работало.
Мы меняем только Bin файлы все остальное одинаково.
Нужно подумать...:cool:
Кварц у модуля 26 MHz?
Полный бинарник прошивки с пониженной QSPI частотой при старте поможет? https://yadi.sk/d/FmkEbYBbhjJNM
Прошивать в FLASH_DOWNLOAD_TOOLS_v1.2_150512 с опцией FLASH SIZE: 4Mbit (вне зависимости от реального размера flash - потом определится само), SPI speed: 40 MHz, QIO, CrystalFreq: 26M
 
Последнее редактирование:
Кварц у модуля 26 MHz?
Полный бинарник прошивки с пониженной QSPI частотой при старте поможет?
26000800 ... 25999900 Гц. на всех модулях разная где заявленные 10ppm?
Хотя температуру держат нормально до 80 гр С. (погрел)
Залил Bin в плату V2 и модуль ESP12E.
ESP12E - работает.
Плата нет.
Посмотрел CLK на памяти = 25нс,
Схема на транзисторах и резисторах дает подставку в ~0,9 в. на GPIO0, RST.
Закоротил перемычками куда надо - не помогло.
Подвигал фронты Flash CLK +/-2-3 нс. во время прошивки:
1.Подтянул CLK к +3,3в 680 Ом - не помогло.
2.Подтянул CLK к gnd 680 Ом - не помогло.
Вариант неисправности памяти Flash - заменил на 128.
Вариант неисправности памяти RAM - сдвиньте код нопами (если не на таблице векторов), посмотрим.
По своему опыту и коллег всегда мы жаловалсь что чипы бракованные...
В результате официального исследования кристаллов на фирме производителя
всегда выяснялось (видно на фото топологии - что сами жгли).
или сами находили проблему до рекламации.
Без теста еще одной такой же платы, трудно сделать заключение.
Именно только Ваша прошивка упорно отказывается работать на этой плате.
 

pvvx

Активный участник сообщества
Это всё очень интересно. Надо найти в чем отличие.
ESP12E - работает.
Модуль ESP12E в другом включении?
Плата с тем-же модулем не работает? Не очень понятно.
Стартовый лог не сняли?
Вариант неисправности памяти RAM - сдвиньте код нопами (если не на таблице векторов), посмотрим.
Сдвину, если лог опять с неверной контролькой. Остальное пока не имеет никакого смысла, т.к. при старом логе код вообще не запускается. Лог желательно самый первый, после сброса или вкл. питания, если он зацикливается....

Вариант, что чип имеет другую прошивку ROM-ВIOS ещё не рассматривали. Но там проще - она считывается с модуля в "web" свалке или в
C:\Espressif\utils\esptool.exe -p COM2 -b 230400 dump_mem 0x40000000 0x8000 rom-bios.bin

Flash после прошивки тоже считывается и сравнивается. Чтение flash в esptool.py:
C:\Espressif\utils\esptool.exe -p COM2 -b 230400 read_flash 0 0x80000 flash.bin
 
Последнее редактирование:
Надо найти в чем отличие.
Мой макет это переходные платы от китайцев с разъемом для модулей см. мой аватар (фото с микроSD картой)
Есть модули 07,12,12e, есть память 4,32,128.
схему повторил с борда V2 только без транзисторов логики.
Китайский демоборд черный V2 c 12E запаян наглухо выпаивать не буду.
схема V2 есть можете найти в сети.
Плата с тем-же модулем не работает? Не очень понятно.
Модули 12e разные, на V2 запаян, на моем макете могу поставить любой из 07-12e.
Вот лог платы V2 с Вашей прошивкой 40.
Код:
Can't autodetect firmware, because proper answer not received.
load 0x40100000, len 156, room 16
tail 12
chksum 0xef
csum 0xef
csum err
ets_main.c
ets Jan  8 2013,rst cause:2, boot mode:(3,7)
[COLOR=#ff0000]Reset---[/COLOR]
load 0x40100000, len 156, room 16
tail 12
chksum 0xef
csum 0xef
csum err
ets_main.c
включил и нажал RES 1 раз.

Считал прошивку с борда V2 и залил ее в макет - макет заработал.
значит модуль на борде V2 код записан правильно.
вот лог c макета:
Код:
Can't autodetect firmware, because proper answer not received.
load 0x40100000, len 156, room 16
tail 12
chksum 0xa1
csum 0xa1
Rьh™"…™бAcjIh‰шЪ
Вариант, что чип имеет другую прошивку
Согласен,
Считал Bios c V2 и макета - одинаковые.
Что-то в подключении модуля на борде V2 - искал, пока не нашел разницы.
Я уже спрашивал:
Какие пины кроме Gpio 0,2,15 проверяются на старте?
Eще RAM:
Сдвигайте код - проверим RAM.
 
Последнее редактирование:

pvvx

Активный участник сообщества
csum 0xef, csum err. - нет совпадения с тем что записано в falsh.:(
Какие пины кроме Gpio 0,2,15 проверяются на старте?
Там проверка происходит значений I/O до старта и после + данные от блока управления RTC.
Веток много, но загрузка в основном идет так:
1) смотрятся зафиксированные значения до старта с GPIO0,1,2 как 3-х битов (тут если вышло значение 4, 5, 6, 7 то происходит инициализация sip драйвера в разных режимах = он нам не нужен(!) )
2) далее смотрится rtc_get_reset_reason() Это всё выводится как "\n ets %s,rst cause:%d, boot mode: (%d,%d)\n\n" + 3 бита от стартовых GPIO13,14,15
3) затем, в зависимости от значения rtc_get_reset_reason() (выводится как "rst cause:") начинается несколько ветвлений. В одной из веток опять смотрятся стартовые значения в GPIO0,1,2 и от их значений идет на загрузку flash_loader() или на инициализацию векторов прерываний _xtos_set_exception_handler() и запуску хитрого режима...
Всё не описать - логика не очень понятна, что хотели там китайцы...
Eще RAM:
Сдвигайте код - проверим RAM.
Это надо специально лепить. Проще создать тест IRAM и запустить в режиме загрузки по UART...
Чуть позже, сделаю что будет проще...
 
Последнее редактирование:
Привет pvvx,
Спасибо за развернутый ответ.
Что могу сказать, "замесили" китайцы BIOS.
С залитой прошивкой борд V2 меняет лог на старте только на изменение
Gpio 0,2,15 на остальные Gpio не реагирует.
Остается неисправность RAM. - (в это я мало верю, хотя...? )
Еще бы экземпляр такого же борда V2 было бы понятнее.
Всегда покупаю по 2, в этот раз брал до кучки 1 шт.
Не удобная плата. (маркировка не GPIO, а D0-D10 и перепутаны Gpio0=D3 и тд. - каждый раз в PDF смотреть:( ).

Больше не у кого на форуме нет такой платы!?
 

pvvx

Активный участник сообщества
Остается неисправность RAM. - (в это я мало верю, хотя...? )
Можно сделать проще - грузить код loader-а в другой адрес IRAM.
Счас внесу изменения и слеплю...
Lua пользуются только дети для одноразовых экспов, а у них ныне лето :)
https://yadi.sk/d/qyKJwnNFhm7PB загрузка лоадера в 0x4104000, прошивать в 0x000000...
Код:
 ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x40104000, len 156, room 16
tail 12
chksum 0xa1
csum 0xa1
boot mode: (3,6) - это модуль ESP-01. На нем у меня практически так всегда (GPIO13,14,15 = 1,1,0 , т.к. GPIO15 дорожкой под чипом соединен с GND).
На
Код:
system param error
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
...
EspLua.ru 1.1.2 build 20150702  powered by Lua 5.1.4
lua: cannot open init.lua
> =node.heap()
30824
пока, для этого теста, не обращайте внимания. Это связано с SDK, работать Lua всё равно будет.
 
Последнее редактирование:
загрузил: esplua_m40_naddr.bin

Можно сделать проще - грузить код loader-а в другой адрес IRAM.
Счас внесу изменения и слеплю...
Код:
load 0x40104000, len 156, room 16
tail 12
chksum 0xef
csum 0xef
csum err
ets_main.c
ets Jan  8 2013,rst cause:2, boot mode:(3,7)

load 0x40104000, len 156, room 16
tail 12
chksum 0xef
csum 0xef
csum err
ets_main.c
Это уже становиться смешно, не понимаю что происходит.
Я еще не разобрался, но предполагаю что все прошивки которые заработали на борде V2 собраны в 095-096.
Прошивка собранная на сайте где можно удалять модули:
nodemcu-dev112-8-modules-2015-07-03-15-25-47-float.bin
вообще не заработала не на каких модулях, a
nodemcu-dev096-8-modules-2015-07-03-15-43-30-float.bin
работает на всех.
может в этом причина?
 

pvvx

Активный участник сообщества
@Vladimir555 у нас с вами осталась одна причина - неработоспособность конкретного вашего модуля. Причин в чипе может быть много.
Вероятность и варианты пока об этом говорят.
Какая разница в SDK, если любой код прописанный в flash у вас вообще не доходит до исполнения. Отличия для ROM-BIOS в заголовке - грузить 1 сегмент и короткий.
 
Какая разница в SDK, если любой код прописанный в flash у вас вообще не доходит до исполнения. Отличия для ROM-BIOS в заголовке - грузить 1 сегмент и короткий.
Если это была бы неисправность модуля ошибки, сбои и тд.., я бы даже не стал Вас беспокоить выкинул и забыл.
Но меня заинтересовал вопрос:
все другие прошивки грузятся и работают.
залил в V2 :
nodemcu-dev112-8-modules-2015-07-03-15-25-47-float.bin
вот лог:
Код:
Can't autodetect firmware, because proper answer not received.
load 0x40100000, len 32444, room 16
tail 12
chksum 0xef
ho 0 tail 12 room 4
load 0x33333333, len 858993459, room 12

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

load 0x40100000, len 32444, room 16
tail 12
chksum 0xef
ho 0 tail 12 room 4
load 0x33333333, len 858993459, room 12
Да, если эта тема уже надоела я не против отложить ее до того пока кто нибудь еще не на ткнется...

Ну и о хорошем.
По тестировал Вашу прошивку на своем макете esp07 -128m.
Пожелания которые заметил:
node.compile() -не берет большие файлы >3кб. вылетает - (может WDT?)
tmr.delay() - сделать что бы работал под RTOS, а не вырубал все таски разом.
Спасибо.
 

pvvx

Активный участник сообщества
Но меня заинтересовал вопрос:
...
chksum 0xef
Тут тоже chksum 0xef.
Может сделать у лоадера реальный chksum 0xef ?
Ткните в схему от этой платы, а вдруг то не то найду.
(не привык так просто бросать что-то начатое :) )
C самой Lua я ещё пребываю в надежде, что писатели NodeMCU сами всё исправят...
Постараюсь воткнуть указанное igrr на прошлой странице, как будет на то время. Но для той вставки требуется уменьшение запросов стека в самой Lua, хотя-бы в c_printf() и ...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Применил тестовое решение запуска тасков и таймеров во время работы tmr.delay() и т.д. без переключения стека.
Прикол в том, что если в процедуре обработки приема по UDP/TCP поставить tmr.delay(), то возможен повторный вызов процедуры приема данных :) И конечно всё рушится - Lua же тормоз и никакой многозадачки. Зато теперь при tmr.delay() потребление падает до заявленных пары мА (если нет большой активности таймеров и WiFi). А ставить tmr.delay() в обработке приема/передачи - это неправильно. Вообще надо всё делать по событиям...
только на али как v2, а реально v1.0
https://github.com/nodemcu/nodemcu-devkit-v1.0
Это так и сделано?
err28.gif
Зачем замыкать выход на корпус?
 
Последнее редактирование:
Зачем замыкать выход на корпус?
Привет pvvx,
На заводе резистор не запаян (видно на фото у светодиода), я ставил 1кОм- плохо, а 200 Ом просыпается нормально. Там и далее резистивная логика "монтажное ИЛИ", как 70 годы :p. Китайцы молодцы, изучаю их схемные решения идет оптимизация себестоимости до абсурда. По этому и цены привлекательные. Чип 8266 в продаже - 3$, модуль- 2,4$:D
 
Последнее редактирование:
А ставить tmr.delay() в обработке приема/передачи
Проект собрался на UDK v2.0.7,
Залил в чип поверх старого в макет esp07-128m,
скорость записи 460800 проекта во Flash- это радует:).
Заработал, lua сервер (который вчера остался в памяти).
Радовался не долго,:mad:
попробовал поднять скорость записи до 921600,
залил, синий светодиод горит постоянно , ну ладно, бывает...
Очистил первые Flash 4мб. FF
Установил скорость 460800. (потом и 230400)
Залил в макет, синий светодиод горит постоянно, поток:
(уже наверное читали, это было и с проектом из UDK v2.0.7)
[/code]
Код:
epc1=0x40100004, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
Fatal exception (0):
epc1=0x40100004, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
Fatal exception (0):
epc1=0x40100004
Залил в китайский боард:
Код:
load 0x40100000, len 156, room 16
tail 12
chksum 0xef
csum 0xef
csum err
ets_main.c
ets Jan  8 2013,rst cause:2, boot mode:(1,7)
опять засада...:(

Переключился на UDK 2.0.6
ошибки сборки:
Код:
mingw32-make[2]: *** No rule to make target 'c:\espressif\xtensa-lx106-elf\lib\gcc\xtensa-lx106-elf\5.1.0\include\stdarg.h', needed by '.output/eagle//obj/delay.o'.  Останов.
mingw32-make[2]: Leaving directory 'F:/ЗАГРУЗКИ/EspLua-master/EspLua-master/app/main'
../Makefile:243: recipe for target '.subdirs' failed
mingw32-make[1]: Leaving directory 'F:/ЗАГРУЗКИ/EspLua-master/EspLua-master/app'
mingw32-make[1]: *** [.subdirs] Error 2
mingw32-make.exe: *** [.subdirs] Error 2
F:/ЗАГРУЗКИ/EspLua-master/EspLua-master/Makefile:243: recipe for target '.subdirs' failed
В чем проблема?
 
Последнее редактирование:

pvvx

Активный участник сообщества
Проект собрался на UDK v2.0.7,
Текущая версия уже на GCC 5.1 из UDK v2.0.7, обновлены и либы libgcc.a и libc.a. SDK v1.2.0 с последними (вчерашними) патчами. Вставил вызов тасков SDK куда не попадя в Spifss, а то был вечный WDT на 16 мегабайтной flash. На том пока и бросил :)
Заработал, lua сервер (который вчера остался в памяти).
На новую прошивку надо всегда перетранслировать lua в lc, иначе глюки.
 
Сверху Снизу