Прошивка для esp32 nodemcu lua на базе последней idf4.4

Тема в разделе "ESP8266, ESP32", создана пользователем serg3295, 11 июл 2022.

  1. serg3295

    serg3295 Гуру

    Если речь идёт о наборе утилит в файлах tasks.json и auto.sh в каталоге .vscode, то путь к компилятору luac.cross задаётся в константе в файле auto.sh
    Код (Bash):
    #!/bin/sh

    LFS_SIZE=0x040000
    LFS_BASE=0x088000
    LUAC_CROSS="/opt/lua"
    ESP_ARCH="esp8266"
    MAKE_RESOURCE="/opt/lua/tools/make_resource"
    Если я правильно понял о чём речь. У меня этих файлов tasks.json как в Бразилии донов Педро :)
     
    ИгорьК нравится это.
  2. ИгорьК

    ИгорьК Гуру

    Это для чего?
     
  3. serg3295

    serg3295 Гуру

    первое - кусочек пути к luac.cross. Дальше в коде есть
    `luacCross=${LUAC_CROSS}/${ESP_ARCH}/${luaVer}/luac.cross`

    второе -
    В версии прошивки для ESP8266 имеется утилита make_resource, которая собирает произвольные файлы в файл resource.lua, записываемый в LFS. Затем к этим файлам можно получить доступ в режиме read-only из своей программы, используя функции модуля file_LFS.

    можно не обращать внимание. на этот параметр. Тем более, я планирую встроить make_resource в расширение vscode. Что бы всё автоматически собиралось.
     
    ИгорьК нравится это.
  4. ИгорьК

    ИгорьК Гуру

    Похоже, у меня одна из ранних версий вашего файла, для винды он называется "auto.ps1".

    upload_2024-5-16_10-43-21.png

    Как выглядит ваш последний вариант?
     
  5. serg3295

    serg3295 Гуру

    Что-то древнее лежит на github'e. Для линукс в том числе. Выложил в этот же репо более позднюю версию для linux в отдельную ветку dev.
    Просто у меня уже давно основная система linux mint, и во windows я захожу очень, очень редко. Поэтому поддерживать и обновлять вариант для винды я просто не смогу. Я реально не помню ps1.
    Более того, я начал дорабатывать расширение nodemcu-tools как раз с целью уйти от сценариев, и обеспечить кроссплатформенность. Сейчас расширение закрывает почти все задачи, имеющиеся в tasks.json.
    Собственно, поэтому и обновлений репо даже для линукса не делал.
     
    Последнее редактирование: 16 май 2024
    ИгорьК нравится это.
  6. serg3295

    serg3295 Гуру

    Обновление прошивки для ESP32

    В последнем принятом PR#3652 (github) были исправлены ошибки, возникающие при работе через консоль.
    Добавлена функция node.chipmodel() (readthedocs.io)
    Изменены значения по умолчанию для параметров
    Код (C++):
    CONFIG_NEWLIB_STDIN_LINE_ENDING_LF=y
    CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF=y

    Для поддержки нового PR выпущена версия v4.1.0 CLI утилиты nodemcu-tool (github). Для установки скачать zip архив (github) и распаковать его в какой-нибудь каталог.
    Новая версия расширения VSCode - nodemcu-tools, поддерживающая этот PR, будет чуть позже.
     
    ИгорьК нравится это.
  7. ИгорьК

    ИгорьК Гуру

    Вот что важнее :)
     
  8. ИгорьК

    ИгорьК Гуру

    Коммит
    upload_2024-5-25_22-22-1.png

    Выдает ошибку

    Код (Text):
    [ 28%] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/esp_hmac.c.obj
    [ 28%] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/esp_etm.c.obj
    /home/igor/dev-esp32/sdk/esp32-esp-idf/components/esp_hw_support/sleep_modes.c: In function 'light_sleep_uart_prepare':
    /home/igor/dev-esp32/sdk/esp32-esp-idf/components/esp_hw_support/sleep_modes.c:152:61: error: 'CONFIG_ESP_CONSOLE_UART_BAUDRATE' undeclared (first use in this function); did you mean 'CONFIG_ESP_CONSOLE_UART_NUM'?
      152 | #define UART_FLUSH_US_PER_CHAR              (10*1000*1000 / CONFIG_ESP_CONSOLE_UART_BAUDRATE)
          |                                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /home/igor/dev-esp32/sdk/esp32-esp-idf/components/esp_hw_support/sleep_modes.c:484:113: note: in expansion of macro 'UART_FLUSH_US_PER_CHAR'
      484 |             (sleep_duration < (int64_t)((UART_LL_FIFO_DEF_LEN - uart_ll_get_txfifo_len(CONSOLE_UART_DEV) + 1) * UART_FLUSH_US_PER_CHAR) + SLEEP_UART_FLUSH_DONE_TO_SLEEP_US)) {
          |                                                                                                                 ^~~~~~~~~~~~~~~~~~~~~~
    /home/igor/dev-esp32/sdk/esp32-esp-idf/components/esp_hw_support/sleep_modes.c:152:61: note: each undeclared identifier is reported only once for each function it appears in
      152 | #define UART_FLUSH_US_PER_CHAR              (10*1000*1000 / CONFIG_ESP_CONSOLE_UART_BAUDRATE)
          |                                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /home/igor/dev-esp32/sdk/esp32-esp-idf/components/esp_hw_support/sleep_modes.c:484:113: note: in expansion of macro 'UART_FLUSH_US_PER_CHAR'
      484 |             (sleep_duration < (int64_t)((UART_LL_FIFO_DEF_LEN - uart_ll_get_txfifo_len(CONSOLE_UART_DEV) + 1) * UART_FLUSH_US_PER_CHAR) + SLEEP_UART_FLUSH_DONE_TO_SLEEP_US)) {
          |                                                                                                                 ^~~~~~~~~~~~~~~~~~~~~~
    make[4]: *** [esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/build.make:206: esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/sleep_modes.c.obj] Error 1
    make[4]: *** Waiting for unfinished jobs....
    [ 28%] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/esp_dpa_protection.c.obj
    make[4]: Leaving directory '/home/igor/dev-esp32/build'
    make[3]: *** [CMakeFiles/Makefile2:3936: esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/all] Error 2
    make[3]: Leaving directory '/home/igor/dev-esp32/build'
    make[2]: *** [Makefile:130: all] Error 2
    make[2]: Leaving directory '/home/igor/dev-esp32/build'
    make failed with exit code 2, output of the command is in the /home/igor/dev-esp32/build/log/idf_py_stderr_output_15723 and /home/igor/dev-esp32/build/log/idf_py_stdout_output_15723
    make[1]: *** [Makefile:18: all] Error 2
    make[1]: Leaving directory '/home/igor/dev-esp32'
    make: *** [Makefile:10: all] Error 2
    igor@Zotac-C:~/dev-esp32$

    C целью все нормально:
    upload_2024-5-25_22-24-29.png

    Без указанной опции маке отрабатывает без ошибок.

    Или я опять что-то забыл... Так и уеду в отпуск... :)
     
    Последнее редактирование: 26 май 2024
  9. serg3295

    serg3295 Гуру

    У esp32c6 нет USB CDC
    там надо выбирать UART0 и втыкать провод в разъём ch343
    26-05-24_09-34.png

    Ко мне вчера приехала с6

    Похоже, надо сделать make clean перед сменой цели. Тогда прошивка соберётся.
    Если не поможет, тогда fullclean. Или даже удалить каталоги build, cache вручную.
     
    Последнее редактирование: 26 май 2024
    ИгорьК нравится это.
  10. serg3295

    serg3295 Гуру

    26-05-24_09-31.png
     
    ИгорьК нравится это.
  11. serg3295

    serg3295 Гуру

    Для любителей древностей.

    Новая версия ESPlorer'a теперь поддерживает самую последнюю прошивку nodemcu.
    Вот ссылка на артефакт - результат сборки actions на github. Для скачивания надо иметь аккаунт github'a. (вроде бы)
    Артефакт - это не релиз, поэтому время его хранения 90 дней по умолчанию. Так что забирайте сразу.
     
    ИгорьК нравится это.
  12. ИгорьК

    ИгорьК Гуру

    Скачал сразу.

    Не стоит небрежно относиться к этому решению, и вот почему.

    Если захочешь поделиться проектом последних версий с человеком, далеким от NodeMCU, особенно на ESP-32, то... То как он отредактирует конфигурацию, закинет файлы?

    В общем, это хорошая вещь, простой инструмент, надеюсь, работает :)

    Это работает!

    upload_2024-7-4_8-36-12.png

    Хотел подгрузить zip сюда, но чет не получается :-(

    Вот ссылка на архив.
     
    Последнее редактирование: 4 июл 2024
  13. ИгорьК

    ИгорьК Гуру

    @serg3295, с поклоном.

    Не выходит правильно сконфигурировать прошивку для esp32s3:

    make отрабатывает:
    Код (C++):
    make[4]: Leaving directory '/home/igor/dev-esp32/build'
    make[4]: Entering directory '/home/igor/dev-esp32/build'
    [100%] Generating binary image from built executable
    esptool.py v4.7.0
    Creating esp32s3 image...
    Merged 3 ELF sections
    Successfully created esp32s3 image.
    Generated /home/igor/dev-esp32/build/nodemcu.bin
    make[4]: Leaving directory '/home/igor/dev-esp32/build'
    [100%] Built target gen_project_binary
    make[4]: Entering directory '/home/igor/dev-esp32/build'
    make[4]: Leaving directory '/home/igor/dev-esp32/build'
    make[4]: Entering directory '/home/igor/dev-esp32/build'
    nodemcu.bin binary size 0x104500 bytes. Smallest app partition is 0x180000 bytes. 0x7bb00 bytes (32%) free.
    make[4]: Leaving directory '/home/igor/dev-esp32/build'
    [100%] Built target app_check_size
    make[4]: Entering directory '/home/igor/dev-esp32/build'
    make[4]: Leaving directory '/home/igor/dev-esp32/build'
    [100%] Built target app
    make[3]: Leaving directory '/home/igor/dev-esp32/build'
    make[2]: Leaving directory '/home/igor/dev-esp32/build'

    Project build complete. To flash, run this command:
    /home/igor/.espressif/python_env/idf5.1_py3.12_env/bin/python sdk/esp32-esp-idf/components/esptool_py/esptool/esptool.py -p (PORT) -b 460800 --before default_reset --after hard_reset --chip esp32s3  write_flash --flash_mode dio --flash_size 4MB --flash_freq 80m 0x0 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin 0x10000 build/nodemcu.bin
    or run 'idf.py -p (PORT) flash'
    make[1]: Leaving directory '/home/igor/dev-esp32'

    Но в результате:
    Код (Bash):

    Rebooting...
    ESP-ROM:esp32s3-20210327
    Build:Mar 27 2021
    rst:0x3 (RTC_SW_SYS_RST),boot:0x2b (SPI_FAST_FLASH_BOOT)
    Saved PC:0x40375afa
    SPIWP:0xee
    mode:DIO, clock div:1
    load:0x3fce3818,len:0x1750
    load:0x403c9700,len:0x4
    load:0x403c9704,len:0xc00
    load:0x403cc700,len:0x2e04
    entry 0x403c9908
    [0;32mI (26) boot: ESP-IDF v5.1.3 2nd stage bootloader[0m
    [0;32mI (26) boot: compile time Jul 22 2024 16:36:28[0m
    [0;32mI (26) boot: Multicore bootloader[0m
    [0;32mI (29) boot: chip revision: v0.2[0m
    [0;32mI (33) boot.esp32s3: Boot SPI Speed : 80MHz[0m
    [0;32mI (38) boot.esp32s3: SPI Mode       : DIO[0m
    [0;32mI (43) boot.esp32s3: SPI Flash Size : 4MB[0m
    [0;32mI (47) boot: Enabling RNG early entropy source...[0m
    [0;32mI (53) boot: Partition Table:[0m
    [0;32mI (56) boot: ## Label            Usage          Type ST Offset   Length[0m
    [0;32mI (64) boot:  0 nvs              WiFi data        01 02 00009000 00006000[0m
    [0;32mI (71) boot:  1 phy_init         RF data          01 01 0000f000 00001000[0m
    [0;32mI (79) boot:  2 factory          factory app      00 00 00010000 00180000[0m
    [0;32mI (86) boot:  3 lfs              unknown          c2 01 00190000 00010000[0m
    [0;32mI (93) boot:  4 storage          Unknown data     01 82 001a0000 00070000[0m
    [0;32mI (101) boot: End of partition table[0m
    [0;32mI (105) esp_image: segment 0: paddr=00010020 vaddr=3c0c0020 size=2c4ech (181484) map[0m
    [0;32mI (146) esp_image: segment 1: paddr=0003c514 vaddr=3fc99000 size=03b04h ( 15108) load[0m
    [0;32mI (150) esp_image: segment 2: paddr=00040020 vaddr=42000020 size=be914h (780564) map[0m
    [0;32mI (292) esp_image: segment 3: paddr=000fe93c vaddr=3fc9cb04 size=00ba4h (  2980) load[0m
    [0;32mI (293) esp_image: segment 4: paddr=000ff4e8 vaddr=40374000 size=14f80h ( 85888) load[0m
    [0;32mI (317) esp_image: segment 5: paddr=00114470 vaddr=600fe000 size=00064h (   100) load[0m
    [0;32mI (326) boot: Loaded app from partition at offset 0x10000[0m
    [0;32mI (327) boot: Disabling RNG early entropy source...[0m
    [0;32mI (338) cpu_start: Multicore app[0m
    [0;32mI (338) cpu_start: Pro cpu up.[0m
    [0;32mI (338) cpu_start: Starting app cpu, entry point is 0x403756c0[0m
    [0;32mI (0) cpu_start: App cpu up.[0m
    [0;32mI (356) cpu_start: Pro cpu start user code[0m
    [0;32mI (356) cpu_start: cpu freq: 160000000 Hz[0m
    [0;32mI (356) cpu_start: Application information:[0m
    [0;32mI (359) cpu_start: Project name:     nodemcu[0m
    [0;32mI (364) cpu_start: App version:      1.4.0-master_20151229-898-g3203[0m
    [0;32mI (371) cpu_start: Compile time:     Jul 22 2024 16:36:35[0m
    [0;32mI (377) cpu_start: ELF file SHA256:  bd946f5c57a9b3e2...[0m
    [0;32mI (383) cpu_start: ESP-IDF:          v5.1.3[0m
    [0;32mI (388) cpu_start: Min chip rev:     v0.0[0m
    [0;32mI (393) cpu_start: Max chip rev:     v0.99 [0m
    [0;32mI (398) cpu_start: Chip rev:         v0.2[0m
    [0;32mI (402) heap_init: Initializing. RAM available for dynamic allocation:[0m
    [0;32mI (410) heap_init: At 3FCA1A98 len 00047C78 (287 KiB): DRAM[0m
    [0;32mI (416) heap_init: At 3FCE9710 len 00005724 (21 KiB): STACK/DRAM[0m
    [0;32mI (422) heap_init: At 3FCF0000 len 00008000 (32 KiB): DRAM[0m
    [0;32mI (429) heap_init: At 600FE064 len 00001F84 (7 KiB): RTCRAM[0m
    [0;32mI (436) spi_flash: detected chip: generic[0m
    [0;32mI (440) spi_flash: flash io: dio[0m
    [0;33mW (444) rmt(legacy): legacy driver is deprecated, please migrate to `driver/rmt_tx.h` and/or `driver/rmt_rx.h`[0m
    [0;33mW (454) ADC: legacy driver is deprecated, please migrate to `esp_adc/adc_oneshot.h`[0m
    [0;32mI (463) sleep: Configure to isolate all GPIO pins in sleep state[0m
    [0;32mI (469) sleep: Enable automatic switching of GPIO sleep configuration[0m
    [0;32mI (477) app_start: Starting scheduler on CPU0[0m
    [0;32mI (481) app_start: Starting scheduler on CPU1[0m
    [0;32mI (481) main_task: Started on CPU0[0m
    [0;32mI (491) main_task: Calling app_main()[0m


    ***ERROR*** A stack overflow in task console has been detected.


    Backtrace: 0x40375c7a:0x3fcac270 0x4037e66d:0x3fcac290 0x40380e7a:0x3fcac2b0 0x4037f912:0x3fcac330 0x40380fc4:0x3fcac360 0x40380fba:0xffffffff |<-CORRUPTED




    ELF file SHA256: bd946f5c57a9b3e2

    Rebooting...
     

    Видимо что-то в make menuconfig недоделываю. Посоветуете что?

    Код (Bash):
    # Это выполняю:

    make clean
    make fullclean

    make IDFPY_ARGS="set-target esp32s3"
    make IDF_TARGET=esp32s3
     
     
  14. serg3295

    serg3295 Гуру

    К сожалению, у меня нет платы esp32s3, и я не могу проверить на железе.
    На первый взгляд вроде всё правильно, должно работать. Пока могу только предложить
    - проверить Line Endings (что они оба LF)
    - посмотреть какой вывод выбран в (Top) → Component config → ESP System Settings → Channel for console output
    не знаю какие на конкретной плате выходы задействованы.

    И встречный вопрос. Я бы тоже s3 купил для экспериментов. Не могли бы дать ссылку на алик или озон. Какую надо брать? А то я пока в этой модели не разбирался.
     
    ИгорьК нравится это.
  15. ИгорьК

    ИгорьК Гуру

    Эта.
     
    serg3295 нравится это.
  16. ИгорьК

    ИгорьК Гуру

    Вопрос с прошивкой (почти) решился. Оказывается(!!!! никогда так не делал) надо читать документацию!!!

    Плата не имеет внешнего UART чипа, посему:

    1. При подключении для прошивки надо жать кнопку (B)oot.

    2. При формировании прошивки выбирать:

    upload_2024-7-23_8-29-15.png

    И оно ПОЧТИ работает:
    upload_2024-7-23_8-30-15.png

    Почти, потому что, к сожалению, расширение плату не видит, ESPlorer с ней тоже не работает.

    В диспетчере устройств выглядит так:

    upload_2024-7-23_8-35-57.png
     
    Последнее редактирование: 23 июл 2024
  17. serg3295

    serg3295 Гуру

    В esp32c3 и ecp32s2 mini ещё более прикольный механизм загрузки. Там две кнопки boot и reset, которыми надо манипулировать.

    С esp32s3 может заработать консольная утилита nodemcu-tool.
    Во всяком случае, у меня с esp32c3 она работает.
     
  18. ИгорьК

    ИгорьК Гуру

    Тоже вариант. Но можно и в другой среде с платой работать.
     
  19. serg3295

    serg3295 Гуру

    Произошли изменения в прошивке для nodemcu esp32. В частности, добавлена функция node.info().

    Для корректной работы утилиты nodemcu-tool, и расширения nodemcu-tools с прошивкой, собранной на этом коммите, необходимо обновить их до последних версий.
     
    ИгорьК нравится это.
  20. serg3295

    serg3295 Гуру

    Новая версия прошивки для ESP32

    Breaking changes!
    Необходимо обратить внимание на то, что этот коммит вносит изменения несовместимые с предыдущим пользовательским интерфейсом. В частности, введён модуль console и изменён интерфейс модуля uart.
    То есть, пользователю необходимо перечитать документацию к модулю uart и ознакомится с документацией на новый модуль console.

    Описание

    PR #3666 представил новую версию прошивки которая добавляет следующие возможности:

    - поддержка ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C6 и ESP32-H2;
    - работа с этими ESP через консоли UART, USB-Serial-JTAG и CDC-ACM;

    Различные чипы ESP поддерживают подключение по USB через один из физических интерфейсов UART, USB-Serial-JTAG или CDC-ACM. Теперь пользователь может выбрать на какой интерфейс будет подключена консоль для взаимодействия с приложением на компьютере.

    Если выбран канал USB-SERIAL-JTAG или USB-CDC, то вывод на консоль будет производиться через USB, а UART останется на выводах UART0 на плате и вы сможете независимо от консоли обмениваться данными с внешним устройством, подключенным к UART.

    Выбор канала UART0 в качестве консоли на любой плате, имеющей USB-SERIAL-JTAG или USB-CDC, означает, что консоль будет подключена на ножки UART0 платы и вам потребуется дополнительный USB-UART адаптер для подключения к компьютеру.

    На обычной плате ESP32-без-букв доступен только один канал для подключения консоли - UART0. Он обычно подключен к разъёму USB на плате через установленный на плате преобразователь usb-serial.

    Сборка прошивки

    При сборке прошивки пользователь с помощью make menuconfig должен:
    • указать желаемый канал для подключения консоли (Top) → Component config → ESP System Settings → Channel for console output.
    • убедиться в том, что отключен канал вторичной консоли (Top) → Component config → ESP System Settings → Channel for console secondary output (X) No secondary console. Этот параметр присутствует не для всех типов консолей.
    • в случае выбора консоли USB-CDC необходимо дополнительно установить значение параметра (Top) → Component config → ESP System Settings → Size of USB CDC RX buffer равным 512. Это требуется только для работы прошивки с приложениями nodemcu-tools и NodeMCU-Tool.
    Для корректной работы CLI утилиты NodeMCU-Tool, и расширения для VS Code nodemcu-tools с прошивкой, собранной на этом PR, необходимо обновить их до последних версий.

    Прямая ссылка для скачивания с github zip архива с новой версией утилиты NodeMCU-Tool.
     
    Последнее редактирование: 16 дек 2024
    ИгорьК нравится это.