jenya7 0 6 декабря, 2021 Опубликовано 6 декабря, 2021 · Жалоба Создал минималистический проект void app_main() { esp_err_t ret = nvs_flash_init(); if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { ESP_ERROR_CHECK(nvs_flash_erase()); ret = nvs_flash_init(); } ESP_ERROR_CHECK(ret); esp_log_level_set("*", ESP_LOG_NONE); GPIO_Init(); UART_Setup(); UART_PrintString("UART setup done.\n"); while (1) { } } После прожига подключаю UART и он все время забрасывает сообщениями Quote rs?:0x10 (RT?WDT_RTC_R?SET),boot:0x1? (?PI_FAS?_FLASH_BO?T) fl?sh rea? e?r, 1000 ?ts_mai?.c 371 ets Ju? 8 2016 00:22:57 rs?:0x10 (RTCWDT?RTC_RE?ET),boot:0x1b (S?I_FAST?FLASH_?OO?) fla?h read er?, 1000 ets_main.c 371 ets Jun 8 2016 00:22:57 rst:0x10 (RTCWDT_RTC_?ES?T),boot:0x1b (SPI_FAST_FLASH_B?OT) ?la?h ?ea? e?r, 1000 ets_main.c 371 ets Jun 8 2016 00:22:57 В чём может быть проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 6 декабря, 2021 Опубликовано 6 декабря, 2021 · Жалоба 9 minutes ago, jenya7 said: В чём может быть проблема? А в чем сейчас проблема? Если не хотите ничего видеть на UART, подтяните IO15 к земле. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 6 декабря, 2021 Опубликовано 6 декабря, 2021 (изменено) · Жалоба 17 minutes ago, aaarrr said: А в чем сейчас проблема? Если не хотите ничего видеть на UART, подтяните IO15 к земле. у меня дев. борд. там всё подтянуто. если я прожигаю ардуиновский проект всё работает нормально - UART печатает только то что я ему говорю. Мне кажется Debug Level выставлен так что он забрасывает меня системными сообщениями. Я думал это поможет esp_log_level_set("*", ESP_LOG_NONE); но не помогло. Изменено 6 декабря, 2021 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlanDrakes 1 6 декабря, 2021 Опубликовано 6 декабря, 2021 (изменено) · Жалоба Это случается из-за работающего WDT - таймер сторожевой собаки. Так как while(1) {} является бесконечным циклом ожидания, а встроенная RTOS в SDK переключает задачи только явными вызовами системных функций, сброса таймера не происходит и он перезапускает кристалл. Попробуйте сделать так: while (1) { vTaskDelay(1000 / portTICK_PERIOD_MS); }; Фактически, основная задача будет спать и постоянно переключать контекст выполнения с себя на фоновые задачи. В том числе, сброс WDT. ------------------------------------------------------------------------------------------------------ Ещё проверьте, что запись идёт в правильный адрес памяти - 0x1000 в вашем случае. Можно руками прошить итоговый файл. Пример: esptool.py.exe --port COM7 --baud 512000 write_flash --flash_size=detect 0x1000 .\Downloads\esp32-idf3-20210202-v1.14.bin Отсюда: https://www.esp32.com/viewtopic.php?f=12&t=9941&sid=eb816a68997eb0864719cef143cac436&start=10 Изменено 6 декабря, 2021 пользователем AlanDrakes Дополнил вторым вариантом Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 6 декабря, 2021 Опубликовано 6 декабря, 2021 (изменено) · Жалоба 1 hour ago, AlanDrakes said: Это случается из-за работающего WDT - таймер сторожевой собаки. Так как while(1) {} является бесконечным циклом ожидания, а встроенная RTOS в SDK переключает задачи только явными вызовами системных функций, сброса таймера не происходит и он перезапускает кристалл. Попробуйте сделать так: while (1) { vTaskDelay(1000 / portTICK_PERIOD_MS); }; Фактически, основная задача будет спать и постоянно переключать контекст выполнения с себя на фоновые задачи. В том числе, сброс WDT. ------------------------------------------------------------------------------------------------------ Ещё проверьте, что запись идёт в правильный адрес памяти - 0x1000 в вашем случае. Можно руками прошить итоговый файл. Пример: esptool.py.exe --port COM7 --baud 512000 write_flash --flash_size=detect 0x1000 .\Downloads\esp32-idf3-20210202-v1.14.bin Отсюда: https://www.esp32.com/viewtopic.php?f=12&t=9941&sid=eb816a68997eb0864719cef143cac436&start=10 спасибо большое. в этом наверное проблема - мои аргументы Quote --chip esp32 --port COM79 --baud 115200 --before default_reset --after hard_reset write_flash 0x0 получается он начинвется с 0 прожёг по адресу 0х1000 - та же проблема, хотя добавил в код rtc_wdt_protect_off(); rtc_wdt_disable(); судя по этой строке Quote rst:0x10 (RTCWDT_RTC_RESET),boot:0x1b (SPI_FAST_FLASH_BOOT) таки происходит рисет от вотчдога. Изменено 6 декабря, 2021 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 34 6 декабря, 2021 Опубликовано 6 декабря, 2021 · Жалоба 2 часа назад, jenya7 сказал: COM79 Это мощно!))) 3 часа назад, AlanDrakes сказал: Это случается из-за работающего WDT Вы посмотрите, что у него валится в уарт, там явно несоотв. адресов начала строки, валится мусор из совсем другой области памяти... Собака будет просто прерывать сообщение и циклить его, но не мусор черт те откуда... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 6 декабря, 2021 Опубликовано 6 декабря, 2021 (изменено) · Жалоба похоже что прожег правильно Quote upload.py --chip esp32 --port COM79 --baud 115200 --before default_reset --after hard_reset write_flash 0x10000 D:\Workspace_Eclipse\build/ble_ibeacon_demo.bin теперь на стартапе получаю Quote [0;31mE (5230) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:[0m [0;31mE (5230) task_wdt: - IDLE0 (CPU 0)[0m [0;31mE (5230) task_wdt: Tasks currently running:[0m [0;31mE (5230) task_wdt: CPU 0: main[0m [0;31mE (5230) task_wdt: CPU 1: IDLE1[0m и всё. UART_PrintString("UART setup done.\n"); ничего не печатает, но это уже другая головная боль. Изменено 6 декабря, 2021 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlanDrakes 1 7 декабря, 2021 Опубликовано 7 декабря, 2021 · Жалоба 13 часов назад, jenya7 сказал: UART_PrintString("UART setup done.\n"); ничего не печатает, но это уже другая головная боль. Вроди бы, UART0 нельзя использовать напрямую, т.к. он отладочный. Но можно выводить сообщения через ESP_LOGx Требуется #include "esp_log.h" ESP_LOGI("TEXT", "TEXT"); выведет "информационное" сообщение. ESP_LOGE("TEXT", "TEXT"); выведет "ошибку" и так далее. 13 часов назад, jenya7 сказал: [0;31mE (5230) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:[0m Таки ещё раз рекомендую добавить в бесконечный цикл вызов переключения контекста "vTaskDelay(1);" Без него внутренняя ОС так и будет падать в перезагрузку. Если вам нужен отдельный UART, который работает только в момент выполнения основной программы - то используйте другие пины. Либо переназначайте текущие (если это поддерживается). Документация от производителя: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/uart.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 7 декабря, 2021 Опубликовано 7 декабря, 2021 · Жалоба 1 hour ago, AlanDrakes said: Вроди бы, UART0 нельзя использовать напрямую, т.к. он отладочный Можно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 7 декабря, 2021 Опубликовано 7 декабря, 2021 (изменено) · Жалоба 4 hours ago, AlanDrakes said: Если я прожигаю ардуиновскую прогу всё прекрасно работает. UART пишет и читает, я через него настраиваю системные параметры. сейчас я пишу в Эклипсе а бинарник пытаюсь загрузить через PowerShell и что то там криво прожигается, что то я не учитываю. вот пытаюсь разобраться. я понял в чем проблема. я пытался эмулировать ардуиновский прожиг подтасовывая свои bin и elf Quote Arduino15\\packages\\esp32\\tools\\esptool_py\\3.0.0/esptool.exe" --chip esp32 elf2image --flash_mode dio --flash_freq 80m --flash_size 4MB -o "main.ino.bin" "main.ino.elf" но этого недостаточно. он к примеру вызывает Quote gen_esp32part.exe" -q "arduino_build_475973/partitions.csv" "arduino_build_475973/main.ino.partitions.bin" и еще кучу всего пробовал этим тулом Он прожигает но тоже криво. у меня есть подозрение что ардуино прожигает весь пакет -bootloader.bin, partition-table.bin, my_app.bin Изменено 7 декабря, 2021 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться