Разработка ‘библиотеки’ малого webсервера на esp8266.

pvvx

Активный участник сообщества
После соединения GPIO0 и DTR не напрямую а через 1ком, а RST с RTS через диод, прошиватся стал гораздо стабильнее.
Диод, чтобы модуль мог сам себя сбрасывать после deep_cleep. Он выводит нолик в GPIO16 (XPD_DCDC по доку, нога 8 чипа) и сбрасывает RESET (EXT_RSTB, нога 32), если они соединены через резистор.

https://github.com/esp8266/esp8266-wiki/wiki/Pin-definition
 

Algis

New member
Диод, чтобы модуль мог сам себя сбрасывать после deep_cleep. Он выводит нолик в GPIO16 (XPD_DCDC по доку, нога 8 чипа) и сбрасывает RESET (EXT_RSTB, нога 32), если они соединены через резистор.
В модуле ESP-03 для этого резистора есть посадочное место, но он не распаян.
 

pvvx

Активный участник сообщества
Thank you for your help code no longer works properly I would still ask whether it is possible to upload the firmware ? so that the pass VEBFiles thanks.
Мы не используем espconn. espconn имеет много ошибок и ограничений.
Прошивка не грузится по HTTP. Это не требуется.
We do not use espconn. espconn has many bugs and limitations.
Firmware is not upload by HTTP. This not required. (I cannot write in English language и не хочу :))
 

pvvx

Активный участник сообщества
В свалку добавил тестовый вывод мелкого WAV файла c данными ADC (2.62 килобайта). ADC стандартно, через read_sar_dout() дает 14 бит.
Скорость полу-программного АПЦ у ESP8266 пока ~20..22ksps.
1kHz_sq.gif 100Hz_C.gif
1кГц меандр и 100Гц через конденсатор. :)
 

folny

New member
It seemed to me that one time you had the ability to upload your project file one piece 512kb but I guess I was wrong, still try to add your web interface to this project http://www.ulrichradig.de/home/index.php/dmx/wlan-art-net-node but I have a problem with the Makefile, you can probably still advise me what I should do that compilation was carried out right ?.

00:35:03 **** Build of configuration Default for project Web_base ****
mingw32-make.exe -f C:/Espressif/examples/Web_base/Makefile all
mingw32-make[1]: Entering directory 'C:/Espressif/examples/Web_base/app'
mingw32-make[2]: Entering directory 'C:/Espressif/examples/Web_base/app/user'
DEPEND: c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -M -Os -g -O2 -Wpointer-arith -Wundef -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -D__ets__ -DICACHE_FLASH -DLWIP_OPEN_SRC -DPBUF_RSV_FOR_WLAN -DEBUF_LWIP -I include -I ./include -I ../include -I ./ -I ../../include -I ../../include/eagle artnet.c
mingw32-make[2]: Leaving directory 'C:/Espressif/examples/Web_base/app/user'
mingw32-make[2]: Entering directory 'C:/Espressif/examples/Web_base/app/user'
c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -Os -g -O2 -Wpointer-arith -Wundef -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -D__ets__ -DICACHE_FLASH -DLWIP_OPEN_SRC -DPBUF_RSV_FOR_WLAN -DEBUF_LWIP -I include -I ./include -I ../include -I ./ -I ../../include -I ../../include/eagle -o .output/eagle/debug/obj/artnet.o -c artnet.c
artnet.c: In function 'artnet_recv_opoutput':
artnet.c:245:3: error: 'for' loop initial declarations are only allowed in C99 mode
for(uint16_t tmp = 0;tmp<513;tmp++)
^
artnet.c:245:3: note: use option -std=c99 or -std=gnu99 to compile your code
../../Makefile:159: recipe for target '.output/eagle/debug/obj/artnet.o' failed
mingw32-make[2]: *** [.output/eagle/debug/obj/artnet.o] Error 1
mingw32-make[2]: Leaving directory 'C:/Espressif/examples/Web_base/app/user'
../Makefile:148: recipe for target '.subdirs' failed
mingw32-make[1]: *** [.subdirs] Error 2
mingw32-make[1]: Leaving directory 'C:/Espressif/examples/Web_base/app'
C:/Espressif/examples/Web_base/Makefile:148: recipe for target '.subdirs' failed
mingw32-make.exe: *** [.subdirs] Error 2

00:35:05 Build Finished (took 1s.260ms)
 

