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

Nodemcu

Victor

Administrator
Команда форума
Какие режимы желательно выставить?
все по умолчанию, кроме обычных настроек флеш памяти, ну и если у модуля частота другая. пробовать можно смело, если что-то не так, то просто не прошьется.
в отличии от многих других девайсов ESP8266 программно невозможно убить, т.к. бутлоадер зашит в чипе, а мы шьем только внешнюю память
 
Victor,
Эта ревизия понравилась, удивительно быстро работает!
с 4 mb все получилось "почистил" , завтра попробую с 16 мб.
Спасибо за помощь.:)
 
Очистка 16 мбайт памяти прошла успешно.
Достаточно записать 0xFF 4 мбайта с 0x00000,
потом очистить FS командой Format.
Victor,
Еще есть вопрос.
Как бы быстро записать много файлов в эту FS разом.
Сейчас использую CMD сценарий с утилитой nodemcutil.exe на скорости 921600,
скорость большая, но паузы между пакетами большие ~ 0,3-0.5сек -долго грузит.
Есть утилита spiffy.exe -создает образ bin. из всех файлов каталога с flash-download-tool ,будет мгновенно !
Загадочная формула вычисления адреса где лежит FS есть,
  • eagle.app.v6.flash.bin: 0x00000~len( eagle.app.v6.flash.bin )
  • eagle.app.v6.irom0text.bin: 0x10000~0x10000 + len( eagle.app.v6.irom0text.bin )
  • spiffs_embed.bin: (0x10000 + len( eagle.app.v6.irom0text.bin ) + sector_size(4096) ) & (~4096)
  • Ie: next to the irom0text.bin, but aligned to sector_size(4096).
смотрю - не пойму как вычислить.o_O!?
К примеру для 25q32 или 25q128.?
Может есть какая утилита посмотреть дамп Flash- и найти адрес?
 
Последнее редактирование:
nodemcu_integer_0.9.6-dev_20150406.bin
конец прошивки 0x0 - 0x6665a
дополняем до 0x01000
получаем 0x67000 +0x01000 =0x68000
Правильно?
результат:
Код:
----------------------------
                : 16449536 bytesNo files found.
----------------------------
>
> r,u,t=file.fsinfo() print("Total : "..t.." bytes\r\nUsed  : "..u.." bytes\r\nRemain: "..r.." bytes\r\n") r=nil u=nil t=nil
Total : 3441461 bytes
Used  : 11546 bytes
Remain: 3429915 bytes
что не так?
 
Уже пробовал:
0x67000
0x68000
0x69000
не работает.
Остался вариант собрать свою прошивку NODEMCU.
Уже внес изменения -скорость 921600 RX,TX - буферы по 1024
теперь и FS изменять.:)
 

pvvx

Активный участник сообщества
Уже пробовал:
0x67000
0x68000
0x69000
не работает.
Остался вариант собрать свою прошивку NODEMCU.
Вот от этого _flash_used_end берется значение адреса для начала старта FS в NodeMCU https://github.com/nodemcu/nodemcu-firmware/blob/master/ld/eagle.app.v6.ld#L79
Значение _flash_used_end получается при линковке кодов. От него ищется первый кратный секторам flash адрес https://github.com/nodemcu/nodemcu-firmware/blob/master/app/platform/common.c#L155
Там и начинается FS.
Но с большими flash имеется ошибка. SDK не понимает flash более 4 Мбайт и от значения в заголовке вычисляет, где находятся сектора с установками и esp_init_data_default.bin. А т.к. предел 4Мб, то они читаются с адреса 4 Мбайт минус 4 сектора Flash + SDK читает настройки WiFi до запуска NodeMCU, хотя там есть код переноса данной области на конец реальной flash. В итоге это всё не работает. Т.е. никто так и не тестировал данную прошивку с большими Flash, что говорит о никчемности данной системы :)
Исправлению на новые SDK NodeMCU не подлежит - слишком много надо исправлять.
Эти настройки https://github.com/nodemcu/nodemcu-firmware/blob/master/app/platform/flash_api.c#L11 устарели и новые SDK сами проверяют, есть ли таблица и ставят свою по умолчанию.
Начиная от этого https://github.com/nodemcu/nodemcu-firmware/blob/master/app/platform/flash_api.c#L126 номера не соответствуют даже SDK 0.9.5
Кароче весь этот flash_api.c файл в помойку, как и массу других...
В итоге, если "скорректировать" NodeMCU на новые SDK, то от неё останется только название NodeMCU и претензии прошлых "разработчиков".
 
Последнее редактирование:
В итоге, если "скорректировать" NodeMCU на новые SDK, то от неё останется только название NodeMCU и претензии прошлых "разработчиков".
Чем дальше в лес тем больше дров:)
Согласен,
но игрушка увлекательная при цене платформы 120р.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Чем дальше в лес тем больше дров:)
Согласен,
но игрушка увлекательная при цене платформы 120р.
Надо подождать - кто и возьмется "с дальнейшей поддержкой", т.к. уже всё описано и выдано что надо менять и как странслировать даже старую версию на SDK1.1.2. Но желательно изменить название, во избежание путаницы... ИМХО.
Тем более уже отдал, как увеличить память на 16 килобайт...
 

kro12

New member
Здравствуйте. Решил попробовать NODEmcu. Проблема такая, при подключении через ESPlorerer не видит модуль но при передергивании CH_PD появляется надпись что ответ получен но определить автоматически прошивку не удалось. На команды не отзывается. Схема подключения такая же как и для прошивки AT(она работала хорошо). Прикладываю скриншот из ESPlorerer. Стоит прошивка nodemcu_integer_0.9.6-dev_20150627.bin.
 

Вложения

  • 54.5 KB Просмотры: 183

Tomahawk

New member
kro12, контроллер вам ответил, значит дальше можно писать и заливать в него программу. Я бы посоветовал сменить прошивку на nodemcu_20150213.bin, с ней у меня работало. Это для начала, потом поймёте, что NodeMCU надо как минимум обрезать от лишнего )
 

kro12

New member
kro12, контроллер вам ответил, значит дальше можно писать и заливать в него программу. Я бы посоветовал сменить прошивку на nodemcu_20150213.bin, с ней у меня работало. Это для начала, потом поймёте, что NodeMCU надо как минимум обрезать от лишнего )
Прошил прошивкой по вашей рекомендации, никаких изменений LuaLoader не видит. Но при передергивании CH_PD подключается, но опять же на команды не отзывается.
 

Zhum

New member
Нубский, наверное, вопрос, но в инете пока ответа не нашёл. nodemcu, судя по всему 0.9, прошивка с официального сайта (с github-а точнее). Пишу Lua-скрипт, опрашиваюший в цикле D1 (кнопка), всё работает, но через ~5 сек. всё перегружается. Вышаётся нечитаемая строка и потом "NodeMCU 0.9.6 build 20150704 powered by Lua 5.1.4", как при старте.

Почему так? Какой-то watch-dog? Как с этим бороться?
Скрипт ниже:
Код:
pin=1
gpio.mode(pin,gpio.INPUT)
x=gpio.read(pin)
while (1) do
  x2=gpio.read(pin)
  if x~=x2 then
    x=x2
    print("x=",x2,"\n")
  end
end
 

nikolz

Well-known member
попробуйте так:
pin=1
gpio.mode(pin,gpio.INPUT)
x=gpio.read(pin)
while (1) do
tmr.wdclr()
x2=gpio.read(pin)
if x~=x2 then
x=x2
print("x=",x2,"\n")
end
end
 

Zhum

New member
Супер! Заработало!
А где можно подробнее почитать про доступные модули типа tmr? На сайте информация только про встроенные типа wifi, MQTT, и т.п. Может плохо смотрел, конечно, ткните носом, плиз :)

Да, и ещё вопрос - если я пропишу в init.lua скрипт и он будет крутиться в вечном цикле, то как делать обновления? Есть ли возможность сбросить nodemcu так, чтобы init.lua не выполнился? Или стереть все файлы в нём?
 

nikolz

Well-known member
tmr.wdclr() - это сторожевой таймер для перезапуска процессора при зависании.
используется во всех микропроцессорах уже лет 40.
Почитать можно в учебниках по микропроцессорам.
остальные функции tmr можно прочитать здесь
https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_ru
----------------------------
init.lua лучше не прописывать.
Потому, что в случае ошибки будет постоянно перегружаться и исправить будет сложно.
Делайте пока без init.
когда все сделаете и будет достаточно опыта, тогда пишите init.
-------------------------
Можно сделать все или почти все,
но это требует определенного уровня в разработке софта
и хорошего понимания принципов работы железа.
 
Сверху Снизу