Отладка приложения с поддержкой режима реального времени

ПРИЛОЖЕНИЯ RTApp отлаживаются с помощью OpenOCD, который устанавливается вместе с пакетом SDK для Azure Sphere, и версии GDB, установленной в составе цепочки встроенных инструментов ARM GNU.

Отладка RTApp с помощью Visual Studio

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

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

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

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

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

Visual Studio настраивает подключения между сервером GDB и OpenOCD, чтобы вы могли использовать стандартный интерфейс отладки Visual Studio (F5, F6, F9 для точек останова и т. д.) в RTApp так же, как в высокоуровневом приложении.

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

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

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

Отладка RTApp с помощью Visual Studio Code

Visual Studio Code выполняется отладка путем нажатия клавиши F5 или выполнения команды отладки в представлении отладки на левой панели. В примерах vscode/launch.json уже существует, поэтому отладка начнется немедленно. В новом приложении отладка сначала спросит, является ли это приложением HLApp или RTApp, и создаст vscode/launch.json на основе вашего ответа. Затем отладка будет включена.

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

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

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

Отладка RTApp с помощью интерфейса командной строки

  1. Запустите приложение для отладки:

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

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

  2. Перейдите в папку Openocd для sysroot, с помощью которую было создано приложение. В этом кратком руководстве используется значение sysroot 5+Beta2004. Sysroots устанавливаются в папку установки пакета SDK для Azure Sphere. Например, в Windows папка устанавливается по умолчанию в , C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\5+Beta2004\tools\openocd а в Linux — в /opt/azurespheresdk/Sysroots/5+Beta2004/tools/sysroots/x86_64-pokysdk-linux/usr/bin/openocd.

  3. Выполните 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"
    
  4. Откройте интерфейс командной строки с помощью PowerShell, командной строки Windows или командной оболочки Linux.

  5. Перейдите в папку, содержащую out-файл приложения, и запустите arm-none-eabi-gdb, которая является частью цепочки инструментов ARM GNU 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
    
  6. Сервер OpenOCD предоставляет интерфейс сервера GDB в :4444. Задайте целевой объект для отладки.

    target remote :4444

  7. Выполните все выбранные команды gdb.

Разработка с помощью партнерских приложений

При загрузке приложения на устройство Azure Sphere средства развертывания Azure Sphere по умолчанию удаляют все существующие приложения. Чтобы избежать этого при разработке приложений, которые взаимодействуют друг с другом, необходимо пометить их как партнеров. При развертывании одного из приложений его партнеры не будут удалены. Дополнительные сведения см. в разделе Пометка приложений как партнеров .

Устранение неполадок

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