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


Создание приложения, поддерживающего режим реального времени

Внимание

Это документация по Azure Sphere (устаревшая версия). Служба Azure Sphere (устаревшая версия) выходит на пенсию 27 сентября 2027 г., и к этому времени пользователи должны перейти в Azure Sphere (интегрированная). Используйте селектор версий, расположенный над toC, чтобы просмотреть документацию по Azure Sphere (интегрированная).

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

Необходимые компоненты

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если команда azsphere 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 'azsphere 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: удалить кэш и перенастройку . Представление целевых объектов 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 для приложений RTApp 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 с помощью CLI

В приведенных ниже инструкциях предполагается, что вы используете CMake. Если вы предпочитаете выполнять сборку в командной строке без использования CMake, соответствующие параметры компилятора и компоновщика можно определить, просмотрев файлы AzureSphereToolchainBase.cmake и AzureSphereRTCoreToolchain.cmake files, которые устанавливаются вместе с пакетом 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 или 'for PowerShell) можно использовать для удобочитаемости, но не требуется.

    В следующих примерах показаны команды CMake для HelloWorld RTApp:

    Командная строка 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. Удалите все приложения, которые уже развернуты на устройстве:

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

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

    azsphere image-package show --image-package <path-to-imagepackage>
    

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

    Image package metadata:
    Section: Identity
    Image Type:           Application
    Component ID:         <component id>
    Image ID:             <image id>
    
  7. Определите, на каком ядре запущено приложение.

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

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

    Tick

    Tock

Ведение журнала выходных данных приложения RTApp

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

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

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

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

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

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

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