Создание приложения с поддержкой реального времени

Вы можете использовать Visual Studio, Visual Studio Code или командную строку (CLI) для разработки и отладки приложений с поддержкой реального времени (RTApp) практически так же, как и высокоуровневых приложений.

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

Включение разработки и отладки

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

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

В Windows необходимо добавить --enable-rt-core-debugging параметр , который загружает серверы отладки и необходимые драйверы для каждого типа ядра на устройство.

  1. Войдите в Azure Sphere, если вы еще этого не сделали:

    az login
    
  2. Откройте интерфейс командной строки с помощью PowerShell или командной строки Windows с правами администратора. Для --enable-rt-core-debugging параметра требуются права администратора, так как он устанавливает USB-драйверы для отладчика.

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

    az sphere device enable-development --enable-rt-core-debugging  --catalog <CatalogName>  --resource-group <ResourceGroupName>
    
  4. Закройте окно после завершения команды, так как права администратора больше не требуются. Рекомендуется всегда использовать наименьшие привилегии, которые могут выполнить задачу.

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

Включение разработки и отладки

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

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

В Windows необходимо добавить --enable-rt-core-debugging параметр , который загружает серверы отладки и необходимые драйверы для каждого типа ядра на устройство.

  1. Войдите в Azure, если вы еще этого не сделали:

    az login
    
  2. Откройте интерфейс командной строки с помощью PowerShell, командной строки Windows или командной оболочки Linux с правами администратора. Для --enable-rt-core-debugging параметра требуются права администратора, так как он устанавливает USB-драйверы для отладчика.

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

    az sphere device enable-development --enable-rt-core-debugging
    
  4. Закройте окно после завершения команды, так как права администратора больше не требуются. Рекомендуется всегда использовать наименьшие привилегии, которые могут выполнить задачу.

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

error: The device did not accept the device capability configuration. Please check the Azure Sphere OS on your device is up-to-date using 'az sphere device show-deployment-status'.

Создание приложения RTApp с помощью Visual Studio Code

Чтобы создать ПРИЛОЖЕНИЕ RTApp, выполните приведенные далее действия.

  1. В Visual Studio Code откройте папку HelloWorld_RTApp_MT3620_BareMetal в клоне репозитория примеров Azure Sphere. Если вам будет предложено выбрать комплект, выберите "Не использовать комплект".

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

  3. Эмулятор подключенного терминала должен отображать выходные данные из приложения. Программа отправляет следующие слова через одну секунду:

    Tick

    Tock

    Примечание

    Visual Studio Code предоставляет Intellisense, но не обновляется автоматически при изменении CMakeLists.txt. Чтобы обновить Intellisense, необходимо выполнить команду CMake: Delete Cache и Reconfigure . Представление целевых объектов CMake можно найти в представлении расширения CMake на левой панели.

Создание ПРИЛОЖЕНИЯ RTApp с помощью Visual Studio

Чтобы создать ПРИЛОЖЕНИЕ RTApp, выполните приведенные далее действия.

  1. В Visual Studio выберите Файл>CMake и перейдите к папке, содержащей пример.

  2. Если создание CMake не запускается автоматически, выберите файл CMakeLists.txt.

  3. В Visual Studio просмотрите>выходные>данные, показать выходные данные из: В выходных данных CMake должны отображаться сообщения CMake generation started. и CMake generation finished.

  4. В меню CMake (если он имеется) выберите Сборка всех. Если меню отсутствует, откройте Обозреватель решений, щелкните правой кнопкой мыши файл CMakeLists.txt и выберите Сборка. Выходное расположение приложения Azure Sphere появится в окне Вывод .

  5. Нажмите клавишу F5 , чтобы развернуть приложение.

  6. Эмулятор подключенного терминала должен отображать выходные данные из приложения. Программа отправляет следующие слова через одну секунду:

    Tick

    Tock

    Примечание

    • Visual Studio предоставляет Intellisense для приложений RTApps Azure Sphere, собирая данные из кэша CMake. Visual Studio обновляет кэш при изменении CMakeLists.txt или CMakeSettings.json файла в RTApp.

    • По умолчанию Visual Studio использует представление папки. Если вы предпочитаете логическое представление проекта CMake, можно изменить представление целевых объектов CMake. В Обозреватель решений выберите значок переключателя папки:

      Переключение между представлениями решения и папки

      В раскрывающемся меню выберите Представление целевых объектов CMake.

    • Приложение может начать выполнение до того, как OpenOCD устанавливает подключение. В результате точки останова, заданные в начале кода, могут быть пропущены. Простое решение для этого заключается в том, чтобы отложить запуск приложения до подключения OpenOCD.

      1. Вставьте следующий код в начало точки входа приложения RTCoreMain. Это приведет к тому, что приложение будет вводить и оставаться в цикле while , пока переменная f не будет задана как true.

          volatile bool f = false;
          while (!f) {
            // empty.
          }
        
      2. Нажмите клавишу F5 , чтобы запустить приложение с отладкой, а затем приступить к выполнению.

      3. В области Отладка локальных объектов измените значение f с нуля на единицу.

      4. Пошаговое выполнение кода в обычном режиме.

