• Система автоматизации с открытым исходным кодом на базе 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 -- похоже полностью их поделка.
 
Сверху Снизу