pvvx

Активный участник сообщества
Кстати - никто не разбирался с внутренним дельта-сигма преобразователем....
Случайно нашел, в своем компе :eek:- сохранил от куда-то в том году... :) :
Код:
/******************************************************************************
* MODULEName : set_sigma MODULE

EACH PIN CAN CONNET TO A SIGMA-DELTA , ALL PINS SHEARS THE SAME SIGMA-DELTA SOURCE.

THE TARGET DUTY AND FREQUENCY CAN BE MODIFIED VIA THE REG ADDR GPIO_SIGMA_DELTA

THE TARGET FREQUENCY IS DEFINED AS:

FREQ = 80,000,000/prescale * target /256  HZ,     0<target<128
FREQ = 80,000,000/prescale * (256-target) /256  HZ,     128<target<256
target: duty ,0-255
prescale: clk_div,0-255
so the target and prescale will both affect the freq.


YOU CAN DO THE TEST LIKE THIS:
1. INIT :  sigma_delta_setup(PERIPHS_IO_MUX_MTDI_U,12,FUNC_GPIO12);
2. USE 312K:   set_sigma_duty_312KHz(2);
OR 2. SET VAL:  set_sigma_target(uint8 target) AND  set_sigma_prescale

3. DEINIT AND DISABLE: sigma_delta_close(uint32 GPIO_NUM), eg.sigma_delta_close(2)

*******************************************************************************/
#include "osapi.h"
#include "c_types.h"
#include "ets_sys.h"
#include "eagle_soc.h"
#include "gpio.h"

#define GPIO_PIN_ADDR(i) (GPIO_PIN0_ADDRESS + i*4)
#define GPIO_SIGMA_DELTA      0x60000368  //defined in gpio register.xls

#define GPIO_SIGMA_DELTA_SETTING_MASK  (0x00000001ff)

#define GPIO_SIGMA_DELTA_ENABLE  1
#define GPIO_SIGMA_DELTA_DISABLE   (~GPIO_SIGMA_DELTA_ENABLE)
#define GPIO_SIGMA_DELTA_MSB                     16
#define GPIO_SIGMA_DELTA_LSB                      16
#define GPIO_SIGMA_DELTA_MASK                  (0x00000001<<GPIO_SIGMA_DELTA_LSB)
#define GPIO_SIGMA_DELTA_GET(x)                 (((x) & GPIO_SIGMA_DELTA_MASK) >> GPIO_SIGMA_DELTA_LSB)
#define GPIO_SIGMA_DELTA_SET(x)                  (((x) << GPIO_SIGMA_DELTA_LSB) & GPIO_SIGMA_DELTA_MASK)


#define GPIO_SIGMA_DELTA_TARGET_MSB  7
#define GPIO_SIGMA_DELTA_TARGET_LSB  0
#define GPIO_SIGMA_DELTA_TARGET_MASK                  (0x000000FF<<GPIO_SIGMA_DELTA_TARGET_LSB)
#define GPIO_SIGMA_DELTA_TARGET_GET(x)                 (((x) & GPIO_SIGMA_DELTA_TARGET_MASK) >> GPIO_SIGMA_DELTA_TARGET_LSB)
#define GPIO_SIGMA_DELTA_TARGET_SET(x)                  (((x) << GPIO_SIGMA_DELTA_TARGET_LSB) & GPIO_SIGMA_DELTA_TARGET_MASK)


#define GPIO_SIGMA_DELTA_PRESCALE_MSB  15
#define GPIO_SIGMA_DELTA_PRESCALE_LSB  8
#define GPIO_SIGMA_DELTA_PRESCALE_MASK  (0x000000FF<<GPIO_SIGMA_DELTA_PRESCALE_LSB)
#define GPIO_SIGMA_DELTA_PRESCALE_GET(x)                 (((x) & GPIO_SIGMA_DELTA_PRESCALE_MASK) >> GPIO_SIGMA_DELTA_PRESCALE_LSB)
#define GPIO_SIGMA_DELTA_PRESCALE_SET(x)                  (((x) << GPIO_SIGMA_DELTA_PRESCALE_LSB) & GPIO_SIGMA_DELTA_PRESCALE_MASK)

/******************************************************************************
* FunctionName : sigma_delta_setup
* Description  : Init Pin Config for Sigma_delta , change pin source to sigma-delta
* Parameters   : uint32 GPIO_MUX, GPIO MUX REG ,DEFINED IN EAGLE_SOC.H, e.g.: PERIPHS_IO_MUX_MTCK_U
         uint32 GPIO_NUM, GPIO NUM ACCORDING TO THE MUX NUM , e.g.: 13 for MTCK
         uint32 GPIO_FUNC, GPIO PIN FUNC , DEFINED IN EAGLE_SOC.H , e.g.: FUNC_GPIO13
* Returns      : none
*******************************************************************************/
void ICACHE_FLASH_ATTR
sigma_delta_setup(uint32 GPIO_MUX,uint32 GPIO_NUM,uint32 GPIO_FUNC)
{
    //============================================================================
    //STEP 1: SIGMA-DELTA CONFIG;REG SETUP
    GPIO_REG_WRITE(GPIO_SIGMA_DELTA,
                                                        (GPIO_REG_READ(GPIO_PIN_ADDR(GPIO_ID_PIN(GPIO_SIGMA_DELTA_NUM))) &(~GPIO_SIGMA_DELTA_SETTING_MASK))|
                                                          GPIO_SIGMA_DELTA_SET(GPIO_SIGMA_DELTA_ENABLE)|
                                                          GPIO_SIGMA_DELTA_TARGET_SET(0x00)|
                                                          GPIO_SIGMA_DELTA_PRESCALE_SET(0x00) );

    //============================================================================

    //STEP 2: PIN FUNC CONFIG :SET PIN TO GPIO MODE AND ENABLE OUTPUT
    PIN_FUNC_SELECT(GPIO_MUX, GPIO_FUNC);
    gpio_output_set(0,0,0x1<<GPIO_NUM,0);

    //============================================================================

    //STEP 3: CONNECT SIGNAL TO GPIO PAD
    GPIO_REG_WRITE(GPIO_PIN_ADDR(GPIO_ID_PIN(GPIO_NUM)),
                                                            GPIO_REG_READ(GPIO_PIN_ADDR(GPIO_ID_PIN(GPIO_NUM)))|
                                                            GPIO_PIN_SOURCE_SET(  SIGMA_AS_PIN_SOURCE )                     );
    //============================================================================
    //ets_printf("test reg gpio mtdi : 0x%08x \n",GPIO_REG_READ(GPIO_PIN_ADDR(GPIO_ID_PIN(GPIO_NUM))));

}
/******************************************************************************
* FunctionName : sigma_delta_close
* Description  : DEinit Pin ,from Sigma_delta mode to GPIO input mode
* Parameters   : uint32 GPIO_NUM, GPIO NUM ACCORDING TO THE MUX NUM , e.g.: 13 for MTCK
* Returns      : none
*******************************************************************************/
void ICACHE_FLASH_ATTR
    sigma_delta_close(uint32 GPIO_NUM)
{

    //============================================================================
    //STEP 1: SIGMA-DELTA DEINIT
    GPIO_REG_WRITE(GPIO_SIGMA_DELTA,
                                                        (GPIO_REG_READ(GPIO_PIN_ADDR(GPIO_ID_PIN(GPIO_SIGMA_DELTA_NUM))) &(~GPIO_SIGMA_DELTA_SETTING_MASK))|
                                                          GPIO_SIGMA_DELTA_SET(GPIO_SIGMA_DELTA_DISABLE)|
                                                          GPIO_SIGMA_DELTA_TARGET_SET(0x00)|
                                                          GPIO_SIGMA_DELTA_PRESCALE_SET(0x00) );

    //ets_printf("test reg gpio sigma : 0x%08x \n",GPIO_REG_READ(GPIO_PIN_ADDR(GPIO_ID_PIN(GPIO_SIGMA_DELTA_NUM))));
    //============================================================================

    //STEP 2: GPIO OUTPUT DISABLE
    gpio_output_set(0,0,0,0x1<<GPIO_NUM);
    //============================================================================

    //STEP 3: CONNECT GPIO TO PIN PAD
    GPIO_REG_WRITE(GPIO_PIN_ADDR(GPIO_ID_PIN(GPIO_NUM)),
                                                            GPIO_REG_READ(GPIO_PIN_ADDR(GPIO_ID_PIN(GPIO_NUM)))|
                                                            GPIO_PIN_SOURCE_SET(  GPIO_AS_PIN_SOURCE )                     );
    //============================================================================
}
/******************************************************************************
* FunctionName : set_sigma_target
* Description  : SET TARGET DUTY FOR SIGMA-DELTA
* Parameters   : uint8 target, DUTY NUM , 1BYTE , DUTY RANGE : 0-255
* Returns      : none
*******************************************************************************/
void ICACHE_FLASH_ATTR
    set_sigma_target(uint8 target)
{
    //set sigma signal duty target
        GPIO_REG_WRITE(GPIO_SIGMA_DELTA,
                                                        (GPIO_REG_READ(GPIO_PIN_ADDR(GPIO_ID_PIN(GPIO_SIGMA_DELTA_NUM))) &(~GPIO_SIGMA_DELTA_TARGET_MASK))|
                                                          GPIO_SIGMA_DELTA_TARGET_SET(target));
}
/******************************************************************************
* FunctionName : set_sigma_prescale
* Description  : SET SIGMA-DELTA SIGNAL CLK PRESCALE(CLE_DIV)
* Parameters   : uint8 prescale, CLK_DIV , 0-255
* Returns      : none
*******************************************************************************/
void ICACHE_FLASH_ATTR
    set_sigma_prescale(uint8 prescale)
{
    //set sigma signal clk prescale(clk div)
        GPIO_REG_WRITE(GPIO_SIGMA_DELTA,
                                                        (GPIO_REG_READ(GPIO_PIN_ADDR(GPIO_ID_PIN(GPIO_SIGMA_DELTA_NUM))) &(~GPIO_SIGMA_DELTA_PRESCALE_MASK))|
                                                          GPIO_SIGMA_DELTA_PRESCALE_SET(prescale) );

}
/******************************************************************************
* FunctionName : set_sigma_duty_312KHz
* Description  : 312K CONFIG EXAMPLE
* Parameters   : uint8 duty, TARGET DUTY FOR 312K,  0-255
* Returns      : none
*******************************************************************************/
void ICACHE_FLASH_ATTR
    set_sigma_duty_312KHz(uint8 duty)
{

    uint8 target = 0,prescale=0;
    target = (duty>128)?(256-duty):duty;
    prescale = (target==0)?0:(target-1);

    //freq = 80000 (khz) /256 /duty_target * (prescale+1)
    set_sigma_target(duty);//SET DUTY TARGET
    set_sigma_prescale(prescale);//SET CLK DIV

}
 

