Создание приложения с поддержкой реального времени
Вы можете использовать Visual Studio, Visual Studio Code или командную строку (CLI) для разработки и отладки приложений с поддержкой реального времени (RTApp) практически так же, как и высокоуровневых приложений.
Необходимые условия
- Подключение устройства Azure Sphere к компьютеру
- Установка Azure Sphere
- Установка цепочки инструментов GNU Arm Embedded
- Настройте оборудование для отображения выходных данных из выделенного UART, если вы еще этого не сделали.
Включение разработки и отладки
Прежде чем создавать пример приложения на устройстве Azure Sphere или разрабатывать для него новые приложения, необходимо включить разработку и отладку. По умолчанию устройства Azure Sphere заблокированы; т. е. они не разрешают загрузку разрабатываемых приложений с компьютера и не разрешают отладку приложений. Подготовка устройства к отладке удаляет это ограничение и загружает программное обеспечение, необходимое для отладки, и разблокирует возможности устройства .
Для отладки на ядрах в режиме реального времени используйте команду az sphere device enable-development . Эта команда настраивает устройство для приема приложений с компьютера для отладки и назначает устройство группе устройств разработка, которая не разрешает обновления облачных приложений. Во время разработки и отладки приложений следует оставить устройство в этой группе, чтобы обновления облачных приложений не перезаписывало разрабатываемое приложение.
В Windows необходимо добавить --enable-rt-core-debugging
параметр , который загружает серверы отладки и необходимые драйверы для каждого типа ядра на устройство.
Войдите в Azure Sphere, если вы еще этого не сделали:
az login
Откройте интерфейс командной строки с помощью PowerShell или командной строки Windows с правами администратора. Для
--enable-rt-core-debugging
параметра требуются права администратора, так как он устанавливает USB-драйверы для отладчика.Введите следующую команду:
az sphere device enable-development --enable-rt-core-debugging --catalog <CatalogName> --resource-group <ResourceGroupName>
Закройте окно после завершения команды, так как права администратора больше не требуются. Рекомендуется всегда использовать наименьшие привилегии, которые могут выполнить задачу.
Если команда az sphere device enable-development завершается сбоем, см. статью Устранение неполадок Azure Sphere .
Включение разработки и отладки
Прежде чем создавать пример приложения на устройстве Azure Sphere или разрабатывать для него новые приложения, необходимо включить разработку и отладку. По умолчанию устройства Azure Sphere заблокированы; т. е. они не разрешают загрузку разрабатываемых приложений с компьютера и не разрешают отладку приложений. Подготовка устройства к отладке устраняет это ограничение и загружает программное обеспечение, необходимое для отладки, и разблокирует возможности устройства, как описано в разделе Возможности устройства и взаимодействие.
Для отладки на ядрах в режиме реального времени используйте команду az sphere device enable-development . Эта команда настраивает устройство для приема приложений с компьютера для отладки и назначает устройство группе устройств разработка, которая не разрешает обновления облачных приложений. Во время разработки и отладки приложений следует оставить устройство в этой группе, чтобы обновления облачных приложений не перезаписывало разрабатываемое приложение.
В Windows необходимо добавить --enable-rt-core-debugging
параметр , который загружает серверы отладки и необходимые драйверы для каждого типа ядра на устройство.
Войдите в Azure, если вы еще этого не сделали:
az login
Откройте интерфейс командной строки с помощью PowerShell, командной строки Windows или командной оболочки Linux с правами администратора. Для
--enable-rt-core-debugging
параметра требуются права администратора, так как он устанавливает USB-драйверы для отладчика.Введите следующую команду:
az sphere device enable-development --enable-rt-core-debugging
Закройте окно после завершения команды, так как права администратора больше не требуются. Рекомендуется всегда использовать наименьшие привилегии, которые могут выполнить задачу.
Если команда 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, выполните приведенные далее действия.
В Visual Studio Code откройте папку HelloWorld_RTApp_MT3620_BareMetal в клоне репозитория примеров Azure Sphere. Если вам будет предложено выбрать комплект, выберите "Не использовать комплект".
Нажмите клавишу F5 , чтобы запустить отладчик. Если проект ранее не был создан или файлы изменились и требуется перестроить, Visual Studio Code выполнит сборку проекта до начала отладки.
Эмулятор подключенного терминала должен отображать выходные данные из приложения. Программа отправляет следующие слова через одну секунду:
Tick
Tock
Примечание
Visual Studio Code предоставляет Intellisense, но не обновляется автоматически при изменении CMakeLists.txt. Чтобы обновить Intellisense, необходимо выполнить команду CMake: Delete Cache и Reconfigure . Представление целевых объектов 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 для приложений RTApps 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 с помощью интерфейса командной строки
В приведенных ниже инструкциях предполагается, что вы используете CMake. Если вы предпочитаете выполнять сборку из командной строки без использования CMake, вы можете определить соответствующие параметры компилятора и компоновщика, просмотрев файлы AzureSphereToolchainBase.cmake и AzureSphereRTCoreToolchain.cmake, которые устанавливаются вместе с пакетом 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 или " для PowerShell) можно использовать для удобства чтения, но он не является обязательным.
В следующих примерах показаны команды CMake для Приложения RTApp HelloWorld:
Запустите 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
.Удалите все приложения, которые уже развернуты на устройстве:
az sphere device sideload delete
Разверните пакет образа, созданный Ninja:
az sphere device sideload deploy --image-package <package-name>
Получите идентификатор компонента для образа:
az sphere image-package show --image-package <path-to-imagepackage>
Команда возвращает все метаданные для пакета образа. Идентификатор компонента для приложения отображается в разделе Удостоверение для типа образа приложения. Например:
... "Identity": { "ComponentId": "<component-id>", "ImageId": "<image-id>", "ImageType": "Application" }, ...
Определите, на каком ядре выполняется приложение.
По умолчанию 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
Эмулятор подключенного терминала должен отображать выходные данные из приложения. Программа отправляет следующие слова через одну секунду:
Tick
Tock
Выходные данные журнала из RTApp
Каждое ядро в режиме реального времени в MT3620 имеет выделенный UART, предназначенный для ведения журнала выходных данных. Ядра в режиме реального времени также могут обращаться к UART ISU. MT3620 RDB предоставляет только контакт TX, который можно использовать для отображения выходных данных журнала из приложения. Другое оборудование может подвергаться этому по-разному или вообще не может. Чтобы просмотреть выходные данные журнала, настройте оборудование для отображения этих выходных данных, как описано в кратком руководстве. Для выделенного UART не требуется требование манифеста Uart
приложения, однако его не следует использовать для других целей, кроме ведения журнала выходных данных для RTApp.
Разработка с помощью партнерских приложений
При загрузке приложения на устройство Azure Sphere средства развертывания Azure Sphere по умолчанию удаляют все существующие приложения. Чтобы избежать этого при разработке приложений, которые взаимодействуют друг с другом, необходимо пометить их как партнеров. При развертывании одного из приложений его партнеры не будут удалены. Дополнительные сведения см. в разделе Пометка приложений как партнеров .
Устранение неполадок
Если у вас возникли проблемы, см. статью Устранение неполадок с приложениями, поддерживающими режим реального времени.
Дополнительные ресурсы
Дополнительные драйверы и примеры для приложений RTApp, предназначенных для ядер M4 в реальном времени на микросхеме MT3620, доступны на сайте GitHub от партнеров Azure Sphere: