Отладка партнерских приложений
Внимание
Это документация по Azure Sphere (устаревшая версия). Служба Azure Sphere (устаревшая версия) выходит на пенсию 27 сентября 2027 г., и к этому времени пользователи должны перейти в Azure Sphere (интегрированная). Используйте селектор версий, расположенный над toC, чтобы просмотреть документацию по Azure Sphere (интегрированная).
Убедитесь, что ваше устройство подключено к компьютеру через USB. В меню "Задать элемент запуска" выберите приложение Azure Sphere (все ядра), где приложение Azure Sphere — это имя проекта верхнего уровня или нажмите клавишу F5.
Если появится запрос о создании проекта, выберите Да. Visual Studio компилирует партнерские приложения, создает пакеты образов, загружает их на доску и запускает их в режиме отладки. Загрузка неопубликованных данных означает, что приложения доставляются непосредственно с компьютера через проводное подключение, а не доставляются через облако.
Обратите внимание на пути к выходным данным представления>>: выходные данные сборки, указывающие расположение пакетов выходных образов на компьютере. Когда вы будете готовы к созданию развертывания, необходимо знать пути к пакетам образов.
По умолчанию в окне вывода отображаются выходные данные из выходных данных устройства. Чтобы увидеть сообщения отладчика, выберите Отладка в раскрывающемся меню Show output from: (Показать выходные данные из:). Также в меню Отладка>Окна можно проверить дизассемблированный код программы, ее регистры или память.
Если у вас есть два RTApps, убедитесь, что оба приложения перечислены в качестве партнерских приложений в файле launch.vs.json верхнего уровня.
Используйте отладчик Visual Studio, чтобы задать точки останова, приостановить, выполнить шаг, перейти, перезапустить или остановить приложение.
Остановив точку останова в исходном коде C, можно открыть окно дизассембли, отображающее текущий адрес, а также сведения, связанные с текущей командой, а также сведения, такие как регистры или выполняемая команда исходного кода.
Чтобы открыть окно Дизассембли:
- Убедитесь, что исходный файл кода C, содержащий точку останова, открыт в Visual Studio.
- Выберите "Отладить"Дизассембли>" или нажмите клавиши ALT+8.
Откройте папку, содержащую партнерские приложения. Visual Studio Code обнаруживает файл рабочей области и запрашивает, нужно ли открыть рабочую область. Выберите "Открыть рабочую область", чтобы одновременно открыть приложение в режиме реального времени и высокоуровневое приложение.
Щелкните правой кнопкой мыши любой из двух CMakeLists.txt файлов и выберите " Создать все проекты".
Щелкните значок запуска в строке действий Visual Studio Code.
В раскрывающемся меню, которое отображается в верхней части окна в левой части экрана, выберите "Запустить приложения Azure Sphere(gdb)(рабочая область)".
Нажмите клавишу F5, чтобы создать и отладить проект. Если проект ранее не был создан, или если файлы изменились и перестроение необходимы, Visual Studio Code создаст проект перед началом отладки.
Подождите несколько секунд, пока Visual Studio Code создаст приложения, создайте пакеты образов, разверните их на доске и запустите их в режиме отладки. На панели вывода вы увидите обновления состояния.
Во-первых, CMake определяет, нужно ли создавать приложения. В этом случае фокус перемещается в выходное окно, в котором отображаются выходные данные из CMake/Build.
Затем в области выходных данных отображаются выходные данные из azsphere при развертывании пакета образа на устройстве. Наконец, фокус переместится в консоль отладки и отобразятся выходные данные gdb.
Используйте отладчик Visual Studio Code, чтобы задать точки останова, приостановить, выполнить шаг, выполнить шаг, перезапустить или остановить приложение.
При остановке в точке останова в исходном коде C можно открыть представление Дизассембли, отображающее текущий адрес, необработанные шестнадцатеричные данные, сборщик mnemonic для текущей команды и сведения, такие как регистры, участвующие или выполняемая команда исходного кода.
Чтобы открыть представление Дизассембли, выполните следующие действия.
- Убедитесь, что исходный файл кода C, содержащий точку останова, открыт в редакторе Visual Studio Code.
- Щелкните правой кнопкой мыши в окне редактора и выберите "Открыть дизассемблированное представление" или ">> дизассембли".
Остановите приложение в режиме реального времени, если оно запущено.
azsphere device app stop --component-id <component id>
Повторно запустите приложение с поддержкой реального времени с отладкой.
azsphere device app start --component-id <component id>
Эта команда возвращает ядро, на котором работает приложение.
<component id> App state : running Core : Real time 0
Перейдите в папку Openocd для sysroot, с помощью которого было создано приложение. Компоненты sysroot устанавливаются в папку установки пакета SDK для Azure Sphere. Например, по умолчанию в Windows папка устанавливается по пути
C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\openocd
, а в Linux по пути/opt/azurespheresdk/Sysroots/*sysroot*/tools/sysroots/x86_64-pokysdk-linux
.Выполните
openocd
, как показано в следующем примере. В этом примере предполагается, что приложение работает с использованием ядра 0. Если приложение работает на ядре 1, измените "targets io0" на "targets io1":Откройте интерфейс командной строки с помощью PowerShell, командной строки Windows или командной оболочки Linux.
Перейдите к папке, содержащей файл,поддерживающий режим реального времени, и запустите
arm-none-eabi-gdb
файл, который входит в цепочку инструментов GNU Arm Embedded:Командная строка Windows
"C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.out
Windows PowerShell
& "C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.out
Сервер OpenOCD предоставляет серверный интерфейс GDB через порт 4444. Установите цель для отладки.
target remote :4444
Теперь можно выполнять команды gdb. Добавьте точку останова в функцию HandleSendTimerDeferred:
break HandleSendTimerDeferred
Эмулятор подключенного терминала должен отображать выходные данные из приложения, поддерживающего режим реального времени.
Откройте новую командную строку Azure Sphere (Windows) или окно терминала (Linux).
Перейдите в папку, содержащую файл imagepackage приложения высокого уровня.
Если приложение запущено, остановите его, а затем перезапустите его с помощью отладки:
azsphere device app stop --component-id <ComponentId>
azsphere device app start --debug-mode --component-id <ComponentId>
Откройте эмулятор терминала и установите подключение Telnet или TCP к 192.168.35.2 через порт 2342, чтобы просмотреть выходные данные приложения высокого уровня.
Запустите gdb с помощью следующей команды:
Командная строка Windows
"C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb.exe" IntercoreComms_HighLevelApp.out
Windows PowerShell
& "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb.exe" IntercoreComms_HighLevelApp.out
Примечание.
Пакет SDK Azure Sphere поставляется с несколькими системными возможностями, чтобы приложения могли использовать различные наборы API, как описано в версии среды выполнения приложений, sysroots и бета-версиях API. Компоненты sysroot устанавливаются в папку установки пакета SDK для Azure Sphere, в подкаталог Sysroots.
Задайте для целевого объекта удаленной отладки IP-адрес 192.168.35.2 через порт 2345:
target remote 192.168.35.2:2345
Добавьте точку останова в функцию SendMessageToRTApp:
break SendMessageToRTApp
Чтобы
c
продолжить, просмотрите выходные данные в терминале Telnet/TCP, а затем перейдите в командную строку или окно терминала, содержащее сеанс отладки приложения в режиме реального времени.Введите
c
для продолжения и наблюдения за выходными данными в подключенном последовательном сеансе.
Вы можете работать между сеансами отладки и переходом между приложением, поддерживающим режим реального времени, и высокоуровневой приложением. Выходные данные должны отображаться в двух выходных окнах:
Starting debugger....
Process /mnt/apps/25025d2c-66da-4448-bae1-ac26fcdd3627/bin/app created; pid = 40
Listening on port 2345
Remote debugging from host 192.168.35.1, port 56522
High-level intercore comms application
Sends data to, and receives data from a real-time capable application.
Sending: hl-app-to-rt-app-00
Sending: hl-app-to-rt-app-01
IntercoreComms_RTApp_MT3620_BareMetal
App built on: Nov 17 2020, 09:25:19
Sender: 25025d2c-66da-4448-bae1-ac26fcdd3627
Message size: 19 bytes:
Hex: 68:6c:2d:61:70:70:2d:74:6f:2d:72:74:2d:61:70:70:2d:30:30
Text: hl-app-to-rt-app-00
Чтобы завершить каждый сеанс отладки, введите q
в командной строке gdb.