• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

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

pvvx

Активный участник сообщества
У чипа одно адресное пространство. Думаю код из ROM ни куда не грузится. А с разу от туда выполняется.
Разговор о RAM. BiosROM выделено... см. тут: http://esp8266.ru/forum/threads/dok...-nashem-sajte-popolnjaemyj-razdel.5/#post-804
0x3FFFC000 0x004000 R/W ETS system data RAM.
Там она и распределяется его mem-ками
В SDK эта область не используется, только при обращении к функциям ROM. Там сидят и брошенные на произвол судьбы буфера приема/передачи по прерываниям UARTx и т.д.
В SDK стартует своя система распределения памяти heap + стек, которая обходит эту область стороной. :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
В SDK 0.9.5 появилась либа libsmartconfig.a... и все либы построенные на open-source, включая Lwip и т.д., не имеют исходников. Т.е. стали (c) Espressif :)
Первый старт на SDK 0.9.5 и сразу баги от Espressif:

Simple WEB version: 0.1.0
SDK version: 0.9.5
Flash Header:
Number of segments: 3
SPI Flash Interface: QIO
SPI CLK: 80MHz
Flash size: 512K
Entry point: 0x40100004
Segment 1: offset: 0x40100000, size: 25900
Segment 2: offset: 0x3ffe8000, size: 2720
Segment 3: offset: 0x3ffe8aa0, size: 6072
Real Flash size: 524288 bytes
Found free IRAM: base:0x4010652c, size:6868 bytes
System memory:
data : 0x3ffe8000 ~ 0x3ffe8aa0, len: 2720
rodata: 0x3ffe8aa0 ~ 0x3ffea258, len: 6072
bss : 0x3ffea258 ~ 0x3fff20f0, len: 32408

heap : 0x3fffc000 ~ 0x9f10, len: 1073684720
Current 'heap' size: 40448 bytes
Set CPU CLK: 160 MHz

...
Врет system_print_meminfo(); и беда в том, что в данной процедуре сменили os_printf() на os_printf_plus(). Дооптимизировались :) osapi.h: USE_OPTIMIZE_PRINTF код с тал больше и глючнее - китай-оптимизация. Вместо размера heap передают адрес (heap-size) 0x3fffc000-0x9f10=1073684720

Хорошо добавили у WiFi AP:
uint8 beacon_interval; // Note: support 100 ~ 60000 ms, default 100
Как 60000 уместить в байт? :confused:

Ждем оф. патча для SDK 0.9.5 :)
 
Последнее редактирование:

Vit

Member
Решается миркухой в sot23 (типа PIC10(L)F320/322 6-Pin) Она вам отследит и отключит всё, да даст ещё ADC и жесткий WDT. Но придется пожертвовать пару uA питания :)
Возможно. Под "пузо" влезет и MSP430G2230 тоже без UART(а как хотелось), но с датчиком температуры. И есть ещё немало ценного зверья. Но можно решить одной ножкой:)
С другой стороны внутреннее сопротивление батарейки для выдачи пиковых 300 мА при не самой высокой цене предполагает не очень малый размер этой батарейки. Пока в кандидатах CR123. Но не могу пока придумать зачем мне WiFi с питанием от батарейки:) Термометры/метеостанции можно и на 434 МГц модульках делать, но оно мне и так не сильно нужно. Выключатели с ДУ как-то душа захотела, а зашел в строительный и увидал розетки с ДУ по 5 баксов - сами купились, я не виноват:)
Так что пока питаю через MCP16301 и буду искать в Вашем коде, где зацепить состояние TCP-соединения по порту для TCP/COM на ножку (или вдруг Вы великодушно подскажете;). Использовать встроенный проц в ESP01 без ног неинтересно, а насчет ESP12/13 можно думать, но и при наличии свободных ног меня пока останавливает отсутствие дебагера, а к удобствам, извините, привык:)
 
Последнее редактирование:

CHERTS

