Рекомендации по разработке готовых к работе приложений
Внимание
Это документация по Azure Sphere (устаревшая версия). Служба Azure Sphere (устаревшая версия) выходит на пенсию 27 сентября 2027 г., и к этому времени пользователи должны перейти в Azure Sphere (интегрированная). Используйте селектор версий, расположенный над toC, чтобы просмотреть документацию по Azure Sphere (интегрированная).
При разработке приложений для устройств Azure Sphere необходимо учитывать, что ваши приложения готовы к работе. В этом разделе содержится контрольный список рекомендаций по проверке готовности приложений к пилотной или рабочей развертыванию. Подтверждение того, что эти элементы завершены, может уменьшить количество проблем, возникающих в рабочей среде, и упростить диагностику всех возникающих проблем.
При разработке приложения Azure Sphere определите, будет ли оно выполняться на высоком уровне (HL), ядре реального времени (RT) или гибриде обоих. Высокоуровневые приложения выполняют контейнеры в ОС Azure Sphere и приложения с поддержкой реального времени (RTApps) выполняются на локальном компьютере или с операционной системой в режиме реального времени (ОСРВ) на ядрах реального времени.
Приведенные здесь рекомендации помогут повысить качество и производительность приложений, готовых к работе. Приведенный ниже контрольный список содержит краткий список предложений по проектированию для обоих типов приложений, а также рекомендации по написанию кода и рекомендации по проектированию решений, включая ссылки на разделы, которые подробно обсуждают каждую точку. Эти предложения являются производными от наших партнерских отношений с клиентами, включая анализ полей, проверки кода и поддержку взаимодействия рабочих приложений в реальных решениях и конструкциях устройств.
Распространенные проблемы
- Убедитесь, что готовые к работе приложения не используют наборы средств бета-версии.
- При выборе набора API используйте последние средства CMake и Azure Sphere.
- Чтобы обеспечить полную оптимизацию и размер кода, рассмотрите возможность компиляции окончательных пакетов образов в режиме выпуска перед развертыванием приложения в рабочей среде. Перед развертыванием пакета выпуска обязательно создайте и протестируйте его.
- Используйте политику нулевого предупреждения при выполнении полной сборки, чтобы гарантировать, что предупреждения компилятора намеренно устраняются.
- Настройте согласованный конвейер CI/CD и используйте правильную стратегию ветвления.
Проблемы, связанные с памятью
- По возможности определите все общие фиксированные строки вместо
global const char*
жесткого написания кода, чтобы они могли использоваться в качестве указателей данных. - Если глобальные структуры данных достаточно малы, рассмотрите возможность предоставления фиксированных длин членам массива, а не использования указателей на динамически выделенную память.
- Избегайте динамического выделения памяти каждый раз, когда это возможно.
- Для функций, возвращающих указатель на буфер памяти, рекомендуется преобразовать в функции, возвращающие указатель на буфер со ссылкой и связанный с ним размер вызывающей стороны.
- По возможности определите все общие фиксированные строки вместо
Динамические контейнеры и буферы
- Рекомендуется использовать метод добавочного выделения для контейнеров, таких как списки и векторы.
Предложения по проектированию основных приложений высокого уровня
Общие основы
- Правильно инициализировать и уничтожить все обработчики при выходе или ошибке.
- Всегда используйте коды выхода.
- Если приложение обнаруживает, что оно находится в неустранимом состоянии и требует перезапуска, убедитесь, что оно всегда обрабатывается как "чистый" выход приложения, а не рисковать состоянием взаимоблокировки.
- Реализуйте обработку ошибок и ведение журнала. Дополнительные сведения см. в разделе об обработке ошибок и ведении журнала.
- Используйте системный таймер в качестве сторожевой системы, чтобы определить, находится ли приложение в неустранимом состоянии или застойе (например, взаимоблокировка, исчерпанная память или подключение не восстанавливается, хотя реализованная логика), и повлияет на правильное восстановление. Дополнительные сведения см. в разделе "Использование системного таймера в качестве наблюдателя".
Обработка параллелизма
- По возможности используйте EventLoop.
- Найдите эффективность параллельных задач.
- Оцените, когда следует использовать потоки и области только для конкретных задач. Дополнительные сведения об использовании потоков см. в разделе "Обработка параллелизма".
мониторинг подключений;
- Реализуйте правильную задачу проверки работоспособности подключения на основе надежного компьютера состояния, который регулярно проверяет состояние подключения к Интернету.
- Для решений, требующих управления питанием, выключите микросхему Azure Sphere после отправки данных, отслеживайте общее время работы и установите таймер завершения работы.
- cURL недавно обновил поведение обратного вызова и рекомендации. Хотя Azure Sphere предприняла усилия по обеспечению работы более старых версий cURL, рекомендуется следовать последним рекомендациям по обеспечению безопасности и надежности при использовании curl_multi, так как использование рекурсивных обратных вызовов может привести к непредвиденным сбоям, сбоям подключения и потенциальным уязвимостям безопасности. Если таймерCallback запускается с тайм-аутом 0ms, обработайте его как время ожидания 1 мс, чтобы избежать рекурсивных обратных вызовов. Не забудьте также вызывать curl_multi_socket_action явно по крайней мере один раз после вызовов curl_multi_add_handle.
Управление памятью и использование
- Отслеживайте использование памяти приложения с помощью API ОС Azure Sphere и убедитесь, что приложения реагируют соответствующим образом на непредвиденное использование памяти.
Рекомендации по проектированию основных приложений в режиме реального времени
- Включите таймер watchdog MT3620, чтобы обнаружить взаимоблокировку и реализовать правильную логику восстановления.
- Реализуйте межядерные коммуникации для гибридных приложений HL-core и RT-core.
Рекомендации по проектированию решений
Требования к подключению и устранение неполадок
- Убедитесь, что выполнены все предварительные требования к сети. Дополнительные сведения см. в разделе "Требования к подключению" и "Устранение неполадок".
- Устранение неполадок с подключением с помощью
OSNetworkRequirementCheck-HLApp
иOSNetworkRequirementChecker-PC
.
Рекомендуемое содержимое
Дополнительные элементы, которые следует учитывать при перемещении решения Интернета вещей в рабочую среду, см. в статье "Перемещение решения Интернета вещей из тестирования в рабочую среду".