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

SDK 1.4.0 (18/09/2015)

pvvx

Активный участник сообщества
http://bbs.espressif.com/viewtopic.php?p=3756#p3756
Resolved Issues(Bugs below are eligible for Bug Bounty Program):
  1. Espconn may fail to download big chunk of data (FOTA).
  2. Invalid TCP data sent issue.
  3. Fatal exceptions occur when change WiFi mode in WiFi scan callback.
  4. WiFi compatibility problem of special network card.
  5. Deep sleep may appear high current under certain circumstances.
Optimization:
  1. Add a new method to check memory leaks (API : system_show_malloc).
  2. Add print information when exception happens.
  3. Resolve the problem of os_timer_disarm.
  4. Optimize DHCP server, add API to set up the lease time of DHCP server. More details are in the “Added APIs”.
  5. Add event “EVENT_STAMODE_DHCP_TIMEOUT” for the DHCP timeout handling mechanism.
  6. Optimize handling of the reception of data and ZWP message.
  7. Add new APIs to support SSL bidirectional authentication. More details are in the “Added APIs”.
  8. Add new APIs to set up SSL certificates and encryption keys. espconn_secure_set_default_certificate & espconn_secure_set_default_private_key should be called to set SSL certificate and secure key, if ESP8266 runs as SSL server. More details are in the “Added APIs”.
  9. Optimize the process of FOTA (firmware upgrade through Wi-Fi).
  10. Optimize mDNS, and resolve the problem that in certain case the ESP8266 softAP can not work in the sta+AP mode.
  11. Release mesh as a lib in the esp_iot_sdk, and do not provide SDK of the mesh version any more.
  12. Optimize mesh’s handling of UDP packets.
  13. Optimize checking of the validity of the mesh API’s parameters.
  14. Add an API to set up the largest hop of mesh. For detailed information, go to mesh instructions.
  15. Optimize the process of powering up and booting to shorten booting time by 20 ms.
  16. Optimize the function of automatic frequency offset calibration.
  17. Optimize the function of sniffer.
  18. Strengthen reliability of the checking of beacon timeout.
  19. Optimize Wi-Fi event mechanism, and add event “ EVENT_SOFTAPMODE_PROBEREQRECVED”, and reason for a failed connection.
  20. Optimize Wi-Fi callback function and strengthen reliability of the software.
  21. Add the function of data transferring between stations in the soft-AP mode.
  22. Update SmartConfig to the version of 2.5.1.
  23. Update esp_init_data_default.bin. Please use the newest esp_init_data_default.bin when burning.
  24. Modify the espconn pointer in the receive callback of UDP. Parameters remote_ip and remote_port in it are the remote IP and port set by espconn_create. If users want to obtain IP and ports of the current sender, please call espconn_get_connection_info to get relevant information.
Added APIs:
  1. System API
    system_show_malloc : for checking memory leak, to print the memory usage.
  2. DHCP server lease time related APIs
    wifi_softap_set_dhcps_lease_time:set ESP8266 softAP DHCP server lease time.
    wifi_softap_get_dhcps_lease_time:check ESP8266 softAP DHCP server lease time.
    wifi_softap_reset_dhcps_lease_time:reset ESP8266 softAP DHCP server lease time which is 120 minutes by default.
  3. wifi_station_dhcpc_set_maxtry:set the maximum number that ESP8266 station DHCP client will try to reconnect to the AP.
  4. Force sleep APIs
    wifi_fpm_open:enable force sleep function.
    wifi_fpm_close:disable force sleep function.
    wifi_fpm_do_sleep:force ESP8266 enter sleep mode.
    wifi_fpm_do_wakeup:wake ESP8266 up from force sleep.
    wifi_fpm_set_sleep_type:set sleep type of force sleep function.
    wifi_fpm_get_sleep_type:get sleep type of force sleep function.
  5. Send packet freedom APIs (to send user-define 802.11 packets)
    wifi_register_send_pkt_freedom_cb:register a callback for sending user-define 802.11 packets.
    wifi_unregister_send_pkt_freedom_cb:unregister the callback for sending user-define 802.11 packets.
    wifi_send_pkt_freedom:send user-define 802.11 packet.
  6. RFID LOCP APIs
    wifi_rfid_locp_recv_open:enable RFID LOCP to receive WDS packets.
    wifi_rfid_locp_recv_close:disable RFID LOCP.
    wifi_register_rfid_locp_recv_cb:register a callback of receiving WDS packets.
    wifi_unregister_rfid_locp_recv_cb:unregister the callback of receiving WDS packets.
  7. Rate Control APIs
    wifi_set_user_fixed_rate:set the fixed rate and mask of sending data from ESP8266
    wifi_get_user_fixed_rate:check the fixed rate and mask of ESP8266
    wifi_set_user_sup_rate:set the rate range supported by ESP8266 to limit the rate of sending packets from other devices.
    wifi_set_user_rate_limit:limit the rate of sending data from ESP8266.
    wifi_set_user_limit_rate_mask:set the interfaces of ESP8266 whose rate of sending packets is limited by wifi_set_user_rate_limit.
    wifi_get_user_limit_rate_mask:get the interfaces of ESP8266 whose rate of sending packets is limited by wifi_set_user_rate_limit.
  8. Espconn APIs
    espconn_sendto:send UDP data.
    espconn_secure_cert_req_enable:enable certificates verification function when ESP8266 runs as SSL client.
    espconn_secure_cert_req_disable:disable certificates verification function when ESP8266 runs as SSL client.
    espconn_secure_set_default_certificate:set the certificate when ESP8266 runs as SSL server.
    espconn_secure_set_default_private_key:set the encryption key when ESP8266 runs as SSL server.
  9. SmartConfig API
    smartconfig_set_type: set the protocol type of SmartConfig.
 
