• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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
 
Сверху Снизу