Сборка RTApp с помощью интерфейса командной строки

В приведенных ниже инструкциях предполагается, что вы используете CMake. Если вы предпочитаете выполнять сборку из командной строки без использования CMake, вы можете определить соответствующие параметры компилятора и компоновщика, просмотрев файлы AzureSphereToolchainBase.cmake и AzureSphereRTCoreToolchain.cmake, которые устанавливаются вместе с пакетом SDK Azure Sphere.

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

  2. В каталоге сборки проекта в командной строке запустите 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 для Приложения RTApp HelloWorld:

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

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

    Windows PowerShell

    cmake `
    --preset "ARM-Debug" `
    "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_RTApp_MT3620_BareMetal"
    
  3. Запустите 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.

  4. Удалите все приложения, которые уже развернуты на устройстве:

    az sphere device sideload delete
    
  5. Разверните пакет образа, созданный Ninja:

    az sphere device sideload deploy --image-package <package-name>
    
  6. Получите идентификатор компонента для образа:

    az sphere image-package show --image-package <path-to-imagepackage>
    

    Команда возвращает все метаданные для пакета образа. Идентификатор компонента для приложения отображается в разделе Удостоверение для типа образа приложения. Например:

    ...
      "Identity": {
        "ComponentId": "<component-id>",
        "ImageId": "<image-id>",
        "ImageType": "Application"
      },
    ...
    
  7. Определите, на каком ядре выполняется приложение.

    По умолчанию RTApp развертывается в первом доступном ядре в режиме реального времени на устройстве; В настоящее время нельзя указать определенное ядро. Чтобы узнать, на каком ядре работает приложение, используйте команду az sphere device app , чтобы остановить, а затем перезапустить приложение. Укажите идентификатор компонента для приложения в командах. Например:

    az sphere device app stop --component-id <component id>
    <component id>: App state: stopped
    
    az sphere device app start --component-id <component id>
    <component id>
    App state: running
    Core     : Real-time 0
    
  8. Эмулятор подключенного терминала должен отображать выходные данные из приложения. Программа отправляет следующие слова через одну секунду:

    Tick

    Tock

Выходные данные журнала из RTApp

Каждое ядро в режиме реального времени в MT3620 имеет выделенный UART, предназначенный для ведения журнала выходных данных. Ядра в режиме реального времени также могут обращаться к UART ISU. MT3620 RDB предоставляет только контакт TX, который можно использовать для отображения выходных данных журнала из приложения. Другое оборудование может подвергаться этому по-разному или вообще не может. Чтобы просмотреть выходные данные журнала, настройте оборудование для отображения этих выходных данных, как описано в кратком руководстве. Для выделенного UART не требуется требование манифеста Uart приложения, однако его не следует использовать для других целей, кроме ведения журнала выходных данных для RTApp.

Разработка с помощью партнерских приложений

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

Устранение неполадок

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

Дополнительные ресурсы

Дополнительные драйверы и примеры для приложений RTApp, предназначенных для ядер M4 в реальном времени на микросхеме MT3620, доступны на сайте GitHub от партнеров Azure Sphere: