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

Высокоуровневое приложение работает в ОС Azure Sphere, использует библиотеки приложений Azure Sphere и может взаимодействовать с Интернетом и облачными службами. Основные сведения о высокоуровневых приложениях см. в статье Обзор приложений Azure Sphere .

Из этого руководства вы узнаете, как:

  • Подготовка устройства к разработке и отладке
  • Создание, запуск и отладка высокоуровневого приложения

Необходимые условия

Подготовка устройства к разработке и отладке

Прежде чем создавать пример приложения на устройстве Azure Sphere или разрабатывать для него новые приложения, необходимо включить разработку и загрузку неопубликованных приложений. По умолчанию устройства Azure Sphere заблокированы; то есть они не разрешают загрузку разрабатываемых приложений с компьютера и не разрешают отладку приложений. При подготовке устройства к загрузке неопубликованных приложений это ограничение удаляется.

Команда azsphere device enable-development настраивает устройство на прием приложений для отладки, загружает сервер отладки на устройство и назначает устройство группе устройств , которая не разрешает обновления облачных приложений. Во время разработки и отладки приложений следует оставить устройство в этой группе, чтобы обновления облачных приложений не перезаписывало разрабатываемое приложение.

  1. Убедитесь, что устройство Azure Sphere подключено к компьютеру, а компьютер подключен к Интернету.

  2. Откройте интерфейс командной строки с помощью PowerShell, командной строки Windows или командной оболочки Linux.

  3. Введите следующую команду:

    azsphere device enable-development
    

    Выходные данные должны выглядеть примерно так:

    Getting device capability configuration for application development.
    Downloading device capability configuration for device ID '<device ID>'.
    Successfully downloaded device capability configuration.
    Successfully wrote device capability configuration file 'C:\Users\user\AppData\Local\Temp\tmpD732.tmp'.
    Setting device group ID 'a6df7013-c7c2-4764-8424-00cbacb431e5' for device with ID '<device ID>'.
    Successfully disabled over-the-air updates.
    Enabling application development capability on attached device.
    Applying device capability configuration to device.
    Successfully applied device capability configuration to device.
    The device is rebooting.
    Installing debugging server to device.
    Deploying 'C:\Program Files (x86)\Microsoft Azure Sphere SDK\DebugTools\gdbserver.imagepackage' to the attached device.
    Image package 'C:\Program Files (x86)\Microsoft Azure Sphere SDK\DebugTools\gdbserver.imagepackage' has been deployed to the attached device.
    Application development capability enabled.
    Successfully set up device '<device ID>' for application development, and disabled over-the-air updates.
    Command completed successfully in 00:00:38.3299276.
    

Если команда azsphere device enable-development завершается ошибкой, см . статью Устранение неполадок Azure Sphere .

Создание и запуск высокоуровневого приложения с помощью Visual Studio Code

В этом руководстве используется шаблон Azure Sphere Blink, который является частью расширения Azure Sphere для Visual Studio Code. Шаблон Blink мигает светодиодным индикатором, чтобы убедиться, что устройство и средства Azure Sphere установлены и настроены правильно.

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

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

  2. Выберите Мигать в меню Шаблоны.

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

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

  4. Откройте файл CMakeLists.txt и измените параметр TARGET_DIRECTORY, чтобы указать папку, содержащую определения для используемого оборудования. По умолчанию TARGET_DIRECTORY указывает HardwareDefinitions/mt3620_rbd, который соответствует пакету средств разработки Seeed Azure Sphere MT3620:

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "template_appliance.json")
    

    Шаблон содержит несколько определений оборудования. Например, если вы используете мини-плату разработки SEEED MT3620, укажите hardwareDefinitions/seeed_mt3620_mdb.

  5. Нажмите клавишу F5, чтобы выполнить сборку и отладку проекта. Если проект ранее не был создан или файлы изменились и требуется перестроение, Visual Studio Code выполнит сборку проекта до начала отладки.

  6. Подождите несколько секунд, пока Visual Studio Code создадут приложение, создадут пакет образа, разверните его на плате и запустите в режиме отладки. Попутно вы увидите обновления состояния в области Выходные данные .

    Во-первых, CMake определяет, требуется ли сборка приложения. Если это так, фокус переместится на панель вывода, в которой отображаются выходные данные из CMake/Build.

    Далее на панели выходных данных отображаются выходные данные Из Azure Sphere при развертывании пакета образа на устройстве. Наконец, консоль отладки получает фокус и отображает выходные данные gdb.

    Совет

    Запишите расположение пакета образа, так как оно понадобится при создании развертывания. В окне Выходные данные должно появиться сообщение "Сборка файлов, записанных по <пути>", где <путь> — это полный путь к папке сборки приложения Blink, который обычно заканчивается на "out\ARM-Debug" или "out/ARM-Debug".

  7. После небольшой задержки вы увидите мигание светодиодных индикаторов.

  8. Установите точку останова в main.c и пошаговое выполнение приложения, чтобы вы могли изучить функции отладки Visual Studio Code для Azure Sphere.

