• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Разработка на esp8266(esp-12x) не работает blink

strong.monkey

New member
Доброго времени суток!

Заказывал на али модуль esp8266 модуль, наконец решил с ним разобраться.
собрал на макетке по схеме сборку подключил к компу, установил и настроил esp open sdk.
почитав документацию написал следующий код (стандартный blink)

Код:
#include "ets_sys.h"
#include "osapi.h"
#include "gpio.h"
#include "os_type.h"

#define user_procTaskPrio        0
#define user_procTaskQueueLen    1
#define GPIO                      BIT1
os_event_t    user_procTaskQueue[user_procTaskQueueLen];
static void user_procTask(os_event_t *events);

static os_timer_t some_timer;


void some_timerfunc(void *arg)
{
    //Do blinky stuff
    if (GPIO_REG_READ(GPIO_OUT_ADDRESS) & GPIO)
    {
        //Set GPIO2 to LOW - TURN OFF the LED
        gpio_output_set(0, GPIO, GPIO, 0);
    }
    else
    {
        //Set GPIO2 to HIGH - TURN ON the LED
        gpio_output_set(GPIO, 0, GPIO, 0);
    }
}

//Do nothing function
static void ICACHE_FLASH_ATTR  user_procTask(os_event_t *events)
{
    os_delay_us(10);
}

//Init function
void ICACHE_FLASH_ATTR user_init()
{
    // Initialize the GPIO subsystem.
    gpio_init();

    //Set GPIO2 to output mode
    PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0TXD_U, FUNC_GPIO1);

    //Set GPIO2 low
    gpio_output_set(0, GPIO, GPIO, 0);

    //Disarm timer
    os_timer_disarm(&some_timer);

    //Setup timer
    os_timer_setfn(&some_timer, (os_timer_func_t *)some_timerfunc, NULL);

    //Arm the timer, &some_timer is the pointer 1000 is the fire time in ms
    //0 for once and 1 for repeating timer
    os_timer_arm(&some_timer, 1000, 1);

    //Start os task
    system_os_task(user_procTask, user_procTaskPrio,user_procTaskQueue, user_procTaskQueueLen);
}
программа компилируется без всяких проблем

Screen Shot 2018-10-10 at 19.54.31.png
после компиляции получаю фал прошивки который лежит в firmware

Screen Shot 2018-10-10 at 19.55.20.png

Собственно перед сомой прошивкой, очистил flash память модуля

Код:
esptool.py --port /dev/tty.usbserial-A100JQM3 erase_flash
все прекрасно подключилось процесс очистки прошел без ошибок.
Потом я прочитал файл прошивки

Код:
esptool.py --port /dev/tty.usbserial-A100JQM3 read_flash 0 12000 test.bin
с помощью команды hexdump убедился что модуль чист.

Код:
hexdump -C test.bin | head -10
Screen Shot 2018-10-10 at 20.04.11.png

Потом залил новую прошивку (blink), процесс прошел без ошибок

Screen Shot 2018-10-10 at 20.11.47.png

в итоге у меня просто горит синий светодиод, хотя должен мигать. Прошивка залилась
так как я ее смог считать с модуля и просмотреть HEX

Screen Shot 2018-10-10 at 20.14.08.png

полный пример кода и Makefile тут mirkos-vf/ESP8266
 

strong.monkey

New member
надо читать документацию
https://www.espressif.com/sites/default/files/2a-esp8266-sdk_getting_started_guide_en_0.pdf
там написано что помимо прошивки есть еще три области в верхней части флеш
одну из них - параметры wifi по умолчанию Вы должны залить.
Не надо было чистить флеш вы затерли эту область
Запишите ее снова
файл esp_init_data_default.bin есть в SDK фиременном
---------------
почему вы взяли openSDK?
чем не устраивает SDK фирменное?
Перезалил я esp_init_data_default.bin, поробовал я залить опять свой blink. Таже картина сразу после заливки просто горит сини светодиод, нажимаю reset и не чего не горит. Может я не правильно залил esp_init_data_default.
------------
Почему я взял open-sdk ? наверно потому что это первое что на гуглил в интернете.
фирменное SDK это esp-idf? Мне оно на глаза попадалось но почему то я решил что оно
только для esp32
 

strong.monkey

New member
Перезалил я esp_init_data_default.bin, поробовал я залить опять свой blink. Таже картина сразу после заливки просто горит сини светодиод, нажимаю reset и не чего не горит. Может я не правильно залил esp_init_data_default.
------------
Почему я взял open-sdk ? наверно потому что это первое что на гуглил в интернете.
фирменное SDK это esp-idf? Мне оно на глаза попадалось но почему то я решил что оно
только для esp32
Долго меня не было!
Я так понимаю что какой бы я SDK не выбрал, мне все ровно нужен компилятор xtensa-lx106-elf-gcc а для прошивки нужен esptool.py?
Главное это указать размер флеш в прошивке в соответствии с адресом заливки esp_init_data_default.
На самом деле последнее мне не очень понятно именно нужно указать размер флэш? Может есть дока?
 

nikolz

Well-known member
Долго меня не было!
Я так понимаю что какой бы я SDK не выбрал, мне все ровно нужен компилятор xtensa-lx106-elf-gcc а для прошивки нужен esptool.py?
Главное это указать размер флеш в прошивке в соответствии с адресом заливки esp_init_data_default.
На самом деле последнее мне не очень понятно именно нужно указать размер флэш? Может есть дока?
Вот здесь все написано
Flashing the firmware - NodeMCU Documentation
 
Сверху Снизу