Последнее редактирование:

pvvx

Активный участник сообщества
23. Update esp_init_data_default.bin.
Изменен только байт 114 (по умолчанию =2):
Since esp_iot_sdk_v1.4.0, users can configure RF initialization when ESP8266 is powered on by set the byte 114 of esp_init_data_default.bin (0~127 byte):
• 114 byte default to be 0 :RF only calibrate VDD33 during initialization which will take about 2 ms with lowest power consumption.
• 114 byte set to be 1 :RF calibrate VDD33 and TX power which will take about 18 ms with a lower power consumption.
• 114 byte set to be 2 :RF only calibrate VDD33 during initialization which will take about 2 ms with lowest power consumption. The same as option 0.
• 114 byte set to be 3 :RF will do the whole calibration which will take about 200 ms with a higher power consumption.

Ранее в сериале (SDK 1.3.0) там было: default: 0. =0 system_deep_sleep_set_option and system_phy_set_rfoption can work, = 1 will be disabled.
 

pvvx

Активный участник сообщества
wifi_station_set_hostname("ESP8266s") исправили, как им и писали. Добавили единичку в hostname = pvPortMalloc(len+1); Бабла пока так и не дали.
wifi_get_opmode_default не исправили, а усугубили. Теперь там запрашивается 1156 байт без проверки... (Структура в памяти настроек wifi увеличилась с 888 байт до 1156 байт, она и сохраняется в последние сектора flash. Для чтения из неё 8-го байта (wifi_opmode) выделяется в heap буфер в 1156 байт и туда по SPI считывается запись из flash, затем буфер освобождается)
 

clinkme

Member
Размер кода на этой версии вырос примерно на 15 kb, в модуль с 512 кб flash (поделенный пополам для FOTA) уже не влезаю. Что они туда напихали? Как будто им побайтно платят...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Размер кода на этой версии вырос примерно на 15 kb, в модуль с 512 кб flash (поделенный пополам для FOTA) уже не влезаю. Что они туда напихали? Как будто им побайтно платят...
Использовать эту версию неохота из-за изменения подхода к менеджеру распределения памяти. Там теперь три аргумента и код неимоверно увеличивается, да тормозит. Сделано это для детей, которые постоянно ошибаются. (См. mem.h.)
Данное "нововведение" было произведено из-за того, что практически все китайские процедуры в SDK не проверяют запросы памяти на её наличие (и это было им многократно описано в их обманной "Espressif Bug Bounty Program")

Китайцы добились того, что их SDK использовать для реальных поделок уже невозможно.
Для вечерней поделки на соплях мигающего светодиода или лампочки она ещё годится...
По массе факторов возникает рекомендация - не использовать данную версию.

Это только из-за пункта:
1) Добавьте новый метод для проверки утечки памяти (API: system_show_malloc).

Далее по пунктам "нововведений":
2) Добавили информацию, когда происходит исключение.
Не требуется, если есть JTAG и другие системы отладки. Для телепузиков со светодиодом вывод распечатки названия исключения ничего не говорит.
3) Решить проблему os_timer_disarm.
Решена путем полного переноса кода обработки таймеров в IRAM. Увеличили код и больше ничего. Если правильно использовать таймеры, то проблем c таймерами (кодом их обработки в ROM-BIOS) и не было.

По поводу "Добавлены интерфейсы:" - если бы их "добавляли" отдельными либами, то возможно было бы приемлемо (раз уж публиковать открытый код Espressif не может из-за воровства его у других). Большинство "Китай-Добавлены интерфейсы:" никому не нужны, а только создают проблемы в новых багах, тормозе производительности и размере кода.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Опять понапихали в struct netif *eagle_lwip_if_alloc(struct ieee80211_conn *conn, uint8 *macaddr, struct ip_info *ipinfo) всякого. Изменили struct netif, запихали в неё указатель на wifi_station_dhcpc_event(). Выложенный Open source LWIP for esp_iot_sdk_v1.3.0 стыковаться не будет.
 

clinkme

Member
По массе факторов возникает рекомендация - не использовать данную версию.
Да, тоже склоняюсь к тому, чтобы остаться на 1.3.0.
Из того с чем сам столкнулся:
1) изменена структура struct bss_info (добавлено новое поле)
2) изменен список AP, возвращаемый в wifi_scan_cb - теперь не надо пропускать первую (ранее пустую) запись //bss_link = bss_link->next.stqe_next;
 
Последнее редактирование:

pvvx

Активный участник сообщества
Китёзы уже в наглую врать стали:
  1. Fatal exceptions occur when change WiFi mode in WiFi scan callback.
Из режима AP включаем ST, необходимый для Скана. Сканируем.
Выполняем восстановление установок (режима только AP) в процедуре WiFi scan callback и .... опять старая бага из прошлых SDK :mad: Она повторяется и в обработчике событий от WiFi.
Лог при перезагрузке о Fatal exception (28) как и ранее в старых SDK указывает на обращение по нулевому указателю (точнее по excvaddr=0x000000d0):
Код:
SDK 1.4.0
don't use rtc mem data

Save rx_gain_dc table (0, 1)
Old reset: Fatal exception (28):
epc1=0x4020ca01, epc2=0x00000000, epc3=0x00000000, excvaddr=0x000000d0, depc=0x00000000
Место данного происшествия:
Код:
                 l8ui            a0, a12, 0xAC
                 l32r            a3, a_g_ic
                 beqi            a0, 1, loc_E3
                 l32i.n          a3, a3, 0x10 ; g_ic.netif1
                 l8ui            a3, a3, 0xD0 ; ? <--- Тут!
                 bnei            a3, 3, loc_1C
loc_E3:                      
                 l32i.n          a4, a1, 0x10
                 bnez.n          a4, loc_1C
                 bnei            a0, 1, loc_EF
                 movi.n          a5, 0
                 s8i             a5, a12, 0xAC
И так ясно что netif1 нема, т.к. включили токо AP...
Про это китаёзам уже писалось, но воз и ныне там и бабло по выдуманной Баунти не дают. Шарашкина контора этот Espressif и они совсем заврались.
Ещё немного и буду принимать меры по полной дискриминации Espressif.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Пока никак не прикрутить Open LwIP к SDK 1.4.0. Что-то там много наменяли китаёзы - наверно будут ещё сотни глюков, т.к. залезли туда, куда им не следовало с их программерами...
---
Постоянный вызов события WiFi event 7 (EVENT_SOFTAPMODE_PROBEREQRECVED) при работе модуля раздражает. В логе только он и пишется...
Код:
14:58:19.712> Probe Request (MAC:a0:f4:50:b1:96:ac, RSSI:-87)
14:58:19.712> WiFi event 7
14:58:19.712> Probe Request (MAC:a0:f4:50:b1:96:ac, RSSI:-86)
14:58:19.809> WiFi event 7
14:58:19.809> Probe Request (MAC:98:f1:70:88:40:ac, RSSI:-66)
14:58:19.840> WiFi event 7
14:58:19.840> Probe Request (MAC:00:0f:54:10:6a:b5, RSSI:-52)
14:58:19.962> WiFi event 7
14:58:19.962> Probe Request (MAC:98:f1:70:88:40:ac, RSSI:-69)
14:58:20.026> WiFi event 7
14:58:20.026> Probe Request (MAC:00:0f:54:10:6a:b5, RSSI:-53)
14:58:25.951> WiFi event 7
14:58:25.951> Probe Request (MAC:00:16:44:7c:15:40, RSSI:-86)
14:58:29.508> WiFi event 7
14:58:29.508> Probe Request (MAC:98:f1:70:88:40:ac, RSSI:-31)
14:58:29.508> WiFi event 7
14:58:29.508> Probe Request (MAC:98:f1:70:88:40:ac, RSSI:-30)
14:58:29.573> WiFi event 7
14:58:29.573> Probe Request (MAC:98:f1:70:88:40:ac, RSSI:-28)
14:58:29.573> WiFi event 7
14:58:29.573> Probe Request (MAC:98:f1:70:88:40:ac, RSSI:-29)
14:58:30.007> WiFi event 7
14:58:30.007> Probe Request (MAC:98:f1:70:88:40:ac, RSSI:-82)
14:58:34.377> WiFi event 7
14:58:34.439> Probe Request (MAC:00:0f:54:10:6a:b5, RSSI:-53)
 
Последнее редактирование:

pvvx

Активный участник сообщества
Всё - meSDK (минималистическая Open-SDK) на v1.4.0 готова: https://github.com/pvvx/MinEspSDKLib
Разница по использованию памяти по сравнению с SDK 1.3.0 (в общем SDK 1.4.0 на 10 кило более):
Код:
SDK 1.3.2:
   Section|                   Description| Start (hex)|   End (hex)|Used space
------------------------------------------------------------------------------
      data|        Initialized Data (RAM)|    3FFE8000|    3FFE8342|     834
    rodata|           ReadOnly Data (RAM)|    3FFE8348|    3FFE83F4|     172
       bss|      Uninitialized Data (RAM)|    3FFE83F8|    3FFEE8F0|   25848
      lit4|     Uninitialized Data (IRAM)|    40104C68|    40104CF0|     136
      text|          Uncached Code (IRAM)|    40100000|    40104C68|   19560
irom0_text|             Cached Code (SPI)|    40240000|    4026716C|  160108
------------------------------------------------------------------------------
Entry Point : 40100000 call_user_start()
Total Used RAM : 46550
Free IRam : 13072 or 29456 (option 48k IRAM)
Free Heap : 55066
Total Free RAM : 84522

SDK 1.4.0:
   Section|                   Description| Start (hex)|   End (hex)|Used space
------------------------------------------------------------------------------
      data|        Initialized Data (RAM)|    3FFE8000|    3FFE8362|     866
    rodata|           ReadOnly Data (RAM)|    3FFE8364|    3FFE8428|     196
       bss|      Uninitialized Data (RAM)|    3FFE8428|    3FFEE9C0|   26008
      lit4|     Uninitialized Data (IRAM)|    40104E48|    40104ED0|     136
      text|          Uncached Code (IRAM)|    40100000|    40104E48|   20040
irom0_text|             Cached Code (SPI)|    40240000|    40269224|  168484
------------------------------------------------------------------------------
Entry Point : 40100000 call_user_start()
Total Used RAM : 47246
Free IRam : 12592 or 28976 (option 48k IRAM)
Free Heap : 54850
Total Free RAM : 83826
Web свалка тоже переезжает на SDK 1.4.0, но пока тестируется...
 

pvvx