pvvx

Активный участник сообщества
Пополнение "свалки" тестом Sigma Delta OUT.
/web.cgi?gpio13.sgs=0..0xFF - установить GPIO13 на вывод Sigma Delta и задать отношение
/web.cgi?gpio13.sgn=0..0xFF - изменить отношение сигнала Sigma Delta
/web.cgi?gpio13.sgс=0 - установить функции GPIO13 на состояние по умолчанию и выключить Sigma Delta
+ Много изменено с gpio - теперь проще шевелить любым GPIO (хоть оторвать от flash, вызвав глюк)
sigma_delta.gif
При выводе сигнала Sigma Delta на выход, если у модуля плохая разводка и кривые длинные провода, то WiFi "глохнет" от возникающих на них помехах... :)
 

pvvx

Активный участник сообщества
Вышла SDK 0.9.6 beta 1 http://bbs.espressif.com/viewtopic.php?f=7&t=205
В нем новый "document\English\2C-SDK-Espressif IoT SDK Programming Guide_v0.9.6_beta1.pdf"
Исходники переехали на SDK 0.9.6 b1:
Simple WEB version: 0.1.0
SDK version: 0.9.6(b1)
 
Последнее редактирование:

pvvx

Активный участник сообщества
По памяти в ESP8266 и SDK 0.9.6.

По умолчанию, если не трогать ld файлы, тогда мы имеем примерно такое распределение System memory:

data len: 2744
rodata len: 4692
bss len: 34064
heap len: 40408

Из них, всего, в rodata 2.5 килобайта разных текстовых строк и переменных для Web, т.к. большинство стандартных процедур не могут работать с кешируемой частью данных в секции ICACHE_RODATA_ATTR. В ICACHE_RODATA запихнул туда как можно больше, иначе размер rodata отъедает от heap. Всё нельзя - скорость обращения к таким данным тоже падает.

Ещё не до конца заполнена iram– там пустого чуть более 6 килобайт.

После старта модуля, в user_init() уже Current 'heap' size: 40136 bytes.

После инициализации SDK 0.9.6 и пару дескрипторов соединений в LwIP– уже heapsize: 37152. C SDK 0.9.5 было на килобайт больше (в 0.9.6 наворотили каких-то глупых даныx в rodat-у и новых патчей, отжирающих heap).

37 килобайт - это как-бы максимум (без espconn(!)), далее, при TCP соединениях память динамически отъедается от этого значения на время обработки HTTP/TCP/UDP запросов. Самый жручий - TCP2UART, т.к. необходим буфер приема к 6 килобайтам (иначе потеря данных TCP стека, если клиент ливанет данными за раз более 5 кило, а UART не успеет передавать) и буфер передачи (динамически выделяется до 4-х килобайт (2xMSS) для передачи принятых символов с UART, если их не успевает принять клиент). А жручих по причине что эти буфера могут быть открыты надолго – UART тормоз. В итоге, когда всё забито, оно отъедает до 10 килобайт.

При передаче/приеме файлов каждый запрос/ответ сервера может тоже временно отъесть ещё до 10 кило, но это динамически – отъел, обработал, передал, убил буфер, не отдавая управления другим процедурам. Пока одновременно не встречалось таких отъеданий одновременно с общим остатком heap менее 18 килобайт. Но можно организовать до 16, а при обработке может остаться до 8. Если heap менее 16 кило - сервер не будет открывать соединения (обидится, пока heap не превысит эти 16 кило установленные в его настройках).

Остаток памяти всегда может быть заполнен TIME_WAIT структурами у LwIP.

Вот и вся память. :) На нормальное исполнение Lua и прочее, типа C++, там нет ни одного лишнего байта. Но их можно организовать, если выключить и не пользоваться коммуникациями по WiFi – использовать чип как микроконтроллер без связи. Что и наблюдается в NodeMCU и прочих проектах - там основная задача настроить WiFi и иногда принять/передать один байт, без гарантии доставки и без сервиса. :)
Немного увеличить память можно отъев от bss, т.к. пока стек не сильно используется. Но для более сложных проектов, с наличием большего сервиса, надо ставить внешний MCU с памятью поболее и распределять функционирование между ними...
 
Последнее редактирование:

Andy Korg

Moderator
Команда форума
... большинство стандартных процедур не могут работать с кешируемой частью данных в секции ICACHE_RODATA_ATTR....
Подскажите пожалуйста - планирую засунуть в ICACHE_FLASH_ATTR структуры описывающие мои web-переменные (типа ~wifi.ap.ssid~) и уже с ними работать. Получается, что это невозможно? Лучше делать так же как у вас в web_callback?
 

pvvx

Активный участник сообщества
Подскажите пожалуйста - планирую засунуть в ICACHE_FLASH_ATTR структуры описывающие мои web-переменные (типа ~wifi.ap.ssid~) и уже с ними работать. Получается, что это невозможно? Лучше делать так же как у вас в web_callback?
Это как данные в ICACHE_FLASH ?
Из ICACHE_RODATA приходится копировать переменные в обычную память, а потом уже отдавать их другим процедурам.
Но и при копировании возникает масса условий, чтобы не вызывать "протектед". Копировать должна процедура из ROM или iram + стартовые адреса буфера и источника должны быть кратными 4-м и длина данных не должна превышать определенный размер (иначе кэш не справится). Это как с процедурой чтения flash от Espressif (возможно это на ней и повязано) и очень "намудрено" с механизмом кеширования flash...
Спросите у jcmvbkbc - он должен досконально знать механизм кеширования у данного проца. Я пока туда сильно не лез и не задавался целью исправить эту кривую ситуацию с данными в flash (на это пока нет времени)...
 
Последнее редактирование:

Andy Korg

Moderator
Команда форума
Из ICACHE_RODATA приходится копировать переменные в обычную память, а потом уже отдавать их другим процедурам.
Кажется теперь понял. Думал что имеется возможность работать с данными во внешеней флаш по аналогии с реализацией в avr, если вам это о чем то говорит. А раз так то и фиг с ними с этими структурами во флаш, буду расширять дерево в web_callback
 

pvvx

