#esp32
Вопрос:
Ребята, я не мог решить, относится ли это к теме или нет, но мне кажется, что это связано с программированием.
У меня есть плата ESP32, встроенная в NodeMCU. Я подключил последовательный монитор UART2USB непосредственно к RX-TX ESP32, и первоначально он был напечатан на последовательной консоли после включения питания:
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0x00
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0008,len:8
load:0x3fff0010,len:3480
load:0x40078000,len:7804
ho 0 tail 12 room 4
load:0x40080000,len:252
entry 0x40080034
I (46) boot: ESP-IDF v2.0-3-gbef9896 2nd stage bootloader
Я последовал инструкциям Эспрессифа, чтобы создать простейшую программу helloworld:
#include <stdio.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"
void app_main(void)
{
printf("Hello world!n");
/* Print chip information */
esp_chip_info_t chip_info;
esp_chip_info(amp;chip_info);
printf("This is %s chip with %d CPU core(s), WiFi%s%s, ",
CONFIG_IDF_TARGET,
chip_info.cores,
(chip_info.features amp; CHIP_FEATURE_BT) ? "/BT" : "",
(chip_info.features amp; CHIP_FEATURE_BLE) ? "/BLE" : "");
printf("silicon revision %d, ", chip_info.revision);
printf("%dMB %s flashn", spi_flash_get_chip_size() / (1024 * 1024),
(chip_info.features amp; CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");
printf("Minimum free heap size: %d bytesn", esp_get_minimum_free_heap_size());
for (int i = 10; i >= 0; i--) {
printf("Restarting in %d seconds...n", i);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
printf("Restarting now.n");
fflush(stdout);
esp_restart();
}
Кроме того, я успешно (я полагаю) скомпилировал и прошил (без ошибок) этот пример hello world для ESP32.
После этого, однако, это печатается на последовательном мониторе:
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
flash read err, 1000
ets_main.c 371
ets Jun 8 2016 00:22:57
rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
flash read err, 1000
ets_main.c 371
ets Jun 8 2016 00:22:57
RTCWDT_RTC_RESET
продолжает повторяться. Останавливается только тогда, когда я отключаю питание.
Как я уже сказал, я не мог определиться с «актуальностью» этого вопроса, потому что я не уверен, является ли это проблемное поведение какой-то ошибкой в примере «адского мира» или происходит откуда-то еще.
Обновить
Я мог случайно стереть загрузчик, поэтому я сделал make flash
.
Это создало bootloader.bin
в папке сборки, которую я попытался прошить, но это ничего не меняет.
Я вспыхиваю с https://github.com/espressif/esp-serial-flasher.
Комментарии:
1. «make flash» загружает приложение с помощью esptool
2. Я компилирую на DeviceA и мигаю на DeviceB, поэтому
make flash
скомпилировал только двоичные файлы для меня. Хотя я понял, что , несмотряmake flash
на созданный хороший размерhello_world.bin
, мне, возможно, придется загрузитьbootloader.bin
в 0x1000,partition-table.bin
в 0x8000 и, наконецhello_world.bin
, в 0x10000. Можете ли вы подтвердить, что я прав со всем этим, пожалуйста?3. да, это то, что делает make flash. Я думаю, что если вы запустите только make, в конце будет выведена командная строка esptool, которую вы можете запустить
4. Отлично, теперь все работает так, как задумано. Возможно, вы захотите получить несколько кредитов, если вы добавите свой ответ, я с радостью приму его. Спасибо!