Создание и запуск высокоуровневого приложения с помощью Visual Studio

В этом руководстве используется шаблон Azure Sphere Blink, который является частью расширения Azure Sphere для Visual Studio. Шаблон Blink мигает светодиодным индикатором, чтобы убедиться, что устройство и средства Azure Sphere установлены и настроены правильно.

  1. Если вы еще не знакомы с Visual Studio, ознакомьтесь с кратким руководством или интерактивным обзором , чтобы узнать о переходе по visual Studio и его использовании.

  2. Откройте Visual Studio и выберите Создать проект. В поле Поиск введите azure sphere, чтобы получить список шаблонов Azure Sphere. Выберите Azure Sphere Blink в списке.

  3. Введите имя и расположение проекта, а затем нажмите кнопку Создать.

  4. Откройте файл CMakeLists.txt и измените параметр TARGET_DIRECTORY, чтобы указать папку, содержащую определения для используемого оборудования. По умолчанию TARGET_DIRECTORY указывает HardwareDefinitions/mt3620_rbd, который соответствует пакету средств разработки Seeed Azure Sphere MT3620:

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "template_appliance.json")
    

    Шаблон содержит несколько определений оборудования. Например, если вы используете мини-плату разработки SEEED MT3620, укажите hardwareDefinitions/seeed_mt3620_mdb.

  5. В Visual Studio выберите Просмотреть>выходные данные , чтобы отобразить панель Вывод .

  6. Убедитесь, что устройство подключено к компьютеру через USB. В меню Задать элемент запуска выберите Приложение Azure Sphere (HLCore), где приложение Azure Sphere — это имя текущего высокоуровневого приложения, или нажмите клавишу F5.

    Кнопка удаленного отладчика GDB

  7. Если вам будет предложено выполнить сборку проекта, нажмите кнопку Да. Visual Studio компилирует приложение, создает пакет образа, загружает его на доску и запускает в режиме отладки. Загрузка неопубликованных приложений означает, что приложение доставляется непосредственно с компьютера через проводное подключение, а не через облако.

    Совет

    Запишите расположение пакета образа, так как он понадобится при создании развертывания. Должно появиться сообщение "Выходной файл по адресу: <путь>" в выходных данных в разделе Просмотр>выходных>данных Показать выходные данные из: Build, где <путь> — это полный путь к папке сборки приложения Blink, который обычно заканчивается на out/ARM-Debug.

  8. По умолчанию на панели Вывод отображаются выходные данные из выходных данных устройства. Чтобы просмотреть сообщения отладчика, выберите Отладка в раскрывающемся меню Показать выходные данные из: Вы также можете проверить дизассемблю, регистры или память программы с помощью меню Отладка>Windows .

  9. При запуске программы должно отобразиться мигание индикатора.

Скачивание примера приложения

Скачать приложение HelloWorld можно следующим образом:

  1. Укажите в браузере пункт Microsoft Samples Browser.
  2. Введите Azure Sphere в поле Поиск.
  3. Выберите Azure Sphere — Hello World в результатах поиска.
  4. Выберите Скачать ZIP-файл.
  5. Откройте скачанный файл и извлеките его в локальный каталог.

Создание примера

Чтобы создать файлы сборки и imagepackage для примера приложения HelloWorld_HighLevelApp, выполните следующие действия.

  1. При необходимости обновите пример для назначения оборудования. По умолчанию примеры предназначены для оборудования, которое соответствует конструкции эталонной платы (RDB) MT3620, например пакет средств разработки MT3620 от Seeed Studios. Дополнительные определения целевого оборудования для примеров приложений доступны в каталоге HardwareDefinitions репозитория примеров Azure Sphere. Например, файлы определения оборудования для начального пакета Avnet MT3620 находятся в подкаталоге HardwareDefinitions/avnet_mt3620_sk.

    • Откройте CMakeLists.txt и обновите параметр TARGET_DIRECTORY в функции azure_target_hardware_definition , чтобы он указывал на подкаталог для оборудования. Например:

      azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "../../../HardwareDefinitions/avnet_mt3620_sk" TARGET_DEFINITION "sample_appliance.json")
      
  2. Откройте интерфейс командной строки с помощью PowerShell, командной строки Windows или командной оболочки Linux. Перейдите в каталог сборки проекта.

  3. В каталоге сборки проекта в командной строке запустите CMake со следующими параметрами:

    cmake --preset <preset-name> <source-path>
    
    • --preset <preset-name>

      Имя предустановки конфигурации сборки, определенное в CMakePresets.json.

    • --build <cmake-path>

      Двоичный каталог, содержащий кэш CMake. Например, при запуске CMake в примере Azure Sphere команда сборки будет иметь значение cmake --build out/ARM-Debug.

    • <source-path>

      Путь к каталогу, который содержит исходные файлы для примера приложения. В этом примере репозиторий примеров Azure Sphere был скачан в каталог AzSphere.

      Параметры CMake разделяются пробелами. Символ продолжения строки (^ для командной строки Windows, \ для командной строки Linux или " для PowerShell) можно использовать для удобства чтения, но он не является обязательным.

    В следующих примерах показаны команды CMake для высокоуровневого приложения Hello World:

    Командная строка Windows

     cmake ^
     --preset "ARM-Debug" ^
     "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_HighLevelApp"
    

    Windows PowerShell

     cmake `
     --preset "ARM-Debug" `
     "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_HighLevelApp"
    
  4. Запустите Ninja, чтобы создать приложение и создать файл пакета образа:

    ninja -C out/ARM-Debug
    

    Ninja помещает результирующие файлы приложения и imagepackage в указанный каталог.

    Вы также можете вызвать Ninja через CMake с помощью следующей команды:

    cmake --build out/<binary-dir>
    

    Задайте <binary-dir> двоичный каталог, содержащий кэш CMake. Например, при запуске CMake в примере Azure Sphere команда сборки будет иметь значение cmake --build out/ARM-Debug.

    При устранении неполадок, особенно после внесения изменений в команды CMake, удалите всю сборку и повторите попытку.

Запуск примера

  1. Если на устройстве уже запущено приложение, удалите его:

    azsphere device sideload delete
    
  2. Перейдите в каталог, содержащий созданные ранее файлы сборки и imagepackage.

  3. Загрузите пакет образа на устройство, выполнив команду azsphere device sideload deploy и указав пакет образа. Например:

    azsphere device sideload deploy --image-package HelloWorld_HighLevelApp.imagepackage
    

    Эта команда загружает пакет образа и запускает приложение. Должно появиться мигание индикатора.

    Совет

    Обратите внимание на путь к пакету изображений. Пакет образа будет использоваться далее в кратком руководстве по развертыванию.

Отладка примера

  1. Перейдите в каталог, содержащий созданные ранее файлы сборки и imagepackage.

  2. Получите идентификатор компонента, если у вас его еще нет:

    azsphere image-package show --image-package HelloWorld_HighLevelApp.imagepackage
    

  1. Если приложение запущено, остановите его, а затем перезапустите с параметром --debug-mode :

    azsphere device app stop --component-id <ComponentId>
    
    azsphere device app start --debug-mode --component-id <ComponentId>
    

Вы увидите следующее:

 <ComponentId>
 App state   : debugging
 GDB port    : 2345
 Output port : 2342
 Core        : High-level
  1. Используйте клиент терминала для установки Telnet или необработанного TCP-подключения для считывания выходного потока из процесса. Укажите 192.168.35.2 в качестве IP-адреса и 2342 в качестве порта.

  2. Откройте интерфейс командной строки с помощью PowerShell или стандартной командной строки в Windows или командной оболочки в Linux и передайте двоичный файл приложения .out из сборки в качестве параметра. Это позволит выполнить полную отладку исходного кода.

    Командная строка Windows

    "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb" HelloWorld_HighLevelApp.out
    

    Windows PowerShell

    & "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb" HelloWorld_HighLevelApp.out
    

    Примечание

    Пакет SDK для Azure Sphere поставляется с несколькими системными ролями , чтобы приложения могли ориентироваться на различные наборы API, как описано в разделе Версия среды выполнения приложения, sysroots и бета-версии API. Sysroots устанавливаются в папке установки пакета SDK для Azure Sphere в разделе Sysroots.

  3. Задайте для цели удаленной отладки IP-адрес 192.168.35.2 через порт 2345:

    target remote 192.168.35.2:2345

  4. Выполните любые другие выбранные команды gdb. Например, следующие команды задают точку останова при входе в значение main(), а затем продолжают выполнение после точки останова соответственно.

    break main
    
    c
    

    Дополнительные сведения об отладке с помощью gdb см. в разделе GDB: отладчик проектов GNU или в одном из других многочисленных источников по этой теме.

Дальнейшие действия

Вы создали высокоуровневое приложение для запуска на устройстве Azure Sphere. Вы можете изменить его сейчас. В определениях оборудования описывается изменение JSON-файла определения оборудования и повторное создание связанного файла заголовка.

Далее узнайте, как развернуть высокоуровневое приложение из облака.

См. также

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