Активный участник сообщества
Кажется теперь понял. Думал что имеется возможность работать с данными во внешеней флаш по аналогии с реализацией в avr, если вам это о чем то говорит. А раз так то и фиг с ними с этими структурами во флаш, буду расширять дерево в web_callback
Тут возникает ветка: или "мало памяти" или размер кода и низкая производительность.
Возможно использовать оверлейный механизм в iram. Но для этого надо сделать специальную среду. Я пока не знаю, как для этого конфигурировать транслятор.
---
Кто знает, что за AirM2M esp8266 от www.airm2m.com http://www.google.ru/webhp?q=AirM2M esp8266
Пример http://wenku.baidu.com/view/0c1ec976b7360b4c2f3f6451?fr=prin
У них и свои модули...
http://wenku.baidu.com/view/c2390236312b3169a551a45d.html?re=view
 
Последнее редактирование:

Andy Korg

Moderator
Команда форума
...please can you help me I have a problem with this line "for(uint16_t tmp = 0;tmp<513;tmp++)" in the library artnet.c there is a library.
Unclear in what a problem.. Declaration variable tmp? If yes, then remove variable "tmp" of the cycle. Like this:
Код:
uint16_t tmp = 0;
for(;tmp<513;tmp++);
 
Последнее редактирование:

pvvx

Активный участник сообщества
Опять дорабатывал TCP2UART.
Нашел багу. Забыл, что CLEAR_PERI_REG_MASK() это составная команда и между чтением and маской и записью и туда пролазят прерывания и успевают менять ....
Так всё хорошо:
Код:
    ets_intr_lock(); // Или ETS_UART_INTR_DISABLE(); но оно медленнее - там больше команд.
    CLEAR_PERI_REG_MASK(UART_INT_ENA(UART0), UART_TXFIFO_EMPTY_INT_ENA); // запретить прерывание по передаче fifo tx
    ets_intr_unlock(); // ETS_UART_INTR_ENABLE();
Соединил RTS-CTS и TX-RX и погонял файлы в дцать мегобайт - скорость около 200 кбайт в секунду туда-сюда (в одну сторону 200 и в другую 200 - полный дуплекс - предел ESP8266 со стандартной flash и выключенными отладочными сообщениями, при Winbond flash - выходит ещё быстрее...) при скорости UART oт 3Mbaud и до 10Mbaud включительно. Далее выходы UART халтурят.
И, к примеру, при ровно 1MBaud скорость падает до 1.5 раза (в зависимости от расчетной к 1Mbaud), т.к. происходит расхождение подтверждения TCP переданных пакетиков принятыми и т.д. из-за разных размеров передающих-принимающих буферов. Без RTS-CTS расходятся больше, т.к. RTS-CTS частично синхронизирует поток и без RST-CTS будут выпадения.
Заниматься оптимизацией размеров буферов под синхронизацию кратности скорости TCP и UART не собираюсь - нет никакого смысла это делать под тест приема и передачи одного и того-же.

Закинул поправленную "свалку" web-а.
 
Последнее редактирование:

mcmega

Member
Ругается при сборке на 147 строку Makefile @set -e; $(foreach d, $(SUBDIRS), $(MAKE) -C $(d);)
Ещё вопрос, как записать прошивку прямо с Эклипса? ругается на 135 строку Makefile (может настройки COM нужно задать где то)?
 

pvvx

Активный участник сообщества
Ругается при сборке на 147 строку Makefile @set -e; $(foreach d, $(SUBDIRS), $(MAKE) -C $(d);)
У меня ошибок нет.
Ещё вопрос, как записать прошивку прямо с Эклипса?
wbopt.gif
FlashAll
ругается на 135 строку Makefile (может настройки COM нужно задать где то)?
А в том-же Makefile: строка 7: ESPOPTION ?= -p COM6 -b 230400

UDK v1.0.10 (16.02.2015) ещё не ставил. Там по описанию только примеры новые, esptool.py не леченная...
Счас проверю с 1.0.10 - всё c ней пашет, но опция FlashCode подтирает "web-диск" на малых flash: esptool в той сборке пока не леченная.
 
Последнее редактирование:

mcmega

Member
Да, я установил всё как написано в первом посте http://esp8266.ru/forum/threads/moja-sborka-espressif-devkit.32/
вчера днём игрался с Вашей дневной версией. Никаких проблем не было. Скачал последнюю и появились эти ошибки при сборке:
Никаких изменений в проект не вносил. Что делать?
 
Последнее редактирование:
Сверху Снизу