Активный участник сообщества
В SDK 1.4.0 больше не стирают сектор 5 сектор от конца flash при старте модуля, т.к. тоже публиковал это безобразие - зачем заняли 20 килобайт, а в доке писали что всего 16 :) Но теперь калибровки RF и DC VCC33 пишутся в 4-й сектор от конца flash, где хранится esp_init_data_default.bin. И длина записи вместо 128 байт стала 768:
Код:
4027c000 05 00 04 02 05 05 05 02 05 00 04 05 05 04 05 05 ................
4027c010 04 fe fd ff f0 f0 f0 e0 e0 e0 e1 0a ff ff f8 00 .₫ưÿđđđàààá.ÿÿø.
4027c020 f8 f8 52 4e 4a 44 40 38 00 00 01 01 02 03 04 05 øøRNJD@8........
4027c030 01 00 00 00 00 00 02 01 00 00 00 00 00 00 00 00 ................
4027c040 e1 0a 00 00 00 00 00 00 00 00 01 93 43 00 00 00 á..........“C...
4027c050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
4027c060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
4027c070 03 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
4027c080 90 91 01 00 ff ff ff ff ff ff ff ff ff ff ff ff ‘..ÿÿÿÿÿÿÿÿÿÿÿÿ
4027c090 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
4027c0a0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
4027c0b0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
4027c0c0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
4027c0d0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
4027c0e0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
4027c0f0 ff ff ff ff ff ff ff ff 00 ff ff ff ff ff ff ff ÿÿÿÿÿÿÿÿ.ÿÿÿÿÿÿÿ
4027c100 00 00 01 00 02 00 03 00 00 04 01 04 00 20 01 20 ............. .
4027c110 02 20 03 20 04 20 00 24 01 24 02 24 03 24 04 24 . . . .$.$.$.$.$
4027c120 00 28 01 28 02 28 03 28 04 28 00 2c 01 2c 00 30 .(.(.(.(.(.,.,.0
4027c130 01 30 02 30 03 30 04 30 00 34 01 34 02 34 03 34 .0.0.0.0.4.4.4.4
4027c140 00 60 01 60 02 60 03 60 04 60 00 64 01 64 02 64 .`.`.`.`.`.d.d.d
4027c150 03 64 04 64 00 68 01 68 02 68 03 68 00 70 01 70 .d.d.h.h.h.h.p.p
4027c160 02 70 03 70 04 70 00 74 01 74 02 74 03 74 04 74 .p.p.p.t.t.t.t.t
4027c170 00 78 01 78 02 78 03 78 00 7c 01 7c 02 7c 03 7c .x.x.x.x.|.|.|.|
4027c180 04 7c 05 7c 08 7c 09 7c 0a 7c 0b 7c 0c 7c 0d 7c .|.|.|.|.|.|.|.|
4027c190 18 7c 19 7c 1a 7c 1b 7c 1c 7c 1d 7c 38 7c 39 7c .|.|.|.|.|.|8|9|
4027c1a0 3a 7c 3b 7c 3c 7c 3d 7c 78 7c 79 7c 7a 7c 7b 7c :|;|<|=|x|y|z|{|
4027c1b0 7c 7c 7d 7c ff ff ff ff ff ff ff ff ff ff ff ff ||}|ÿÿÿÿÿÿÿÿÿÿÿÿ
4027c1c0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
4027c1d0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
4027c1e0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
4027c1f0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
4027c200 00 09 02 00 00 e1 01 00 00 09 02 00 00 e3 01 00 .....á.......ă..
4027c210 00 09 02 00 00 e1 01 00 00 09 02 00 00 e3 01 00 .....á.......ă..
4027c220 00 09 02 00 00 e3 01 00 00 0b 02 00 00 e3 01 00 .....ă.......ă..
4027c230 02 09 02 00 fd ea 01 00 00 0b 02 00 00 eb 01 00 ....ưê.......ë..
4027c240 00 0b 02 00 00 eb 01 00 00 0b 02 00 00 eb 01 00 .....ë.......ë..
4027c250 00 0b 02 00 00 eb 01 00 00 0b 02 00 00 eb 01 00 .....ë.......ë..
4027c260 00 0b 02 00 00 ef 01 00 00 0b 02 00 00 ef 01 00 .....ï.......ï..
4027c270 fd 0a 02 00 ff ee 01 00 00 09 02 00 00 ef 01 00 ư...ÿî.......ï..
4027c280 fd 0a 02 00 fe ee 01 00 fb 0a 02 00 00 ef 01 00 ư...₫î..û....ï..
4027c290 00 09 02 00 00 ef 01 00 fc 0a 02 00 00 ef 01 00 .....ï..ü....ï..
4027c2a0 00 09 02 00 00 ef 01 00 00 09 02 00 00 ef 01 00 .....ï.......ï..
4027c2b0 00 09 02 00 00 ef 01 00 00 09 02 00 04 ef 01 00 .....ï.......ï..
4027c2c0 00 09 02 00 00 ef 01 00 fc 0a 02 00 00 ef 01 00 .....ï..ü....ï..
4027c2d0 00 09 02 00 00 ef 01 00 00 09 02 00 00 ef 01 00 .....ï.......ï..
4027c2e0 00 09 02 00 00 ef 01 00 00 09 02 00 04 ef 01 00 .....ï.......ï..
4027c2f0 62 fb a3 ac ff ff ff ff ff ff ff ff ff ff ff ff bû£¬ÿÿÿÿÿÿÿÿÿÿÿÿ
 

Tomahawk

New member
Если честно, раньше не слышал о таком производителе микроконтроллеров, как Espressif. Чип ведь не их? Возможно проще написать с нуля на базе какого-то МК, чем заниматься поиском бесконечных ошибок. Только задача мне кажется эта для целой команды.
 

pvvx

Активный участник сообщества
Если честно, раньше не слышал о таком производителе микроконтроллеров, как Espressif. Чип ведь не их?
Заказ может и их....
Возможно проще написать с нуля на базе какого-то МК, чем заниматься поиском бесконечных ошибок. Только задача мне кажется эта для целой команды.
Espressif и может быть этой командой, но избранный ими метод и вариант SDK неверен. Возможно надо было разделить SDK на драйверы, а остальное давать с исходниками - тогда возможности его использования многократно увеличиваются.
 

pvvx

Активный участник сообщества
Кому нибудь удалось подключиться к AP модуля, при включенном на модуле STATIONAP_MODE и отсутствию внешней AP, к которой хочет подключиться ST модуля?
я получаю только это:
NoConnect.gif
Код:
...
f -180, scandone
no HOMEAP found, reconnect after 1s
WiFi event 1
Disconnect from ssid HOMEAP, reason(201): No_ap_found, count 59
reconnect
f r0, WiFi event 7
Probe Request (MAC:00:0f:54:10:6a:b5, RSSI:-53)
WiFi event 7
Probe Request (MAC:00:0f:54:10:6a:b5, RSSI:-52)
WiFi event 7
Probe Request (MAC:00:0f:54:10:6a:b5, RSSI:-54)
WiFi event 7
Probe Request (MAC:00:0f:54:10:6a:b5, RSSI:-53)
WiFi event 7
Probe Request (MAC:00:0f:54:10:6a:b5, RSSI:-50)
WiFi event 7
Probe Request (MAC:00:0f:54:10:6a:b5, RSSI:-48)
WiFi event 7
Probe Request (MAC:00:0f:54:10:6a:b5, RSSI:-50)
WiFi event 7
Probe Request (MAC:00:0f:54:10:6a:b5, RSSI:-51)
scandone
no HOMEAP found, reconnect after 1s
WiFi event 1
...
Т.е. при неправильном вводе имени или ещё чаго для подключения модуля к внешней AP связь с его AP теряется до перепрошивки. Новая такая фича от Espressif :)
 
Последнее редактирование:

Tomahawk

New member
pvvx, с вашим проектом, если смотреть через андроид, то можно успеть снова подключиться к АР модуля между переподключениями раз в 30 секунд.

*Указываем несуществующее имя сторонней АР и пароль наугад, ставим Autoconnect.
WiFi_set(0x00013fff)=0x00001400
WiFi mode:3 chl:1 phy:3 dhcp:1/1
AP:ESP8266[8] hiden(0) psw:[1234567890] 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:cf:3c
DHCP ip:192.168.4.2..192.168.4.10
ST:[Anti-Killer] psw:[4444666778] b:0 ff:ff:ff:ff:ff:ff ac:1
ip:0.0.0.0 gw:0.0.0.0 msk:0.0.0.0 mac:18:fe:34:98:cf:3c
sleep:0, rect:25, maxtpw:82, sthn:[ESP_98CF3C]
WiFi event 1
Disconnect from ssid Anti-Killer, reason(201): , count 1
WiFi event 1
Disconnect from ssid Anti-Killer, reason(201): , count 2
WiFi event 1
Disconnect from ssid Anti-Killer, reason(201): , count 3
Set reconnect after 30 sec
**АР модуля исчезла, моя станция от неё отключается**
WiFi event 5
Station[1]: [МАК моего андроида] leave, AID = 1
New connect ST
*АР появилась вновь, можно подключиться*
WiFi event 4
Station[1]: [МАК моего андроида] join, AID = 1
WiFi event 1
Disconnect from ssid Anti-Killer, reason(201): , count 1
WiFi event 1
Disconnect from ssid Anti-Killer, reason(201): , count 2
WiFi event 1
Disconnect from ssid Anti-Killer, reason(201): , count 3
Set reconnect after 30 sec
*Пока что АР доступна, можно зайти*
Wait disconnect AP client... ИЛИ New connect ST
**АР пропадает вновь**
WiFi event 5
Station[1]: [МАК моего андроида] leave, AID = 1
WiFi event 1
Disconnect from ssid Anti-Killer, reason(201): , count 1
WiFi event 1
Disconnect from ssid Anti-Killer, reason(201): , count 2
WiFi event 1
Disconnect from ssid Anti-Killer, reason(201): , count 3
Set reconnect after 30 sec
New connect ST
**АР стала доступна**
 

pvvx

Активный участник сообщества
pvvx, с вашим проектом, если смотреть через андроид, то можно успеть снова подключиться к АР модуля между переподключениями раз в 30 секунд.
Да, я уже переделал Web свалку в этом месте, да убрал мелкие ошибки (были в htm, а не в СИ :))
Но ещё не полностью. Оказалось надо ждать несколько секунд, после отключения функции подключений ST... Что-то там не совсем верно ещё... Думаю, что этот процесс можно ускорить и сделать всё более прозрачным (доступ к AP при скане подключений ST->внешнийAP, и безусловно только путем патча китай-SDK)
Код:
WiFi event(6): Station[0]: 00:0f:54:10:6a:b5 leave, AID = 1 <--- было соединение AP и ST ждало
TCP Service port 12345 closed - Ok
WiFi event(7): Probe Request (MAC:00:0f:54:10:6a:b5, RSSI:-37)
WiFi event(7): Probe Request (MAC:00:0f:54:10:6a:b5, RSSI:-39)
<--- Тут отключился клиент от AP модуля и поиск подключения ST продолжился:
New connect ST...
f -180, scandone
no HOMEAP found, reconnect after 1s
WiFi event(1): Disconnect from ssid HOMEAP, reason(201): No_ap_found, count 1
reconnect
f r0, scandone
no HOMEAP found, reconnect after 1s
WiFi event(1): Disconnect from ssid HOMEAP, reason(201): No_ap_found, count 2
reconnect
f 0, scandone
no HOMEAP found, reconnect after 1s
WiFi event(1): Disconnect from ssid HOMEAP, reason(201): No_ap_found, count 3
Set reconnect after 30 sec <--- За 3 раза не нашлось и делаем паузу
WiFi event(7): Probe Request (MAC:00:0f:54:10:6a:b5, RSSI:-37) <-- подключился клиент к AP
add 1
aid 1
station: 00:0f:54:10:6a:b5 join, AID = 1
WiFi event(5): Station[1]: 00:0f:54:10:6a:b5 join, AID = 1

TCP Server init on port 12345 - Ok
Max connection 1, time waits 0 & 0, min heap size 14528
TCP Server start - Ok
srv[80] 192.168.4.2:11721 [1] listen
...
Пока так ^
----------
Китайцы сделали ешё изменения в WiFi EVENT - в событии EVENT_SOFTAPMODE_STADISCONNECTED теперь при отключении последнего клиента
int i = wifi_softap_get_station_num(); // Number count of stations which connected to ESP8266 soft-AP
возвращается ноль, а ранее 1 в SDK 1.3.0...
 
Последнее редактирование:

pvvx

Активный участник сообщества
system_get_rst_info() не может вернуть флаг REASON_DEEP_SLEEP_AWAKE, т.к. у китайцев system_deep_sleep() заканчивается exception. В процедуре system_deep_sleep_local_2() по входу стоит Cache_Read_Disable() а сама процедура вызывается из другой, но тоже находящейся в flash. И т.к. реакция на вход в deep_sleep CPU при записи в регистр управления отрабатывает не сразу, то CPU успевает нарываться на ошибку отключенного "кеширования" исполняя код выхода из system_deep_sleep_instant()... И вместо REASON_DEEP_SLEEP_AWAKE имеем REASON_EXCEPTION_RST :)
Код:
void system_deep_sleep_local_2(void)
{
    ets_intr_lock();
    Cache_Read_Disable();
    SPI0_CMD = 0x200000;
    while(SPI0_CMD);
    struct rst_info rst_info;
    ets_memset(rst_info, 0, sizeof(rst_info));
    rst_info.reason = REASON_DEEP_SLEEP_AWAKE;
    system_rtc_mem_write(0, &rst_info, sizeof(rst_info));
    IO_RTC_2 = 1<<20; // rtc_enter_sleep()    HWREG(PERIPHS_RTC_BASEADDR, 0x08) = 0x100000;
}
void system_deep_sleep_instant(void *timer_arg)
{
    os_printf_plus("deep sleep %ds\n\n", timer_arg/1000000);
    deep_sleep_set_option(deep_sleep_option);
    dw0x3FF20DE0 = 0x3333;
    ets_delay_us(20);
    user_uart_wait_tx_fifo_empty(0, 500000);
    user_uart_wait_tx_fifo_empty(1, 500000);
    IO_RTC_0 = 0;    // 0x60000700 = 0
    IO_RTC_0 &= ~BIT14;
    IO_RTC_0 |= 0x30;
    RTC_BASE[17] = 4; //0x60000744 = 4
    IO_RTC_3 = 0x10010; //     HWREG(PERIPHS_RTC_BASEADDR, 0x0C) = 0x10010;
    RTC_BASE[18] = (RTC_BASE[18] &  0xFFFF01FF) | 0xFC00; // HWREG(PERIPHS_RTC_BASEADDR, 0x48) = (HWREG(PERIPHS_RTC_BASEADDR,0x48) & 0xFFFF01FF) | 0xFC00;
    RTC_BASE[18] = (RTC_BASE[18] &  0xE00) | 0x80; // HWREG(PERIPHS_RTC_BASEADDR, 0x48) = (HWREG(PERIPHS_RTC_BASEADDR, 0x48) & 0xE00) | 0x80;
    IO_RTC_4 = 0; //0x60000710 = 0
    IO_RTC_4 = 0; //0x6000071C = 0
    IO_RTC_SLP_VAL = IO_RTC_SLP_CNT_VAL + 136 + 256; //    HWREG(PERIPHS_RTC_BASEADDR, 0x04) = HWREG(PERIPHS_RTC_BASEADDR, 0x1C) + 0x88;
    IO_RTC_6 = 8; // HWREG(PERIPHS_RTC_BASEADDR, 0x18) = 8;
    IO_RTC_2 = 0x100000; // HWREG(PERIPHS_RTC_BASEADDR, 0x08) = 0x100000;
    ets_delay_us(200);
    RTC_GPI2_CFG = 0x11; //    HWREG(PERIPHS_RTC_BASEADDR, 0x9C) = 0x11;
    IO_PAD_XPD_DCDC_CONF = 0x03; // HWREG(PERIPHS_RTC_BASEADDR, 0xA0) = 0x03;
    IO_RTC_3 = 0x640C8; // HWREG(PERIPHS_RTC_BASEADDR, 0x0C) = 0x640C8;
    IO_RTC_0 &= 0xFCF; // HWREG(PERIPHS_RTC_BASEADDR, 0x00) &= 0xFCF;
    RTC_GPI2_CFG = 0x11; // HWREG(PERIPHS_RTC_BASEADDR, 0x9C) = 0x11;
    IO_PAD_XPD_DCDC_CONF = 0x03; // HWREG(PERIPHS_RTC_BASEADDR, 0xA0) = 0x03;

    INTC_EDGE_EN &= 0x7E; // HWREG(PERIPHS_DPORT_BASEADDR, 4) &= 0x7E; // WDT int off
    ets_isr_mask(1<<8); // Disable WDT isr

    DPORT_BASE[0] = (DPORT_BASE[0]&0x60)|0x0e; // nmi int
    while(DPORT_BASE[0]&1);

    RTC_BASE[16] = 0xFFF; // HWREG(PERIPHS_RTC_BASEADDR, 0x40) = 0xFFF;
    RTC_BASE[17] = 0x20; // HWREG(PERIPHS_RTC_BASEADDR, 0x44) = 0x20;

    uint32 clpr = pm_rtc_clock_cali_proc();
    pm_set_sleep_time(timer_arg);

//    IO_RTC_4 = 0; // HWREG(PERIPHS_RTC_BASEADDR, 0x10) = 0x00;

    if(clpr == 0) {
        IO_RTC_6 = 0; //    HWREG(PERIPHS_RTC_BASEADDR, 0x18) = 0x00;
    }
    else {
        IO_RTC_6 = 8;    //    HWREG(PERIPHS_RTC_BASEADDR, 0x18) = 0x08;
    }
    system_deep_sleep_local_2();
}
 

Vitaly

Member
Кому нибудь удалось подключиться к AP модуля, при включенном на модуле STATIONAP_MODE и отсутствию внешней AP, к которой хочет подключиться ST модуля?
я писал об этом ранее, еще со старым сдк, разговор шел о возможности решить проблему увеличив таймаут между попытками найти отсутствующую ап

или оно сейчас и с увеличенным таймаутом с проблемами работает?
 

pvvx

Активный участник сообщества
я писал об этом ранее, еще со старым сдк, разговор шел о возможности решить проблему увеличив таймаут между попытками найти отсутствующую ап

или оно сейчас и с увеличенным таймаутом с проблемами работает?
Да - с проблемами, но другими.
----
По поводу DEEP-SLEEP:
Я просто "запатчил" system_deep_sleep_local_2 в "обьектнике" поставив туда код 0xFFFF06 (while(1)) после IO_RTC_2 = 1<<20 и всё работает.
Счас скину новую Web свалку с "исправленной" либой... :)
Кто не умеет "патчить" используйте -Wl,--wrap=system_deep_sleep_local_2 ...
Код:
void __attribute__ ((noreturn)) IRAM_атрибуты __wrap_system_deep_sleep_local_2(void)
{
__real_system_deep_sleep_local_2();
while(1)
}
Без этого deep-sleep после просыпания модуль сильно тормозит до соединения к AP... Если исправить и назначить deep-sleep mode 1, то полное соединение TCP с фиксированным ip (отключен DHCP ST модуля) происходит за 450..500ms (от сигнала RESET просыпания от deep-sleep). Думаю, что ещё можно уменьшить, чтобы модуль просыпался на не более 1 сек и передавал за это время за 500 килобайт.

В SDK 1.4.0 ещё множество бед. Совершенно неправильно работают всякие режимы deep-sleep и конфигурации настройки-калибровки WiFi при старте. Очень часто если некоторая калибровка отключена, то модуль никого не видит. Некоторая, по причине их множества и переплетения с другими опциями. Китайцы - тут ничего не поделать...
 
Последнее редактирование:

Tomahawk

New member
Очень часто если некоторая калибровка отключена, то модуль никого не видит.
Периодическое пропадание AP модуля может происходить по этой же причине? Наблюдаю такую проблему, есть 3 модуля, на одном ESP-01 всё работает, а на другом ESP-01 и ещё одном ESP-07 нет, точка постоянно отваливается, но бывает что и долго работает.
 
Сверху Снизу