Создание партнерских приложений
Самый простой способ создать новую пару партнерских приложений — создать каталог верхнего уровня, содержащий приложения высокого уровня и приложения с поддержкой реального времени, а затем создать высокоуровневые приложения, поддерживая режим реального времени.
Создание высокоуровневого приложения
Чтобы создать высокоуровневое приложение, начните с шаблона HLCore Blank из расширения azure Sphere Visual Studio Code и настройте конфигурацию проекта, выполнив следующие действия:
Запустите Visual Studio Code. Выберите Просмотр>палитры команд, а затем введите Azure Sphere: Generate New Project (Azure Sphere: Generate New Project).
Выберите HLCore Blank в меню Шаблоны.
Visual Studio Code отобразится окно проводник. Перейдите в папку, в которую нужно поместить пустое приложение (или выберите Создать папку и создайте каталог проекта верхнего уровня) и укажите имя проекта, например NewHLApp. Visual Studio Code создает папку NewHLApp в выбранном расположении и создает файлы сборки для пустого приложения. Вы должны увидеть сообщения из CMake.
Откройте файл CMakeLists.txt и укажите папку, содержащую определения используемого оборудования. По умолчанию приложение HLCore Blank не содержит определений оборудования. Примеры определений оборудования можно найти в репозитории Примеры Azure Sphere или создать, как описано в разделе Определения оборудования.
Ниже показано, как добавить примеры определений оборудования для seeed Azure Sphere MT3620 Development Kit:
azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "sample_appliance.json")
Эта строка должна быть вставлена перед последней командой, начинающуюся
azsphere_target_add_image_package
с .
Вы также можете создать новое высокоуровневое приложение из любого из высокоуровневых примеров Azure Sphere:
Клонируйте репозиторий примеров , если вы еще этого не сделали. Скопируйте одну из папок приложения высокого уровня и переименуйте ее для проекта.
В файле CMakeLists.txt измените имя проекта на имя новой папки. Например:
PROJECT(NewHLApp C)
Создание ПРИЛОЖЕНИЯ RTApp
Чтобы создать новое приложение в режиме реального времени, начните с шаблона RTCore Blank из расширения azure Sphere Visual Studio Code и настройте конфигурацию проекта, выполнив следующие действия.
Запустите Visual Studio Code. Выберите Просмотр>палитры команд, а затем введите Azure Sphere: Generate New Project (Azure Sphere: Generate New Project).
Выберите RTCore Blank в меню Шаблоны.
Visual Studio Code отобразится окно проводник. Перейдите в папку, содержащую папку приложения высокого уровня, и укажите имя проекта, например NewRTApp. Visual Studio Code создает папку NewRTApp в выбранном расположении и создает файлы сборки для пустого приложения. Вы должны увидеть сообщения из CMake.
Вы также можете создать новое приложение с поддержкой реального времени из любого из примеров Azure Sphere с поддержкой реального времени:
Клонируйте репозиторий примеров , если вы еще этого не сделали. Скопируйте одну из папок приложения высокого уровня и переименуйте ее для проекта.
В файле CMakeLists.txt измените имя проекта на имя новой папки. Например:
PROJECT(NewRTApp C)
Настройка рабочей области для разработки партнерских приложений
Чтобы эффективно объединить высокоуровневое приложение и приложение с поддержкой реального времени для разработки, объедините два приложения в одну рабочую область с несколькими корнями следующим образом:
Откройте папку приложения высокого уровня в Visual Studio Code.
Выберите Файл>Добавить папку в рабочую область, а затем выберите папку приложения с поддержкой реального времени.
Выберите Файл>Сохранить рабочую область как..., а затем сохраните файл в папке, содержащей приложения, поддерживающие режим реального времени, и приложения высокого уровня.
Откройте файл рабочей области в текстовом редакторе и добавьте следующие сведения о запуске сразу после
"settings"
строки:
"launch": {
"configurations": [{
"name": "Launch Azure Sphere Apps (All Cores)",
"type": "azurespheredbg",
"request": "launch",
"args": [],
"stopAtEntry": false,
"environment": [],
"externalConsole": true,
"partnerComponents": [],
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}],
"compounds": []
}
Дополнительные сведения о рабочих областях с несколькими корнями см. в документации по Visual Studio Code.
Создание высокоуровневого приложения
Чтобы создать новое высокоуровневое приложение, начните с шаблона HLCore Blank из расширения Visual Studio Azure Sphere и настройте конфигурацию в соответствии с проектом, выполнив следующие действия:
Запустите Visual Studio и выберите Создать проект.
Введите
Azure Sphere
в поле поиска метку Поиск шаблонов. Выберите Azure Sphere HLCore Blank в возвращенном списке, а затем нажмите кнопку Далее.Укажите имя проекта (например, NewHLApp), расположение файла проекта и имя решения (которое может совпадать с именем проекта), а затем нажмите кнопку Создать. Visual Studio создает папку NewHLpp в выбранном расположении и создает файлы сборки для пустого приложения. Вы должны увидеть сообщения из CMake.
Откройте файл CMakeLists.txt и укажите папку, содержащую определения используемого оборудования. По умолчанию пустое приложение HL не содержит определений оборудования. Примеры определений оборудования можно найти в репозитории Примеры Azure Sphere или создать, как описано в разделе Определения оборудования.
Ниже показано, как добавить примеры определений оборудования для seeed Azure Sphere MT3620 Development Kit:
azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "sample_appliance.json")
Эта строка должна быть вставлена перед последней командой, начинающуюся
azsphere_target_add_image_package
с .
Вы также можете создать новое высокоуровневое приложение из любого из высокоуровневых примеров Azure Sphere:
Клонируйте репозиторий примеров , если вы еще этого не сделали. Скопируйте одну из папок приложения высокого уровня и переименуйте ее для проекта.
В файле CMakeLists.txt измените имя проекта на имя новой папки. Например:
PROJECT(NewHLApp C)
Создание ПРИЛОЖЕНИЯ RTApp
Чтобы создать новое приложение с поддержкой реального времени, начните с шаблона RTCore Blank из расширения Visual Studio Azure Sphere и настройте конфигурацию в соответствии с проектом, выполнив следующие действия.
Запустите Visual Studio и выберите Создать проект.
Введите
Azure Sphere
в поле поиска метку Поиск шаблонов. Выберите Azure Sphere RTCore Blank в возвращенном списке, а затем нажмите кнопку Далее.Укажите имя проекта (например, NewRTApp), расположение файла проекта и имя решения, используемое для высокоуровневого приложения, а затем нажмите кнопку Создать. Visual Studio создает папку NewRTApp в выбранном расположении и создает файлы сборки для пустого приложения. Вы должны увидеть сообщения из CMake.
Вы также можете создать новое приложение с поддержкой реального времени из любого из примеров Azure Sphere с поддержкой реального времени:
Клонируйте репозиторий примеров , если вы еще этого не сделали. Скопируйте одну из папок приложений с поддержкой реального времени и переименуйте ее для проекта.
В файле CMakeLists.txt измените имя проекта на имя новой папки. Например:
PROJECT(NewRTApp C)
Создание файла запуска Visual Studio верхнего уровня
Чтобы одновременно работать с партнерскими приложениями, необходимо разрешить Visual Studio выполнять отладку в нескольких ядрах. Это можно включить, создав файл launch.vs.json в папке верхнего уровня, содержащей две папки партнерского приложения. Этот файл должен содержать следующее содержимое:
{
"version": "0.2.1",
"defaults": {},
"configurations": [
{
"type": "azurespheredbg",
"name": "Azure Sphere Apps (All Cores)",
"project": "PartnerAppsHL/CMakeLists.txt",
"DebugBuildStepBuildAll": "true",
"workingDirectory": "${workspaceRoot}",
"applicationPath": "${debugInfo.target}",
"imagePath": "${debugInfo.targetImage}",
"targetCore": "AnyCore",
"partnerComponents": [ "0cc81b35-08dd-4d65-b318-5fa73a4ff6b1", "a9d25f0a-807e-4cb9-80e8-80fee5a1bcb4" ]
}
]
}
Строка "project"
должна содержать относительный путь к файлу CMakeLists.txt приложения высокого уровня, а "partnerComponents"
строка должна содержать идентификаторы компонентов двух партнерских приложений.
Создав этот файл launch.vs.json верхнего уровня, вы можете открыть Visual Studio в папке верхнего уровня, и вы увидите параметр Приложения Azure Sphere (все ядра) в меню Выбор элемента автозапуска .
Создание файла CMakeWorkspaceSettings.json
Если вы используете Visual Studio 2022 версии 17.1 или более поздней и у вас есть проект с несколькими корнями, например пример IntercoreComms, необходимо добавить файл CMakeWorkspaceSettings.json в папку верхнего уровня проекта. Файл содержит две записи: одна указывает, что сборка CMake включена, а другая содержит пути к нескольким корням. Например, для примера IntercoreComms файл CMakeWorkspaceSettings.json содержит следующее содержимое:
{
"enableCMake": true,
"sourceDirectory": [ "IntercoreComms_HighLevelApp", "IntercoreComms_RTApp_MT3620_BareMetal" ]
}
Пути указываются относительно папки, содержащей файл CMakeWorkspaceSettings.json.
Создание высокоуровневого приложения
Чтобы создать новое высокоуровневое приложение, начните с любого из высокоуровневых примеров Azure Sphere:
Клонируйте репозиторий примеров , если вы еще этого не сделали. Скопируйте одну из папок приложения высокого уровня и переименуйте ее для проекта.
В файле CMakeLists.txt измените имя проекта на имя новой папки. Например:
PROJECT(NewHLApp C)
Создание ПРИЛОЖЕНИЯ RTApp
Самый простой способ создать новое приложение с поддержкой реального времени — начать с примера HelloWorld_RTApp_MT3620_BareMetal и настроить конфигурацию в соответствии с проектом, выполнив следующие действия:
Клонируйте репозиторий примеров , если вы еще этого не сделали. Скопируйте папку HelloWorld_RTApp_MT3620_BareMetal и переименуйте ее для проекта.
В файле CMakeLists.txt измените имя проекта на имя новой папки. Например:
PROJECT(NewRTApp C)
Базовая структура файлов приложений Azure Sphere
Независимо от того, как вы создаете приложение, все приложения Azure Sphere используют следующие основные файлы:
- Исходный код приложения в одном или нескольких файлах. В настоящее время поддерживается только исходный код на языке C.
- Файлы сборки CMake. требуется CMakeLists.txt. CMake вместе со служебной программой упрощенной сборки ninja используется для управления процессом сборки приложения Azure Sphere.
- Файл манифеста приложения , описывающий возможности, доступные приложению.
Высокоуровневые приложения обычно имеют по крайней мере три других файла:
- Файл applibs-versions.h для указания уровней версий различных API Azure Sphere
- Два файла определения оборудования (редактируемая версия в формате JSON и созданный из него файл C- языка), которые предоставляют удобный способ ссылки на аппаратные компоненты в коде. С помощью согласованного набора файлов определения оборудования можно написать аппаратный независимый исходный код, а затем создать образы приложений для определенного оборудования, просто повторно нацелив соответствующий файл определения оборудования в файле CMakeLists.txt.
Приложения с поддержкой реального времени добавляют по крайней мере еще один файл: файл linker.ld, чтобы точно указать, где в ядре реального времени будут загружаться различные компоненты приложения.
Написание кода приложения высокого уровня
- Напишите код приложения высокого уровня, используя примеры высокоуровневых приложений Azure Sphere в качестве руководств. В следующих разделах описываются конкретные сценарии реализации.
- Использование периферийных устройств в высокоуровневом приложении
- Подключение к веб-службам
- Использование wolfSSL для подключений TLS
- Управление сертификатами
- Общие сведения об использовании памяти
- Отложить обновления устройств
- Управление временем и использование часов в режиме реального времени
- Использование хранилища устройств
- Взаимодействие с приложением с поддержкой реального времени
- Управление состоянием выключения питания
- Настройка профилей питания
- Выполнение обнаружения служб
- В файлеCMakeLists.txt:
- Указание редакции средств пакета SDK для Azure Sphere
- Указание целевого набора API
- Указание целевого оборудования
- В файле app_manifest.json:
- Задайте
Name
имя проекта. - Добавьте все возможности приложения, необходимые для кода, такие как аппаратные ресурсы или подключения. Если высокоуровневое приложение взаимодействует с RTApp, добавьте в возможность идентификатор компонента приложения высокого уровня
AllowedApplicationConnections
.
- Задайте
Если вы хотите развернуть приложение RTApp вместе с высокоуровневым партнерским приложением, добавьте идентификатор компонента партнера в поле partnerComponents раздела конфигураций файла launch.vs.json (Visual Studio) или .vscode/launch.json (Visual Studio Code).
"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
Написание кода RTApp
- Напишите код RTApp, используя примеры RTApp для Azure Sphere в качестве руководств. В следующих разделах описываются конкретные сценарии реализации.
- В файле app_manifest.json:
- Задайте
Name
имя проекта. - Задайте значение
ApplicationType
"RealTimeCapable"
- Добавьте все возможности приложения, необходимые для кода, такие как аппаратные ресурсы или подключения. Если RTApp взаимодействует с приложением высокого уровня, добавьте в возможность идентификатор компонента приложения высокого уровня
AllowedApplicationConnections
.
- Задайте
Если вы хотите развернуть приложение RTApp вместе с высокоуровневым партнерским приложением, добавьте идентификатор компонента партнера в поле partnerComponents раздела конфигураций файла launch.vs.json (Visual Studio) или .vscode/launch.json (Visual Studio Code).
"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]