Выход ESP8266 IoT SDK v1.0.0 AT v0.22 — это реально потрясающее событие! И дело здесь не в новом функционале и даже не в количестве исправленных ошибок, а в изменении подхода Espressif к своему продукту. Но обо все по порядку. Полный список изменений на русском (за перевод спасибо JustACat) и в оригинале на сайте Espressif. Также, в конце статьи, вы найдете ссылки на SDK, документацию и новые прошивки, которые я для вас собрал и, конечно, ссылки на обсуждение.
Какие-то выводы о SDK v1.0.0 делать пока рано, все проблемы выявятся только тогда, когда разработчики соберут свои продукты на новом SDK и протестируют. Пока из информации известно лишь только то, что доступной памяти стало на 10% меньше.
Теперь о том, почему я считаю событие действительно потрясающим. Во-первых, это номер версии. 1.0.0 звучит уже так, что этот продукт уже можно использовать в коммерческих приложениях. Насколько это неявное заявление соответствует действительности — посмотрим.
Во-вторых, переработан многим набивший оскомину espconn. Те кто в теме — поймут сразу в чем дело, для остальных скажу лишь, что это очень многообещающе и ESP HTTP серверы, теоретически, не должны больше глючить.
В-третьих, серъезно переработана вся система AT команд. Большинство команд сейчас имеют два варианта. Например, вместо старой команды AT+UART (старые версии команд больше не поддерживаются) теперь две новые команды: AT+UART_CUR и AT+UART_DEF. Первая изменяет параметры для текущего сеанса (до перезагрузки), вторая — изменяет параметры и записывает их во флеш память. Способ, каким китайцы решили разделить команды, безусловно, ужасный, но он работает. Зачем было изобретать велосипед на квадратных колесах, если еще со времен dialup модемов была придумана система команд для сохранения настроек?
Упрощенно, все AT команды влияли только на текущий сеанс, но можно было сохранить все текущие настройки в память одной командой ATW. Кроме того, существовало несколько профилей настроек и имелась возможность переключаться между этими профилями всего одной командой. Причем в Espressif команду сброса на заводские настройки сделали именно по такому принципу — вводишь AT+RESTORE и готово!
Ну и последняя причина, может быть даже самая важная из всех предыдущих, почему я считаю, что многое изменилось, это объявление о старте программы Espressif Bug Bounty Program. Намеренно не привожу здесь полный перевод, дабы не ввести в заблуждение читателей какими-либо двусмысленностями, расскажу буквально только одной строкой.
Espressif готова заплатить 200$ любому, кто найдет ошибки в SDK 1.0.0
Значит ли это, что Epressif наняла новую команду квалифицированных и не ленивых программистов — я, право, не знаю. Однако это говорит о том, что руководство Espressif, наконец-то, осознало серъезность проблемы некачественного ПО и готова с этим бороться по-настоящему. Во что это выльется мы пока не знаем, но я, как обычно, надеюсь, что к лету мы получим множество стабильно работающих реальных проектов на ESP8266.
Обсуждение прошивок на базе AT v0.22
Обсуждение Espressif Bug Bounty Program
Исправлены баги
- Прерывание во время цикла стирания flash вызывало reset по сторожевому таймеру
- Чтение/запись памяти RTC
- Если роутер отключался от ESP, то ESP не реконектилась
- Подключение к роутеру со скрытой сетью
Добавлены API
- system_update_cpu_freq: изменение частоты CPU
- wifi_promiscuous_set_mac: установка фильтра по mac адресу для сниффера
- wifi_set_broadcast_if : set which interface will UDP broadcast send from
- wifi_set_broadcast_if: выбор интерфейса для отправки UDP broadcast пакетов
Оптимизация
- Оптимизирован smartconfig до версии v1.0. Пожалуйста, не вызывайте другие API во время работы SmartConfig
- Оптимизирована AT прошивка до версии 0.22.0.0
- Оптимизирована защита системных параметров и проверка ошибок для них
- Оптимизирована задержка между beacon (вещанием) в режиме softAP
- Оптимизирован загрузчик до версии 1.3(b3)
- Добавлено API system_restart_enhance: для заводских тестов, поддерживает загрузку и исполнение программ по любому адресу
- Добавлено API для получения версии загрузчика и стартового адреса текущей прошивки
- Исправлена проблема совместимости двойной flash
- Оптимизирован сниффер, изменена структура sniffer_buf, пожалуйста, обратитесь к документации
- Оптимизирован espconn
- Оптимизирован ШИМ
- Другие оптимизации для улучшения стабильности ПО
Изменения в AT v0.22
Важные замечания
1.В AT добавлены новые функции, и она стала больше, чем раньше, если вы хотите скомпилировать ее, пожалуйста, измените ld файлы согласно “!!!readme!!!» файлу.
2.»AT+CIUPDATE», если вы используете AT прошивку от Espressif (\esp_iot_sdk_v1.0.0\bin\at) она будет обновляться из облака Espressif; если вы компилируете свою собственную AT прошивку, вы должны реализовать вашу собственную «AT+CIUPDATE», мы прилагаем демо-проект (\esp_iot_sdk_v1.0.0\examples\at) с демонстрацией обновления прошивки с локального сервера.
3. Предыдущие версии AT не смогу больше обновиться с облака Espressif, пожалуйста, используйте данную последнюю прошивку AT.
Исправлены баги
- Неверное возвращаемое значение от AT+CIPSTATUS
- Сброс чипа по сторожевому таймеру после “0,CONNECT FAIL”
Новые AT команды
1. Большинство AT команд теперь имеет два вида:
XXX_CUR: для текущего сеанса, не будут сохранены во flash (т.е. после рестарта не восстановятся);
XXX_DEF: будут сохранены во flash
2. Добавлена AT команда SmartConfig:
AT+CWSTARTSMART/AT+CWSTOPSMART: запустить / остановить SmartConfig
Примечание: пожалуйста, обратитесь к документации. Вызывайте “AT+CWSTOPSMART”, чтобы остановить SmartConfig, после того, как вы его запустили командой “AT+CWSTARTSMART”, и только потом вызывайте другие AT команды. Не вызывайте другие AT команды во время работы SmartConfig.
3. AT+SAVETRANSLINK: сохраняет во flash включение прозрачного режима
Примечание: AT+CIPMODE=1 теперь будет лишь включать прозрачный режим до перезагрузки модуля
Нововведения в AT API
- at_customLinkMax: установить максимальное количество соединений, (максимум 10); если вы хотите установить этот параметр, пожалуйста, делайте это до at_init; если вы не установите этот параметр, то по умолчанию будет значение 5
- at_enter_special_state/ at_leave_special_state: Вход/выход в режим обработки. В состоянии обработки ядро AT будет возвращать “busy” в ответ на все последующие AT команды
- at_set_custom_info: установить свою собственную информацию о версии AT, которая будет возвращена по команде AT+GMR
- at_get_version: получить версию AT библиотеки
Оптимизация
- Для “AT+CIPSEND” параметрами UDP могут быть удаленный ip и удаленный порт
- “AT+CIUPDATE” перемещена из библиотеки в AT пример (\esp_iot_sdk\examples\at), AT пример демонстрирует, как обновить AT прошивку с локального сервера. Обратите внимание, что имена файлов прошивок для обновления должны быть «user1.bin» и «user2.bin»
- Оптимизирована “AT+CIPSTA”, добавлены параметры gateway (шлюз по умолчанию) и netmask (маска подсети)
- Оптимизирован прозрачный режим
Известные баги
- DHCP клиент может получить неверный IP адрес
- Проблема с «Lib c string»
- wifi_station_get_connect_status не изменяется сразу
esp_iot_sdk_v1.0.0_15_03_20 release note
P.S. Уже после публикации статьи мы получили новый документ (спасибо SamGold)
ESP8266 SDK API Guide Version 1.0.0 20.03.2015
4A-AT-Espressif AT Instruction Set_v0.22.pdf
Version: 0.22
4B-AT-Espressif AT Command Examples_v0.4.pdf
Version: 0.4
SDK-Espressif IoT SDK Programming Guide_v1.0.0.pdf
Version: 1.0.0
2C-SDK-Espressif IoT SDK Programming Guide_v1.0.0.pdf
Version: 1.0.0