Moderator
Команда форума
В SDK 0.9.5 появилась либа libsmartconfig.a... и все либы построенные на open-source, включая Lwip и т.д., не имеют исходников. Т.е. стали (c) Espressif
Интересно, а кому можно накатать жалобу, на то что Espressif нарушает GPL и др. открытые лицензии и не выкладывает модифицированные исходники? Вроде есть такой Фонд свободного програмного обеспечения (оф. сайт FSF) и Ричард Столман, может им написать?
 
Последнее редактирование:

pvvx

Активный участник сообщества
Интересно, а кому можно накатать жалобу, на то что Espressif нарушает GPL и др. открытые лицензии и не выкладывает модифицированные исходники? Вроде есть такой Фонд свободного програмного обеспечения (оф. сайт FSF) и Ричард Столман, может им написать?
Вы это китайцам хотите сказать? :) Можно только ругаться (у нас свобода слова не запрещена :)) Кто такая Espressif ? Дурная мелкая китайская контрока и им бир-бар. Вы же видели исходники и только по ним уже ясно, что контора бабла не имеет чтобы нанять программиста, а пользуется услугами школьников или дошкольников :)
На форуме их оф.сайта аналогично - представитель фЫрмы там безграмотный.
Та и ESP8266 занимается не более 200 чел. Из них не будет и дцати, которые что-то пытаются сделать. Остальные - просто потыкать "чё есть".
http://bbs.espressif.com: Total members180
http://www.esp8266.com: Total members3300
http://esp8266.ru: Total members130
------
Обновил свалку исходников - переезд на SDK 0.9.5
 
Последнее редактирование:

pvvx

Активный участник сообщества
Использовать встроенный проц в ESP01 без ног неинтересно, а насчет ESP12/13 можно думать, но и при наличии свободных ног меня пока останавливает отсутствие дебагера, а к удобствам, извините, привык:)
Jtag говорят есть.
Так что пока питаю через MCP16301 и буду искать в Вашем коде, где зацепить состояние TCP-соединения по порту для TCP/COM на ножку (или вдруг Вы великодушно подскажете;).
Пока не до того - не работают простейшие функции system_restart() и software_reset().
Они даже иногда начинают писать, что мол грузят прошивку на своих 74880, но тут срабатывают не отключенные ими прерывания и web вызывает lwip - типа пришли ещё фреймы по TCP... :)
Аналогично и с system_deep_sleep-ами. Они просто не могут выполниться пока есть соединение и не потушена наглухо WiFi ... С такими функциями токо на заплатки и выдумывания обходных алго работать...
WDT наверно по той-же причине не пашет.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Интересно, железные отладчики у них свои или (мечтательно) какие-нибудь J-Link8/OpenOCD могут подойти?
Если что-то подойдет и всё будет, и когда закончится "пока останавливает отсутствие дебагера, а к удобствам, извините, привык", то данная тема мне будет не интересна :)
 

Vit

Member
данная тема мне будет не интересна
Просто у меня от моего зоопарка(поверьте, зверушек разных хватает) при всех удобствах голова пухнет (я железячник, а программингом приходится заниматься по необходимости), а тут и без удобств, и с LwIP имел дело только в заталкивании PPPoS в невытесняющую систему, но даже не в использовании, ну и китайские ребусы мне скорее не по зубам.
По LwIP помню, что клиент вешал свой callback на соединение и там взводился флаг, который поллился в ожидании где-то в tcp_init. Как в сервере - покопаюсь. Наверно почти так же.
 

pvvx

Активный участник сообщества
Просто у меня от моего зоопарка(поверьте, зверушек разных хватает) при всех удобствах голова пухнет (я железячник, а программингом приходится заниматься по необходимости)
Т.е. уже google не набрать "ESP8266 JTAG" ? :) http://www.esp8266.com/viewtopic.php?f=6&t=12
Есть ещё soft "Trace32_Xtensa_Simulator.zip" http://www.lauterbach.com/frames.html?pro/pro__tensilica.html
ссылка на файлы с регом там http://www.esp8266.com/viewtopic.php?f=5&t=95
Я тоже не программист и паять уже не паяю и железяки не таскаю - вышел из этого возраста :) Только для развлечения.
 
Последнее редактирование:

CHERTS

Moderator
Команда форума
Кому интересно про smartconfig, гляньте сюда, там есть приложение под андроид и интересные файлы esp_iot_sdk_smartconfig_v0.9.3\app\user\smartconfig.c (*.h) которых нет в SDK.
 

pvvx

Активный участник сообщества
Кому интересно про smartconfig, гляньте сюда, там есть приложение под андроид и интересные файлы esp_iot_sdk_smartconfig_v0.9.3\app\user\smartconfig.c (*.h) которых нет в SDK.
Это не то. Должно быть более 20 жирных процедур. Имена же даны в libsmartconfig.a.
Примерно:
deal_with_ht20 init_filtration init_listen clear_init_ht20 get_magic_control_info_ht40 find_channel_csc get_magic_control_info ..
get_prefix_control_info get_sequ_data wifi_scan_done channel_timer_cb ...
Содержит 3 си файла, из которых вышли с аналогичными именами:
sc_ht_phy.o sc_ht20.o sc_sniffer.o

beacon_interval, появившийся в установках WiFi SDK 0.9.3 работает. Не совсем точно в ms, но всё-же. Жалко что не задать больше 255 ms из-за глупостей программиста от Espressif. Это желательно в режимах малого потребления...
С детектора, видно что интервал чуть более 100 ms:
WiFi_Beacon.gif
Нижняя - это передача модулем файла на чуть более 600кбайт/сек. Верхние две - в разных режимах phy (11n,b,g) (по длительности пакета передачи..).
 
Последнее редактирование:

Algis

New member
Разработка ‘библиотеки’ малого Webсервера на ESP8266..
Большое спасибо уважаемый pvxx за интереснейший проект, особую тщательность подхода и законченность всех начинаний.
Поставил тестовый проект в "Unofficial Developer Kit" - все скомпилировалось и заработало с пол пинка. Думаю использовать в системе своего дома...
Если нужна моя помощь как бывшего электронщика а теперь web разработчика, напишите.
 

Algis

New member
Кстати, в шаблонах страниц, например wifi.htm, index.htm... немало ошибок разметки, и немножко можно умешить размеры фаилов. Если нужно, могу поправить и выложить.
 

A_D

Active member
Доброго времени суток!
Столкнулся с такой забавной проблемой, возможно кто либо сталкивался или есть догадки в чем может быть причина (я только могу предположить что модуль таки подгорел как то, но об этом ниже..):
- Беру последний вариант свалки из этой темы, компилирую, не меняя ничего (в дальнейшем пробовал только частоту на 80МГц выставлять - результат тот же) - зашиваю из Эклипса напрямую командой flash. Все успешно заливается, модуль стартует и появляется wifi AP - при попытке подключится к ней модуль начинает значительно нагреваться и собственно ничего не конектится. В отладочный интерфейс сыпет такую информацию и на этом застывает:
Simple WEB version: 0.1.0
SDK version: 0.9.5
Flash Header:
Number of segments: 3
SPI Flash Interface: QIO
SPI CLK: 40MHz
Flash size: 512K
Entry point: 0x40100004
Segment 1: offset: 0x40100000, size: 26028
Segment 2: offset: 0x3ffe8000, size: 2744
Segment 3: offset: 0x3ffe8ac0, size: 4400
Real Flash size: 524288 bytes
Found free IRAM: base:0x401065ac, size:6740 bytes
System memory:
data : 0x3ffe8000 ~ 0x3ffe8ab8, len: 2744
rodata: 0x3ffe8ac0 ~ 0x3ffe9bf0, len: 4400
bss : 0x3ffe9bf0 ~ 0x3fff1a80, len: 32400
heap : 0x3fff1a80 ~ 0x3fffc000, len: 42368
Current 'heap' size: 42096 bytes
Set CPU CLK: 160 MHz
WiFi mode:3 chl:1 phy:3 dhcp:1/1
AP:ESP8266[7] hiden(0) psw:0123456789 au:0 chl:1 maxcon:4 beacon:100
ip:192.168.4.1 gw:192.168.4.1 msk:255.255.255.0 mac:1a:fe:34:98:d5:84
DHCP ip:192.168.4.2..192.168.4.6
ST:HOMEAP psw:0123456789 b:0 ff:ff:ff:ff:ff:ff ac:0
ip:0.0.0.0 gw:0.0.0.0 msk:0.0.0.0 mac:18:fe:34:98:d5:84
sleep:0
sleep disable
Disk init: 33 files, addr = 0x0001e000
TCP Server init on port 80 - Ok
Max connection 99, time waits 5 & 5, min heap size 14528
TCP Server start - Ok
TCP Server init on port 12345 - Ok
Max connection 1, time waits 0 & 0, min heap size 14528
TCP Server start - Ok
mode : sta(18:fe:34:98:d5:84) + softAP(1a:fe:34:98:d5:84)
add if0
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
add if1
pm close 0 0 0/418391
bcn 100
Test rtc memory retention... changes, new write

Пробовал полностью обнулить все во flash памяти - прошивал через FLASH_DOWNLOAD_TOOLS_v0.9.3.1 как показано на скриншоте ниже - результат тот же.

При этом, если я к примеру беру компилирую прошивку АТ команд для 0.9.4 и заливаю её стандартным способом через эклипс - модуль стартует, к сетке могу подключится и он вполне работает и АТ командами можно выплюнуть страничку браузеру.

Питание нормальное, смотрел осциллографом - при попытке подключения появляется не надолго оч малый шумок и потом пропадает. само питание от USB порта, через LM1117 с керамикой. Провалов в питании не наблюдаю.

Что это может быть, я что то упустил? Почему на старой прошивке работает а на новой нет ? Пробовал так же заливать wifi сниффера прошивку - запускается, выплевывает данные и модуль еле теплый.
Память на модуле не перепаивал, стоит стандартная.
 

Вложения

  • 33.7 KB Просмотры: 47

pvvx

Активный участник сообщества
Кстати, в шаблонах страниц, например wifi.htm, index.htm... немало ошибок разметки, и немножко можно умешить размеры фаилов. Если нужно, могу поправить и выложить.
HTM страницы вообще не оптимизированы. Я их дополнял по мере тестов кое-как и не смотрел что там. Расчет на то, что их напишет каждый сам для своего проекта. Там не только мелкие ошибки, но и глобальные - неверно используются функции установки WiFi и сохранений.
Дальнейшее развитие "библиотеки" остановилось по причине неопределенности тематики саго web-сервера. Необходим переход под конкретизацию задачи и целей web-сервера под конкретный проект. А пока это просто набор тестов. Я его и использую как среда для тестирования и проверок всего что не попадется в теме ESP8266...
За всё время никто не дал никаких предложений, кроме как сделать на его основе TCP2COM. Но для проекта TCP2COM там очень много лишнего :) и большая беда с программными таймерами. Можно использовать свой аппаратный таймер, для того там и дан и протестирован пример его реализации. Но его не задействовал, по той-же причине - не известно что надо вообще от web-сервера без конкретизации целей проекта.
Аналогично и не реализовано никаких процедур с задействованием "статических буферов" в памяти. Как пример - сканирование сети WiFi или перенаправление printf в буфера для последующего показа на Web странице... Ведь не ясно, сколько надо и как будет использоваться память в конкретном проекте, а вставлять это для "понта" не вижу смысла.
Сейчас обсуждается (стоит) немного другая задача – вообще оказаться от библиотек Espressif. Но времени на это пока нет.:(
Основные задачи, положенные в начале составления данной свалки решены. Они были в том, чтобы дать возможность другим реализовать необходимые функции на основе примера. Они уже частично используются в проектах других, таких как Lua и т.д.
Столкнулся с такой забавной проблемой
.....
Что это может быть, я что то упустил? Почему на старой прошивке работает а на новой нет ?
Там включено несколько тестов, в том числе значений в области "для пользователя" RTC_RAM. Снимите его. Он сделан для проверки, используется или нет область памяти RTC, которая "по докам" отдана пользователю. Возможно значения от туда используются либами, но не объявлено (для того он и сделан, чтобы это выявить и найти кто туда лезет). Может что-то ещё. Например на сегодня ещё не определено, почему у модулей такой разброс по показаниям vdd3.3V, а от него зависит "мощность" передатчика. К примеру модуль ESP-12, который дает меньшие показания у меня вообще не греется никак, а ESP-01 - как утюг. По схеме там может быть различие только у номинала резистора (вроде с 31 ноги) и разводке проводников на плате (в первую очередь надо поглядеть фронты от генератора "кварца").
Основные аппаратные различия в 0.9.4 и 0.9.5 в использовании кеща flash. В 0.9.5 это используется активнее и во время исполнения ПО чтений flash больше.
Но скорее всего у вас проявляются просто различия в настройках WiFi модуля...
В 0.9.5 система его старта сменилась.
И не понятно это: Test rtc memory retention... changes, new write
Это первый старт после сброса питания? (Некоторые режимы sleep тоже рубят питание у чипа и RTC память сбрасывается, т.к. на вывод его питания ничего не подведено - для продолжения исследования что там творится у Espressif нужен модуль с выводом питания RTC, а таких пока нет, как и времени мне паять туда проводники...)
 
Последнее редактирование:

evh

New member
Дальнейшее развитие "библиотеки" остановилось по причине неопределенности тематики саго web-сервера. Необходим переход под конкретизацию задачи и целей web-сервера под конкретный проект. А пока это просто набор тестов. Я его и использую как среда для тестирования и проверок всего что не попадется в теме ESP8266... За всё время никто не дал никаких предложений, кроме как сделать на его основе TCP2COM. ....
Давайте конкретно сделаем подобное - http://homes-smart.ru/index.php/obo...chik-na-baze-esp8266-dlya-servisa-narodmon-ru.

И еще, у меня не получается собрать вашу сборку под линуксом, при помощи make:

$ make
make[1]: Вход в каталог `/home/evh/workspace/Web_base/web'
DEPEND: CC -M wifi.c
DEPEND: CC -M web_utils.c
DEPEND: CC -M web_srv.c
DEPEND: CC -M web_int_vars.c
DEPEND: CC -M web_int_callbacks.c
DEPEND: CC -M WEBFS1.c
DEPEND: CC -M uart.c
DEPEND: CC -M tcp_terminal.c
DEPEND: CC -M tcp_srv_conn.c
DEPEND: CC -M flash_header.c
DEPEND: CC -M flash_eep.c
DEPEND: CC -M flash.c
make[1]: Выход из каталога `/home/evh/workspace/Web_base/web'
make[1]: Вход в каталог `/home/evh/workspace/Web_base/web'
CC flash.c
CC flash_eep.c
CC flash_header.c
CC tcp_srv_conn.c
In file included from ../include/lwip/snmp.h:42:0,
from include/espconn_add.h:15,
from tcp_srv_conn.c:10:
../include/lwip/ip_addr.h:44:8: error: redefinition of 'struct ip_addr'
struct ip_addr {
^
In file included from /opt/Espressif/ESP8266_SDK/include/user_interface.h:11:0,
from tcp_srv_conn.c:9:
/opt/Espressif/ESP8266_SDK/include/ip_addr.h:6:8: note: originally defined here
struct ip_addr {
^
....
cc1: all warnings being treated as errors
make[1]: *** [.output/eagle/debug/obj/tcp_srv_conn.o] Ошибка 1
make[1]: Выход из каталога `/home/evh/workspace/Web_base/web'
make: *** [.subdirs] Ошибка 2

Где и что нужно подправить?
 
Сверху Снизу