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

Нужна помощь NodeMCU v1.0 - модуль невменяем после прошивки

ivdok

New member
Здравствуйте!
Возникла такая проблема при прошивке модуля ESP-12(? Manufacturer 0xE0 Product 4016):
Сборка из исходников произошла без ошибок, но после заливки и ребута происходит следующее:
  • LED постоянно моргает
  • На tty приходит мусор на любом бодрейте
  • Все GPIO подтянуты
Без проблем работает только прошивка NodeMCU, которая шла вместе с флешером под Windows, но она не опознаётся ESPlorer. Прошивка с nodemcu-build обладает такими же проблемами при заливке.
Я подключал модули ADC, Bit, CJSON, CoAP, Crypto, DHT, Encoder, Enduser, File, GPIO, HTTP, I2C, mDNS, MQTT, Net, Node, 1-Wire, PCM, Perf, PWM, Sigma_Delta, SNTP, SPI, Timer, UART, Wi-Fi.
В виде ELF-бинаря прошивка весит 2.1Мб, т.е. на 4Мб флэш должен поместиться.
0x00000.bin - 28416 байт, 0x10000.bin - 448615 байт, тоже вписывается в ограничения.
Более-менее аналогичная прошивка на NodeMCU v0.9 (тоже с вариацией ESP-12) собиралась без проблем, если применять фикс к user_config.h, но т.к. я использую 1.0, то соответствующий дефайн я не трогал.
Собирал под Manjaro (Arch) Linux, но это не имеет значения, т.к. облачный сборщик тоже сбоит.
Что я делаю не так?
 

ivdok

New member
Дополню:
Запускал сборку согласно документации:
Код:
[ivdok@lenovo-g505s nodemcu-firmware]$ esptool --port /dev/ttyUSB0 write_flash -fm qio -fs 32m 0x00000 ./bin/0x00000.bin 0x10000 ./bin/0x10000.bin
(Пробовал и QIO, и DIO)
Ограничение количества модулей до минимума (File, GPIO, NET, NODE, TMR, UART, WIFI) также не принесло результата, таким образом советы на esp8266.com не принесли результата.
И да, erase_flash также не помогает - нет разницы ни без, ни с ним.
 

ivdok

New member
добавьте еще [inline]-ff 40m[/inline] и укажите скорость [inline]-b 115200[/inline]
Разницы также нет:
Код:
esptool.py v1.1
Connecting...
Running Cesanta flasher stub...
Flash params set to 0x0240
Writing 28672 @ 0x0... 28672 (100 %)
Wrote 28672 bytes at 0x0 in 2.5 seconds (91.7 kbit/s)...
Writing 331776 @ 0x10000... 331776 (100 %)
Wrote 331776 bytes at 0x10000 in 28.9 seconds (91.9 kbit/s)...
Leaving...
После сброса платы чип по-прежнему уходит в себя.
 

ivdok

New member
проверьте на другой прошивке, чтобы понять проблему (причина в прошивке или процессе прошивки)
Перезагрузился под Windows, NodeMCU Flasher с древней прошивкой работают как надо, т.е. плата в рабочем состоянии.
Но, поскольку это страшное легаси, нет модулей для моего проекта, да и ESPlorer не опознаёт эту версию, нужно собрать версию посвежее.
Немного порывшись в дебрях гитхаба, помогла прошивка esp_init_data_default.bin из SDK. Назначение этого файла вообще известно, или это что-то проприетарное? Не хотелось бы шить непонятно что, но модуль с ним заработал.

P.S.
[off]Эту версию ESPlorer также не опознаёт. Да что за..?[/off]
 

Victor

Administrator
Команда форума
ESPlorer не опознаёт эту версию
это не важно, все равно он будет работать. Автоопределение просто активирует настройки, специфичные для NodeMCU, но вы можете это сделать и сами, если это нужно.
Эту версию ESPlorer также не опознаёт. Да что за..?
теперь NodeMCU после старта выдает 100500 вариантов, в зависимости от того, кто что там наваял - мне просто лень анализировать все эти варианты, чтобы определять все вариации NodeMCU в ESPlorer
 

ivdok

New member
это не важно, все равно он будет работать. Автоопределение просто активирует настройки, специфичные для NodeMCU, но вы можете это сделать и сами, если это нужно.

теперь NodeMCU после старта выдает 100500 вариантов, в зависимости от того, кто что там наваял - мне просто лень анализировать все эти варианты, чтобы определять все вариации NodeMCU в ESPlorer
Просто немного напрягает, что я не могу сделать pull-down у GPIO напрямую из программы, без кода - ни одна команда секции Commands -> GPIO не работает.

