с этого места подробнее пожалуйста.
А чего подробнее? Берете либу от
lib_wlan.a Arduino/hardware_v2/variants/rtl8710 at master · Ameba8195/Arduino · GitHub и вперед. Она создана Ameba в одно время с SDK4.0a, а сам SDK выложен позже, но с кодом либы на IAR.
Приведите тестовый пример. Проверю. У меня SoftAP + Station на данный момент основной режим работы (ну так сложилось по разным причинам)
Записываете web-свалку в модуль. Включаете SoftAP + Station, идете на страницу:
И качаете файл c
http://rtl871x0/protect2/ram.bin?start=0x10000000&stop=0x20000000
и с
http://rtl871x1/protect2/ram.bin?start=0x10000000&stop=0x20000000
Сравниваете:
Свисток или даже если сделать подключение от одного роутера
итого не меняют. Проверено на нескольких разных роутерах и свистках (включая и
MiFi ), на Arduino и "AT" прошивке - итог один - тормозит AP в режиме AP+ST. Скорее всего она опрашивается каким-то пулом, в данном режиме (AP+ST), т.к. задержки передачи пакетов после запроса (приема) в TCP всегда более 0.01 сек. Station то при этом пашет нормально... Кроме тормоза там ещё потребление вылетает за нормы - это явный баг. Предположить как он создан выходит только если выключать передатчик с задержкой после передачи пакета или типа того...
Т.е. это сделано "логике вопреки". Наверно специально - иначе не понять Амебнутых
SoftAP то должна быть всегда активна и следить за каналом согласно спецификациям...
На работе к древнему usb свистку подключается через раз на 3-5-тый. По логам свисток в половине случаев дает отлуп а в половине тупо не хватает таймаута. Дома на относительно свежем Keenetic giga II подключается влет. Предполагаю что таймауты увеличивали для совместимости с зоопарком AP.
Не - они там от балды. Как "рука написала". Замена на более короткие наоборот улучшает дело с первым соединением. (пробовал патчить часть lib_wlan.a)
Бага у AP тоже есть - она видимо как-то криво инициализируется у Ameba и первое соединение после инициализации WiFi часто неудачное. Ну это ещё одна бага. В Arduino, если не запросить WiFi.status() перед иницализацией AP, то она вообще там не работает.
Про глупости с задержками при соединении модуля к AP было описано и даны примеры замеров в том году
Тестирование и модификация RTL SDK для автономных устройств.
На IAR с кодом SDK 3.4a или SDK4.0a соединение с выдачей IP происходит на 1200 шаге RTOS (шаг 1 ms от старта), а любая прошивка с любым SDK на GCC - от 2 сек минимум.
Если при старте задать ход таймера RTOS в 2 раза быстрее (он об этом не уведомлен
), то и соединение реально происходит в 2 раза быстрее.
Диагноз простой - кто-то в Ameba занимается вредительством - не желает использования в open-source, а только с проприетарным ПО компиляторов. Это влияет и на их Arduino - там ситуация аналогична - встроенные тормоза везде.
Так-же все дополнительные режимы, типа "WiFi моста" Амебнутые вырезали из драйвера WiFi в SDK. При включении в них он сообщает кодом отсутствия реализации в ПО, хотя драйвер стандартный с интерфейсом управления как для всех чипов RTL под Андроид и *nix (
Standard Wireless Extensions ver 22.
Wireless-Extensions (WE или Wext) являются расширениями, добавленными в ядро около 1997 )