Поделиться через


Создание партнерских приложений

Самый простой способ создать новую пару партнерских приложений — создать каталог верхнего уровня, содержащий приложения высокого уровня и приложения с поддержкой реального времени, а затем создать высокоуровневые приложения, поддерживая режим реального времени.

Создание высокоуровневого приложения

Чтобы создать высокоуровневое приложение, начните с шаблона HLCore Blank из расширения azure Sphere Visual Studio Code и настройте конфигурацию проекта, выполнив следующие действия:

  1. Запустите Visual Studio Code. Выберите Просмотр>палитры команд, а затем введите Azure Sphere: Generate New Project (Azure Sphere: Generate New Project).

    Панель команд в Visual Studio Code

  2. Выберите HLCore Blank в меню Шаблоны.

    всплывающее меню с именами шаблонов

  3. Visual Studio Code отобразится окно проводник. Перейдите в папку, в которую нужно поместить пустое приложение (или выберите Создать папку и создайте каталог проекта верхнего уровня) и укажите имя проекта, например NewHLApp. Visual Studio Code создает папку NewHLApp в выбранном расположении и создает файлы сборки для пустого приложения. Вы должны увидеть сообщения из CMake.

  4. Откройте файл 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:

  1. Клонируйте репозиторий примеров , если вы еще этого не сделали. Скопируйте одну из папок приложения высокого уровня и переименуйте ее для проекта.

  2. В файле CMakeLists.txt измените имя проекта на имя новой папки. Например:

    PROJECT(NewHLApp C)

Создание ПРИЛОЖЕНИЯ RTApp

Чтобы создать новое приложение в режиме реального времени, начните с шаблона RTCore Blank из расширения azure Sphere Visual Studio Code и настройте конфигурацию проекта, выполнив следующие действия.

  1. Запустите Visual Studio Code. Выберите Просмотр>палитры команд, а затем введите Azure Sphere: Generate New Project (Azure Sphere: Generate New Project).

    Панель команд в Visual Studio Code

  2. Выберите RTCore Blank в меню Шаблоны.

    всплывающее меню с именами шаблонов

  3. Visual Studio Code отобразится окно проводник. Перейдите в папку, содержащую папку приложения высокого уровня, и укажите имя проекта, например NewRTApp. Visual Studio Code создает папку NewRTApp в выбранном расположении и создает файлы сборки для пустого приложения. Вы должны увидеть сообщения из CMake.

Вы также можете создать новое приложение с поддержкой реального времени из любого из примеров Azure Sphere с поддержкой реального времени:

  1. Клонируйте репозиторий примеров , если вы еще этого не сделали. Скопируйте одну из папок приложения высокого уровня и переименуйте ее для проекта.

  2. В файле CMakeLists.txt измените имя проекта на имя новой папки. Например:

    PROJECT(NewRTApp C)

Настройка рабочей области для разработки партнерских приложений

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

  1. Откройте папку приложения высокого уровня в Visual Studio Code.

  2. Выберите Файл>Добавить папку в рабочую область, а затем выберите папку приложения с поддержкой реального времени.

  3. Выберите Файл>Сохранить рабочую область как..., а затем сохраните файл в папке, содержащей приложения, поддерживающие режим реального времени, и приложения высокого уровня.

  4. Откройте файл рабочей области в текстовом редакторе и добавьте следующие сведения о запуске сразу после "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 и настройте конфигурацию в соответствии с проектом, выполнив следующие действия:

  1. Запустите Visual Studio и выберите Создать проект.

  2. Введите Azure Sphere в поле поиска метку Поиск шаблонов. Выберите Azure Sphere HLCore Blank в возвращенном списке, а затем нажмите кнопку Далее.

  3. Укажите имя проекта (например, NewHLApp), расположение файла проекта и имя решения (которое может совпадать с именем проекта), а затем нажмите кнопку Создать. Visual Studio создает папку NewHLpp в выбранном расположении и создает файлы сборки для пустого приложения. Вы должны увидеть сообщения из CMake.

  4. Откройте файл 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:

  1. Клонируйте репозиторий примеров , если вы еще этого не сделали. Скопируйте одну из папок приложения высокого уровня и переименуйте ее для проекта.

  2. В файле CMakeLists.txt измените имя проекта на имя новой папки. Например:

    PROJECT(NewHLApp C)

Создание ПРИЛОЖЕНИЯ RTApp

Чтобы создать новое приложение с поддержкой реального времени, начните с шаблона RTCore Blank из расширения Visual Studio Azure Sphere и настройте конфигурацию в соответствии с проектом, выполнив следующие действия.

  1. Запустите Visual Studio и выберите Создать проект.

  2. Введите Azure Sphere в поле поиска метку Поиск шаблонов. Выберите Azure Sphere RTCore Blank в возвращенном списке, а затем нажмите кнопку Далее.

  3. Укажите имя проекта (например, NewRTApp), расположение файла проекта и имя решения, используемое для высокоуровневого приложения, а затем нажмите кнопку Создать. Visual Studio создает папку NewRTApp в выбранном расположении и создает файлы сборки для пустого приложения. Вы должны увидеть сообщения из CMake.

Вы также можете создать новое приложение с поддержкой реального времени из любого из примеров Azure Sphere с поддержкой реального времени:

  1. Клонируйте репозиторий примеров , если вы еще этого не сделали. Скопируйте одну из папок приложений с поддержкой реального времени и переименуйте ее для проекта.

  2. В файле 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:

  1. Клонируйте репозиторий примеров , если вы еще этого не сделали. Скопируйте одну из папок приложения высокого уровня и переименуйте ее для проекта.

  2. В файле CMakeLists.txt измените имя проекта на имя новой папки. Например:

    PROJECT(NewHLApp C)

Создание ПРИЛОЖЕНИЯ RTApp

Самый простой способ создать новое приложение с поддержкой реального времени — начать с примера HelloWorld_RTApp_MT3620_BareMetal и настроить конфигурацию в соответствии с проектом, выполнив следующие действия:

  1. Клонируйте репозиторий примеров , если вы еще этого не сделали. Скопируйте папку HelloWorld_RTApp_MT3620_BareMetal и переименуйте ее для проекта.

  2. В файле 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, чтобы точно указать, где в ядре реального времени будут загружаться различные компоненты приложения.

Написание кода приложения высокого уровня

  1. Напишите код приложения высокого уровня, используя примеры высокоуровневых приложений Azure Sphere в качестве руководств. В следующих разделах описываются конкретные сценарии реализации.
  2. В файлеCMakeLists.txt:
    • Указание редакции средств пакета SDK для Azure Sphere
    • Указание целевого набора API
    • Указание целевого оборудования
  3. В файле app_manifest.json:
    • Задайте Name имя проекта.
    • Добавьте все возможности приложения, необходимые для кода, такие как аппаратные ресурсы или подключения. Если высокоуровневое приложение взаимодействует с RTApp, добавьте в возможность идентификатор компонента приложения высокого уровня AllowedApplicationConnections .
  1. Если вы хотите развернуть приложение RTApp вместе с высокоуровневым партнерским приложением, добавьте идентификатор компонента партнера в поле partnerComponents раздела конфигураций файла launch.vs.json (Visual Studio) или .vscode/launch.json (Visual Studio Code).

    "partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]

Написание кода RTApp

  1. Напишите код RTApp, используя примеры RTApp для Azure Sphere в качестве руководств. В следующих разделах описываются конкретные сценарии реализации.
  2. В файле app_manifest.json:
    • Задайте Name имя проекта.
    • Задайте значение ApplicationType"RealTimeCapable"
    • Добавьте все возможности приложения, необходимые для кода, такие как аппаратные ресурсы или подключения. Если RTApp взаимодействует с приложением высокого уровня, добавьте в возможность идентификатор компонента приложения высокого уровня AllowedApplicationConnections .
  1. Если вы хотите развернуть приложение RTApp вместе с высокоуровневым партнерским приложением, добавьте идентификатор компонента партнера в поле partnerComponents раздела конфигураций файла launch.vs.json (Visual Studio) или .vscode/launch.json (Visual Studio Code).

    "partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]

См. также