Но вообще тему можно закрывать, проблему я решил.
Напоследок пропишу команду для моего модуля (4Мб):
(Относительные пути могут отличаться)
Код:
esptool --port /dev/ttyUSB0 -b 115200 write_flash -fm dio -fs 32m -ff 40m 0x00000 ./bin/0x00000.bin 0x10000 ./bin/0x10000.bin 0x3fc000 ../esp-open-sdk/ESP8266_NONOS_SDK_*/esp_init_data_default.bin
 
Последнее редактирование:

Crazy_people

New member
Модуль ESP-12F. У меня так-же, после сборки на nodemcu-build.com с минимальным набором библиотек на версии master и dev уходит в себя, и на UART выдает белиберду.
 

ivdok

New member
Модуль ESP-12F. У меня так-же, после сборки на nodemcu-build.com с минимальным набором библиотек на версии master и dev уходит в себя, и на UART выдает белиберду.
Скорее всего, также не прошился esp_init_data_default.bin. Судя по всему, это свежая зависимость, так как решение приблемы нашёл в баг-репортах в гите.
 

Victor

Administrator
Команда форума
По NodeMCU (lua вопросы и другие по прошивке NodeMCU) у нас на форуме вы можете попробовать обратиться в соответствующем разделе к @nikolz
 
Доброго времени. Вчера столкнулся с аналогичной проблемой - собрал в облаке прошивку, после заливки в чип- на выходе Uart мусор. На сборке 2015, которая идет встроенной в espflasher, аналогично - всё работает.
У меня esp wroom 02, 16 мег.

Тему эту внимательно прочитал, метод действительно работает, но потерял почти два дня на некоторых нюансах, потому напишу порядок действий с комментариями:

1. Идем сюда NodeMCU custom builds генерировать прошивку с нужными нам модулями, отмечаем галочками.
2. Там же есть галочка "Select branch to build from" - с вариантами master/dev, это выбор версии сдк, master - это последнее SDK, dev - это 0.9 чего-то там.
3. Пишем там мейл, получаем на почту два файла, версии прошивки с плавающей запятой и целочисленную.
4. Шьем через XTCOM_UTIL или ESP8266Flasher скачанную прошивку по адресу 0x00000, всё стандартно.
5. После дополнительно нужно прошить esp_init_data_default.bin. Момент на котором я застрял- адреса и версия файла.
В сети есть старый и новый esp_init_data_default, нужен тот, что из патча _NONOS_SDK_V1.5.4.1_patch_20160704 (я упустил этот момент, хотят тут в теме можно найти в скрипте).
6. Шьем esp_init_data_default по нужному адресу из списка, в зависимости от размера памяти:
  • 0x7c000 for 512 kB, modules like ESP-01, -03, -07 etc.
  • 0xfc000 for 1 MB, modules like ESP8285, PSF-A85
  • 0x1fc000 for 2 MB
  • 0x3fc000 for 4 MB, modules like ESP-12E, NodeMCU devkit 1.0, WeMos D1 mini
7. Перезагружаем модуль- в терминале получаем сообщение formatting file system- значит всё ок, ждем.
8. Модуль автоматически перезагрузится и выдаст приветственную строку. Можно работать.

Прилагаю нужный esp_init_data_default.bin из патча.

Всем удачной прошивки.
 

Вложения

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

nikolz

Well-known member
Размер памяти не всегда совпадает с моделью, т.к. это внешний чип то всё в зависимости от жадности китайцев. Если вы покупали не давно то вероятность 4М высокая т.к. новые сдк не поддерживают память менее 4М. Поэтому чтобы не было нареканий китайцы стараются ставить по мин. 4М
Не правда.
Покупал и два года назад и 20 дней.
Память соответствует заявленной.
И вообще самые большие обманщики и халявщики - это россияне.
 

Victor

Administrator
Команда форума
Памяти ровно столько сколько должно быть.
Чтобы не было недопонимания:
Размер памяти в модулях ESP8266 теоретически может быть любым, но на практике это от 512 кБайт до 4 Мбайт. Объем памяти (в одной микросхеме) общепринято указывать не байтах, а в битах: например 4Мbit = 4096 bit = 4096/8 = 512 kbyte, а 32Mbit = 4Mbyte.

Если у продавца указан размер 4M, то это значит, что на деле может оказаться как 4 Мbit, так и 4 Mbyte. В таких случаях лучше уточнить размер до покупки. Однако, как правило, чаще всего оказывается все же 4 Mbyte.

AT прошивка из последней версии Espressif SDK 2.0.0 поддерживает модули с любым размером памяти от 1 Мбайта (8 Мбит).
Источник: [inline]README.MD[/inline] из Espressif SDK 2.0.0, лежит в папке [inline]/bin/at[/inline].

Ваша собственная прошивка вполне может уместиться и в модуль с 512 килобайтами памяти (если вы не будете делать обновление "по воздуху"), однако лучше покупать модули с бОльшим объемом памяти (из-за незначительной разницы в цене), если вы пока не знаете на какой прошивке остановитесь.
 
Сверху Снизу