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


Отладка приложения, поддерживающего режим реального времени

Внимание

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

RTApps отлаживаются с помощью OpenOCD, который устанавливается с пакетом SDK Для Azure Sphere и версией GDB, установленной в рамках цепочки инструментов ARM GNU Embedded.

Отладка приложения RTApp с помощью Visual Studio

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

    Кнопка

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

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

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

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

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

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

  1. Убедитесь, что исходный файл кода C, содержащий точку останова, открыт в Visual Studio.
  2. Выберите "Отладить"Дизассембли>" или нажмите клавиши 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 с помощью CLI

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

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

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

  2. Перейдите в папку Openocd для sysroot, с помощью которого было создано приложение. В этом кратком руководстве sysroot имеет значение 5+Beta2004. Компоненты sysroot устанавливаются в папку установки пакета 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, которая входит во внедренную цепочку инструментов GNU ARM.

    Командная строка 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, по умолчанию средства развертывания этой службы удаляют все существующие приложения. Чтобы предотвратить это при разработке приложений, взаимодействующих друг с другом, необходимо пометить приложения как партнеров. При развертывании одного из приложений его партнеры не будут удалены. См. сведения о том, как помечать приложения как партнерские.

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

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