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


Отладка партнерских приложений

Внимание

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

  1. Убедитесь, что ваше устройство подключено к компьютеру через USB. В меню "Задать элемент запуска" выберите приложение Azure Sphere (все ядра), где приложение Azure Sphere — это имя проекта верхнего уровня или нажмите клавишу F5.

    Кнопка

  2. Если появится запрос о создании проекта, выберите Да. Visual Studio компилирует партнерские приложения, создает пакеты образов, загружает их на доску и запускает их в режиме отладки. Загрузка неопубликованных данных означает, что приложения доставляются непосредственно с компьютера через проводное подключение, а не доставляются через облако.

    Обратите внимание на пути к выходным данным представления>>: выходные данные сборки, указывающие расположение пакетов выходных образов на компьютере. Когда вы будете готовы к созданию развертывания, необходимо знать пути к пакетам образов.

  3. По умолчанию в окне вывода отображаются выходные данные из выходных данных устройства. Чтобы увидеть сообщения отладчика, выберите Отладка в раскрывающемся меню Show output from: (Показать выходные данные из:). Также в меню Отладка>Окна можно проверить дизассемблированный код программы, ее регистры или память.

Если у вас есть два RTApps, убедитесь, что оба приложения перечислены в качестве партнерских приложений в файле launch.vs.json верхнего уровня.

Используйте отладчик Visual Studio, чтобы задать точки останова, приостановить, выполнить шаг, перейти, перезапустить или остановить приложение.

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

Чтобы открыть окно Дизассембли:

  1. Убедитесь, что исходный файл кода C, содержащий точку останова, открыт в Visual Studio.
  2. Выберите "Отладить"Дизассембли>" или нажмите клавиши ALT+8.
  1. Откройте папку, содержащую партнерские приложения. Visual Studio Code обнаруживает файл рабочей области и запрашивает, нужно ли открыть рабочую область. Выберите "Открыть рабочую область", чтобы одновременно открыть приложение в режиме реального времени и высокоуровневое приложение.

  2. Щелкните правой кнопкой мыши любой из двух CMakeLists.txt файлов и выберите " Создать все проекты".

  3. Щелкните значок запуска в строке действий Visual Studio Code.

  4. В раскрывающемся меню, которое отображается в верхней части окна в левой части экрана, выберите "Запустить приложения Azure Sphere(gdb)(рабочая область)".

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

  6. Подождите несколько секунд, пока Visual Studio Code создаст приложения, создайте пакеты образов, разверните их на доске и запустите их в режиме отладки. На панели вывода вы увидите обновления состояния.

    Во-первых, CMake определяет, нужно ли создавать приложения. В этом случае фокус перемещается в выходное окно, в котором отображаются выходные данные из CMake/Build.

    Затем в области выходных данных отображаются выходные данные из azsphere при развертывании пакета образа на устройстве. Наконец, фокус переместится в консоль отладки и отобразятся выходные данные gdb.

Используйте отладчик Visual Studio Code, чтобы задать точки останова, приостановить, выполнить шаг, выполнить шаг, перезапустить или остановить приложение.

При остановке в точке останова в исходном коде C можно открыть представление Дизассембли, отображающее текущий адрес, необработанные шестнадцатеричные данные, сборщик mnemonic для текущей команды и сведения, такие как регистры, участвующие или выполняемая команда исходного кода.

Чтобы открыть представление Дизассембли, выполните следующие действия.

  1. Убедитесь, что исходный файл кода C, содержащий точку останова, открыт в редакторе Visual Studio Code.
  2. Щелкните правой кнопкой мыши в окне редактора и выберите "Открыть дизассемблированное представление" или ">> дизассембли".
  1. Остановите приложение в режиме реального времени, если оно запущено.

    azsphere device app stop --component-id <component id>
    
  2. Повторно запустите приложение с поддержкой реального времени с отладкой.

    azsphere device app start --component-id <component id>
    

    Эта команда возвращает ядро, на котором работает приложение.

      <component id>
      App state   : running
      Core        : Real time 0
    
  3. Перейдите в папку 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.

  4. Выполните openocd, как показано в следующем примере. В этом примере предполагается, что приложение работает с использованием ядра 0. Если приложение работает на ядре 1, измените "targets io0" на "targets io1":

    openocd -f mt3620-rdb-ftdi.cfg -f mt3620-io0.cfg -c "gdb_memory_map disable" -c "gdb_breakpoint_override hard" -c init -c "targets io0" -c halt -c "targets"
    
  5. Откройте интерфейс командной строки с помощью PowerShell, командной строки Windows или командной оболочки Linux.

  6. Перейдите к папке, содержащей файл,поддерживающий режим реального времени, и запустите 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
    
  7. Сервер OpenOCD предоставляет серверный интерфейс GDB через порт 4444. Установите цель для отладки.

    target remote :4444

  8. Теперь можно выполнять команды gdb. Добавьте точку останова в функцию HandleSendTimerDeferred:

    break HandleSendTimerDeferred

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

  10. Откройте новую командную строку Azure Sphere (Windows) или окно терминала (Linux).

  11. Перейдите в папку, содержащую файл imagepackage приложения высокого уровня.

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

    azsphere device app stop --component-id <ComponentId>
    
    azsphere device app start --debug-mode --component-id <ComponentId>
    
  13. Откройте эмулятор терминала и установите подключение Telnet или TCP к 192.168.35.2 через порт 2342, чтобы просмотреть выходные данные приложения высокого уровня.

  14. Запустите 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.

  15. Задайте для целевого объекта удаленной отладки IP-адрес 192.168.35.2 через порт 2345:

    target remote 192.168.35.2:2345
    
  16. Добавьте точку останова в функцию SendMessageToRTApp:

    break SendMessageToRTApp
    
  17. Чтобы c продолжить, просмотрите выходные данные в терминале Telnet/TCP, а затем перейдите в командную строку или окно терминала, содержащее сеанс отладки приложения в режиме реального времени.

  18. Введите 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.