• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопросы по примеру nodemcu-firmware

windalser

New member
Спасибо за хорошую сборку!
Попробовал простые примеры - работают.
Попробовал собрать NodeMCU из примеров - в принципе, работает, но есть нюансы:
- uart работает на скорости 74880 bps, а должен на 9600
- модуль что-то пытается делать с сетью, хотя его вроде никто этого не просил (init.lua файл отсутствует)
 

CHERTS

Moderator
Команда форума
- uart работает на скорости 74880 bps, а должен на 9600
в файле user_config.h закоментируйте #define DEVELOP_VERSION и будет режим без отладки со скоростью 9600

- модуль что-то пытается делать с сетью, хотя его вроде никто этого не просил (init.lua файл отсутствует)
В оффициальной сборке тоже нет init.lua, он загружается отдельно, про сеть ничего не скажу, исходники один в один из репозитария, никаких правок, я правил только Makefile
 

alexhi

Member
CHERTS , не подскажите как сделать чтобы в NodeMCU собирался 1 прошивочный файл с 0x00000 адреса как в оригинале. А то шить двумя секциями с 0x00000 и 0x10000 не очень удобно.
 

CHERTS

Moderator
Команда форума
CHERTS , не подскажите как сделать чтобы в NodeMCU собирался 1 прошивочный файл с 0x00000 адреса как в оригинале. А то шить двумя секциями с 0x00000 и 0x10000 не очень удобно.
хе хе, по мне так наиболее удобнее и прозрачнее, в следующую версию DevKit включу утилиты для создания одного файла прошивки из eagle.app.v6.out, если хочется прям сейчас то вот 2 архива

bin.rar распаковать в C:\Espressif\examples\nodemcu-firmware\ с заменой файлов, отредактировать в файле bin\gen_misc_plus.bat и bin\load_init_lua.cmd, переменную comport=COM2
utils.rar распаковать в C:\Espressif\ с заменой файлов
после сборки прошивки NodeMCU в Eclipse нужно запустить C:\Espressif\examples\nodemcu-firmware\bin\gen_misc_plus.bat, он должен собрать файл eagle.app.flash.bin и залить его в esp
далее запустить файл C:\Espressif\examples\nodemcu-firmware\bin\load_init_lua.cmd, он заливает init.lua в NodeMCU
 

Вложения

pvvx

Активный участник сообщества
хе хе, по мне так наиболее удобнее и прозрачнее, в следующую версию DevKit включу утилиты для создания одного файла прошивки из eagle.app.v6.out
А какой смысл лить по RS-232 все 512к?
Лучше опции сделайте, какие есть у FLASH_DOWNLOAD_TOOLS и/или скажите как их устанавливать в eclipse
https://github.com/themadinventor/esptool
 
Последнее редактирование:

alexhi

Member
хе хе, по мне так наиболее удобнее и прозрачнее, в следующую версию DevKit включу утилиты для создания одного файла прошивки из eagle.app.v6.out, если хочется прям сейчас то вот 2 архива

bin.rar распаковать в C:\Espressif\examples\nodemcu-firmware\ с заменой файлов, отредактировать в файле bin\gen_misc_plus.bat и bin\load_init_lua.cmd, переменную comport=COM2
utils.rar распаковать в C:\Espressif\ с заменой файлов
после сборки прошивки NodeMCU в Eclipse нужно запустить C:\Espressif\examples\nodemcu-firmware\bin\gen_misc_plus.bat, он должен собрать файл eagle.app.flash.bin и залить его в esp
далее запустить файл C:\Espressif\examples\nodemcu-firmware\bin\load_init_lua.cmd, он заливает init.lua в NodeMCU
Спасибо попробую, да мне из IDE тоже удобно шить.Но я передаю прошивку товарищу,а объяснять как размещать в программаторе эту часть в с 0x00000 ,а вторую 0x10000 муторно. Он далек от этого,хотел упростить ему и себе жизнь. :) PS. как говорил разместил топик с термометр + батарейка.
 

CHERTS

Moderator
Команда форума
А какой смысл лить по RS-232 все 512к?
Там поменьше, не 512k, хотя я тоже считаю, что смысла объединять файлы нет.
Но если распространять прошивку как части готового продукта, то тогда да, чем меньше файлов тем лучше, но тогда помимо 1 файла прошивки должна быть утилита обновления тоже в виде 1 файла без лишних хвостов.

Лучше опции сделайте, какие есть у FLASH_DOWNLOAD_TOOLS и/или скажите как их устанавливать в eclipse
https://github.com/themadinventor/esptool
Все будет, и отдельно батник для сборки и в Makefile для Eclipse.
А от питоновской esptool я скоро думаю отказаться и перейти на Си'шную реализацию, она конечно больше в части исходного кода, но у неё больше функционала и она не тащит за собой ни каких лишних библиотек, можно собрать под Windows/Linux/Mac OS X и будет один исполняемый файл.
 

pvvx

Активный участник сообщества
Там поменьше, не 512k, хотя я тоже считаю, что смысла объединять файлы нет.
Ваш пример "Hello World" транслируется в 300к :)
Вложил пример поменьше. Можно странслировать в дцать байт + заголовок flash (16 байт).
Там часть исходников от LibMain.a стянуто от сюда: https://github.com/themadinventor/esp-blobless
И правильно расписаны ресурсы в esp8266.h. Тут https://github.com/esp8266/esp8266-wiki/wiki/Memory-Map - не полностью.
А то вечно спрашивают, как избавиться от всех либ Espressif...
Так, по крохе, скоро всё найдется :)
objdump вызванный с -S берёт исходный текст прямо из файлов исходного текста. Компилятор на эти комментарии никак не действует и в объектный файл они не попадают, так что перекомпиляция исходников ничего не должна изменить в результатах работы objdump.
Всё возможно, но проблемс была. Осталась только тормознутость.
 

Вложения

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

amatron

New member
Ваш пример "Hello World" транслируется в 300к :)
Вложил пример поменьше. Можно странслировать в дцать байт + заголовок flash (16 байт).
Там часть исходников от LibMain.a стянуто от сюда: https://github.com/themadinventor/esp-blobless
И правильно расписаны ресурсы в esp8266.h. Тут https://github.com/esp8266/esp8266-wiki/wiki/Memory-Map - не полностью.
А то вечно спрашивают, как избавиться от всех либ Espressif...
Так, по крохе, скоро всё найдется :)
Всё возможно, но проблемс была. Осталась только тормознутость.
Подскажите, а как посмотреть работу выложенного Вами примера HelloWorld? На какую ногу и с какой скоростью идет вывод сообщений?
 

pvvx

Активный участник сообщества
Стандартная, для ESP8266, там скорость 74880 и выходы UART тоже обычные. Если модуль типа 01 - TX (Uart0tx) и GPIO2 (Uart1tx).
А что такой интерес к скорости UART?
 
Последнее редактирование:

CHERTS

Moderator
Команда форума
Стандартная, для ESP8266, там скорость 74880 и выходы UART тоже обычные. Если модуль типа 01 - TX (Uart0tx) и GPIO2 (Uart1tx).
А что такой интерес к скорости UART?
Наверно интерес связан с тем, что в этих исходниках нет функций для управления скоростью uart, да и вообще чем либо связанным и uart. А wi-fi там нормально поднимается, не проверяли? А то init_wifi есть, работает ли она?
 

amatron

New member
Наверно интерес связан с тем, что в этих исходниках нет функций для управления скоростью uart, да и вообще чем либо связанным и uart. А wi-fi там нормально поднимается, не проверяли? А то init_wifi есть, работает ли она?

При компиляции init_wifi:

00:21:47 **** Build of configuration Default for project HelloWorld ****
mingw32-make.exe -f C:/Espressif/workspace/HelloWorld/Makefile all
C:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -Isrc -Iinclude -Ic:/Espressif/ESP8266_SDK/include -Os -ggdb -std=c99 -Werror -Wpointer-arith -Wundef -Wall -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -D__ets__ -DICACHE_FLASH -Wno-address -DTENSILICA=0 -c src/user_main.c -o src/user_main.o
C:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -Isrc -Iinclude -Ic:/Espressif/ESP8266_SDK/include -Os -ggdb -std=c99 -Werror -Wpointer-arith -Wundef -Wall -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -D__ets__ -DICACHE_FLASH -Wno-address -DTENSILICA=0 -c main/app_main.c -o main/app_main.o
main/app_main.c: In function 'init_wifi':
main/app_main.c:76:2: error: implicit declaration of function 'register_chipv6_phy' [-Werror=implicit-function-declaration]
if (register_chipv6_phy(/*args*/)) {
^
main/app_main.c:80:2: error: implicit declaration of function 'uart_div_modify' [-Werror=implicit-function-declaration]
uart_div_modify(0, 0x42c);
^
main/app_main.c:83:2: error: implicit declaration of function 'phy_disable_agc' [-Werror=implicit-function-declaration]
phy_disable_agc();
^
main/app_main.c:85:2: error: implicit declaration of function 'ieee80211_phy_init' [-Werror=implicit-function-declaration]
ieee80211_phy_init(/*args*/);
^
main/app_main.c:87:2: error: implicit declaration of function 'lmacInit' [-Werror=implicit-function-declaration]
lmacInit();
^
main/app_main.c:89:2: error: implicit declaration of function 'wDev_Initialize' [-Werror=implicit-function-declaration]
wDev_Initialize(/*args*/);
^
main/app_main.c:91:2: error: implicit declaration of function 'pp_attach' [-Werror=implicit-function-declaration]
pp_attach();
^
main/app_main.c:93:2: error: implicit declaration of function 'ieee80211_ifattach' [-Werror=implicit-function-declaration]
ieee80211_ifattach(&g_ic);
^
main/app_main.c:93:22: error: 'g_ic' undeclared (first use in this function)
ieee80211_ifattach(&g_ic);
^
main/app_main.c:93:22: note: each undeclared identifier is reported only once for each function it appears in
main/app_main.c:95:20: error: 'wDev_processFiq' undeclared (first use in this function)
ets_isr_attach(0, wDev_processFiq, NULL);
^
main/app_main.c:99:2: error: implicit declaration of function 'pm_attach' [-Werror=implicit-function-declaration]
pm_attach();
^
main/app_main.c:101:2: error: implicit declaration of function 'phy_enable_agc' [-Werror=implicit-function-declaration]
phy_enable_agc();
^
main/app_main.c:103:2: error: implicit declaration of function 'cnx_attach' [-Werror=implicit-function-declaration]
cnx_attach(&g_ic);
^
main/app_main.c:105:2: error: implicit declaration of function 'wDevEnableRx' [-Werror=implicit-function-declaration]
wDevEnableRx();
^
cc1.exe: all warnings being treated as errors
C:/Espressif/workspace/HelloWorld/Makefile:59: recipe for target 'main/app_main.o' failed
mingw32-make.exe: *** [main/app_main.o] Error 1

00:21:47 Build Finished (took 203ms)
 

pvvx

Активный участник сообщества
Наверно интерес связан с тем, что в этих исходниках нет функций для управления скоростью uart, да и вообще чем либо связанным и uart. А wi-fi там нормально поднимается, не проверяли? А то init_wifi есть, работает ли она?
Нет там WiFi - это куски от исходников библиотеки Espressif, вроде от libmain.a.
Как я понял, их выложил themadinventor, нарушив соглашение с Espressif :) "Утечки" кароче...
Там часть исходников от LibMain.a стянуто от сюда: https://github.com/themadinventor/esp-blobless
Я не имею договоров с Espressif и приходится всю информацию собирать кусками по инет.
Зато там указано, что есть встроенные часы с их памятью и что параметры сохраняются туда и многое другое, по аппаратным частям (+ несколько заголовков к процедурам BIOS) , чего нет в заголовках SDK и т.д.... В итоге уже набегает к 90% описаний (сишных заголовков) к процедурам BIOS .
BIOS (ROM) WiFi не обслуживает. Для работы WiFi необходима масса стандартных либ. Но Espressif закрыл код обращения к ним. В принципе всё можно собрать своё из open-source, но не хватает только четкого описания аппаратуры чипа.
При компиляции init_wifi:
ieee80211
Это обращения к закрытым библиотекам от Espressif.
с какой скоростью идет вывод сообщений?
Установить любую скорость URAT очень просто – записываете в делитель (адрес памяти UART0 = 0x60000014, UART1 = 0x60000F14) 32-х битное значение от 80 000 000 / Baud и всё Ok.
 
Последнее редактирование:

jcmvbkbc

New member
Как я понял, их выложил themadinventor, нарушив соглашение с Espressif :) "Утечки" кароче...
Больше похоже на результат реверс-инжениринга.

При компиляции init_wifi:
ieee80211
Это обращения к закрытым библиотекам от Espressif.
Функции с ieee80211 пришли из одной из *BSD, типа того: https://github.com/freebsd/freebsd/tree/master/sys/net80211
Espressif добавил пару функций в libnet80211, а libphy -- похоже полностью их поделка.
 
Сверху Снизу