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


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

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

    Кнопка удаленного отладчика GDB

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    az sphere device app start --component-id <component id>
    

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

      <component id>
      App state   : running
      Core        : Real time 0
    
  3. Перейдите в папку Openocd для sysroot, с помощью которую было создано приложение. Sysroots устанавливаются в папку установки пакета 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. Перейдите в папку, содержащую out-файл приложения, поддерживающего режим реального времени, и запустите 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. Если приложение запущено, остановите его, а затем перезапустите с отладкой:

    az sphere device app stop --component-id <ComponentId>
    
    az sphere 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. Sysroots устанавливаются в папке установки пакета 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.