Создание приложения, поддерживающего режим реального времени
Внимание
Это документация по Azure Sphere (устаревшая версия). Служба Azure Sphere (устаревшая версия) выходит на пенсию 27 сентября 2027 г., и к этому времени пользователи должны перейти в Azure Sphere (интегрированная). Используйте селектор версий, расположенный над toC, чтобы просмотреть документацию по Azure Sphere (интегрированная).
Visual Studio, Visual Studio Code и CLI можно использовать для разработки и отладки приложений, поддерживающих режим реального времени (RTApp), точно так же, как и высокоуровневых приложений.
Необходимые компоненты
- Подключите устройство Azure Sphere к компьютеру.
- Установите Azure Sphere.
- Установка цепочки инструментов GNU Arm Embedded
- Настройте оборудование для отображения выходных данных из выделенного UART, если это еще не сделано.
Включение разработки и отладки
Перед тем как создать пример приложения на устройстве Azure Sphere или разработать для устройства новые приложения, необходимо включить разработку и отладку. По умолчанию данные функции на устройстве Azure Sphere заблокированы. Это значит, что разрабатываемые приложения не могут быть загружены с компьютера, и запрещается выполнять их отладку. После подготовки устройства к отладке это ограничение снимается, загружается программное обеспечение, требуемое для отладки, и разблокируются возможности устройства, как описано в статье Возможности устройств и связь.
Чтобы выполнить отладку в ядрах реального времени, используйте команду azsphere device enable-development . Эта команда настраивает устройство для приема приложений с компьютера для отладки и назначает устройство группе устройств разработки, которая не разрешает обновления облачных приложений. Во время разработки и отладки приложения необходимо оставить устройство в этой группе. Это необходимо сделать для того, чтобы обновления приложения из облака не перезаписывали разрабатываемое приложение.
В Windows необходимо добавить --enable-rt-core-debugging
параметр, который загружает серверы отладки и необходимые драйверы для каждого типа ядра на устройство.
Войдите в Azure Sphere, если вы еще не сделали этого:
azsphere login
Откройте интерфейс командной строки с помощью PowerShell или командной строки Windows с правами администратора. Параметр
--enable-rt-core-debugging
требует прав администратора, так как он устанавливает USB-драйверы для отладчика.Введите следующую команду:
azsphere device enable-development --enable-rt-core-debugging
Закройте окно после выполнения команды, так как привилегии администратора больше не требуются. Рекомендуется всегда использовать минимально возможные привилегии, которые позволяют выполнить задачу.
Если команда azsphere device enable-development завершается сбоем, см. статью "Устранение неполадок Azure Sphere".
Включение разработки и отладки
Перед тем как создать пример приложения на устройстве Azure Sphere или разработать для устройства новые приложения, необходимо включить разработку и отладку. По умолчанию данные функции на устройстве Azure Sphere заблокированы. Это значит, что разрабатываемые приложения не могут быть загружены с компьютера, и запрещается выполнять их отладку. После подготовки устройства к отладке это ограничение снимается, загружается программное обеспечение, требуемое для отладки, и разблокируются возможности устройства, как описано в статье Возможности устройств и связь.
Чтобы выполнить отладку в ядрах реального времени, используйте команду azsphere device enable-development . Эта команда настраивает устройство для приема приложений с компьютера для отладки и назначает устройство группе устройств разработки, которая не разрешает обновления облачных приложений. Во время разработки и отладки приложения необходимо оставить устройство в этой группе. Это необходимо сделать для того, чтобы обновления приложения из облака не перезаписывали разрабатываемое приложение.
В Windows необходимо добавить --enable-rt-core-debugging
параметр, который загружает серверы отладки и необходимые драйверы для каждого типа ядра на устройство.
Войдите в Azure Sphere, если вы еще не сделали этого:
azsphere login
Откройте интерфейс командной строки с помощью PowerShell, командной строки Windows или командной оболочки Linux с правами администратора. Параметр
--enable-rt-core-debugging
требует прав администратора, так как он устанавливает USB-драйверы для отладчика.Введите следующую команду:
azsphere device enable-development --enable-rt-core-debugging
Закройте окно после выполнения команды, так как привилегии администратора больше не требуются. Рекомендуется всегда использовать минимально возможные привилегии, которые позволяют выполнить задачу.
Если команда 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, выполните следующие действия.
В Visual Studio Code откройте папку HelloWorld_RTApp_MT3620_BareMetal в клонированном репозитории примеров Azure Sphere. В ответ на запрос выбора набора щелкните "Не использовать набор".
Нажмите клавишу F5 , чтобы запустить отладчик. Если проект не был создан или если файлы были изменены и требуется повторная сборка, Visual Studio Code выполнит сборку перед началом отладки.
Подключенный эмулятор терминала должен отобразить выходные данные приложения. Программа отправляет следующие слова с интервалом в одну секунду:
Tick
Tock
Примечание.
В Visual Studio Code доступна функция IntelliSense, но она обновляется автоматически при изменении файла CMakeLists.txt. Для обновления Intellisense необходимо выполнить команду CMake: удалить кэш и перенастройку . Представление целевых объектов CMake можно найти в представлении расширений CMake на панели слева.
Создание RTApp с помощью Visual Studio
Чтобы создать приложение RTApp, выполните следующие действия.
В Visual Studio выберите файл>CMake и перейдите к папке, содержащей пример.
Если процесс создания CMake не запускается автоматически, выберите файл CMakeLists.txt.
В Visual Studio просмотр>выходных данных>отображает выходные данные: выходные данные CMake должны отображать сообщения и
CMake generation started.
CMake generation finished.
В меню CMake (при наличии) выберите "Построить все". Если меню отсутствует, откройте Обозреватель решений, щелкните правой кнопкой мыши файл CMakeLists.txt и выберите "Сборка". Выходное расположение приложения Azure Sphere отображается в окне вывода .
Нажмите клавишу F5 , чтобы развернуть приложение.
Подключенный эмулятор терминала должен отобразить выходные данные приложения. Программа отправляет следующие слова с интервалом в одну секунду:
Tick
Tock
Примечание.
Visual Studio предоставляет функции Intellisense для приложений RTApp Azure Sphere, собирая данные из своего кэша CMake. Visual Studio обновляет кэш при каждом изменении файла CMakeLists.txt или CMakeSettings.json в RTApp.
По умолчанию Visual Studio использует представление папки. Если вы предпочитаете логическое представление проекта CMake, можно переключиться на представление целевых объектов CMake. В обозревателе решений выберите значок переключения папки.
В раскрывающемся меню выберите представление целевых объектов CMake.
Приложение может начать работать до того, как OpenOCD установит подключение. В результате точки останова, установленные ближе к началу кода, могут быть пропущены. Чтобы решить эту проблему, установите задержку запуска приложения: пока OpenOCD не установит подключение.
Перед программной точкой входа RTCoreMain вставьте следующий код. Это позволит приложению войти в цикл
while
и оставаться в нем, пока для переменнойf
не будет задано значение true.volatile bool f = false; while (!f) { // empty. }
Нажмите клавишу F5 , чтобы запустить приложение с отладкой, а затем разорвать выполнение.
В области отладки "Локальные " измените значение
f
от нуля до одного.Пройдите весь код в обычном режиме.
Сборка приложения RTApp с помощью CLI
В приведенных ниже инструкциях предполагается, что вы используете CMake. Если вы предпочитаете выполнять сборку в командной строке без использования CMake, соответствующие параметры компилятора и компоновщика можно определить, просмотрев файлы AzureSphereToolchainBase.cmake и AzureSphereRTCoreToolchain.cmake files, которые устанавливаются вместе с пакетом SDK для Azure Sphere.
Откройте интерфейс командной строки с помощью PowerShell, командной строки Windows или командной оболочки Linux. Перейдите в каталог сборки проекта.
В каталоге сборки проекта в командной строке запустите 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:
Запустите 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
.Удалите все приложения, которые уже развернуты на устройстве:
azsphere device sideload delete
Разверните пакет образа, созданный Ninja:
azsphere device sideload deploy --image-package <package-name>
Получите идентификатор компонента для этого образа.
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>
Определите, на каком ядре запущено приложение.
По умолчанию приложение 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
Подключенный эмулятор терминала должен отобразить выходные данные приложения. Программа отправляет следующие слова с интервалом в одну секунду:
Tick
Tock
Ведение журнала выходных данных приложения RTApp
Каждое ядро реального времени в MT3620 имеет выделенный UART, предназначенный для ведения журнала выходных данных. Ядра в режиме реального времени также могут получить доступ к UART ISU. RDB MT3620 предоставляет только пин-код TX, который можно использовать для отображения выходных данных журнала из приложения. Другое оборудование может предоставлять эту возможность по-другому или вообще не предоставлять. Настройте оборудование, чтобы отобразить выходные данные журнала, как описано в кратком руководстве. Выделенный UART не требует требования к манифесту приложения Uart
; тем не менее, его не следует использовать в других целях, кроме записи выходных данных для RTApp.
Разработка с помощью партнерских приложений
Когда вы загружаете приложение на устройство Azure Sphere, по умолчанию средства развертывания этой службы удаляют все существующие приложения. Чтобы предотвратить это при разработке приложений, взаимодействующих друг с другом, необходимо пометить приложения как партнеров. При развертывании одного из приложений его партнеры не будут удалены. См. сведения о том, как помечать приложения как партнерские.
Устранение неполадок
Если у вас возникли проблемы, см. руководство по устранению неполадок в приложениях с поддержкой режима реального времени.
Дополнительные ресурсы
Дополнительные драйверы и примеры для RTApps, предназначенные для ядер M4 в режиме реального времени на микросхеме MT3620, доступны на сайте GitHub от партнеров Azure Sphere:
- MediaTek HAL (аппаратный уровень абстракции)
- Драйверы Codethink.
- Примеры codethink.