Руководство. Создание и отладка партнерских приложений

В этом руководстве показано, как создать и отладить пример проекта, который включает как высокоуровневое приложение, так и приложение с поддержкой реального времени, где два приложения взаимодействуют между ядром высокого уровня A7 и ядром M4 в режиме реального времени. Основные сведения о высокоуровневых приложениях и приложениях с поддержкой реального времени см. в статье Обзор приложений Azure Sphere .

В этом руководстве вы узнаете, как:

  • Установка цепочки инструментов GNU Arm
  • Настройка оборудования для отображения выходных данных
  • Включение разработки и отладки
  • Клонирование примера репозитория Azure Sphere
  • Запуск эмулятора терминала для просмотра выходных данных
  • Создание, запуск и отладка пары партнерских приложений

Важно

В этих инструкциях предполагается, что вы используете оборудование, которое соответствует оборудованию эталонной платы MT3620 ( RDB), например mt3620 Dev Kit от Seeed Studios. Если вы используете другое оборудование Azure Sphere, обратитесь к документации производителя, чтобы узнать, предоставляется ли UART и как получить к нему доступ. Может потребоваться настроить оборудование для отображения выходных данных по-другому и обновить пример кода и поле Uarts файла app_manifest.json, чтобы использовать другой UART.

Необходимые условия

Установка цепочки инструментов GNU Arm Embedded

  • Visual Studio 2022. Если вы используете Visual Studio 2022, установите цепочку инструментов GNU Arm Embedded Toolchain (arm-none-eabi) с веб-сайта разработчика Arm.
  • Visual Studio 2019: цепочка инструментов автоматически устанавливается с расширением Azure Sphere для Visual Studio в Visual Studio 2019. Если вы используете Visual Studio 2019, перейдите к статье Настройка оборудования для отображения выходных данных. Однако если вы установили цепочку инструментов GNU Arm Embedded вручную, Visual Studio будет использовать установленную версию.

Чтобы установить цепочку инструментов на веб-сайте разработчика Arm, найдите цепочку инструментов GNU Arm Embedded Toolchain (arm-none-eabi), которая включает компилятор для процессора ARM Cortex-M4. Следуйте инструкциям, чтобы скачать и установить компилятор для платформы ОС.

По умолчанию Visual Studio Code выполняет поиск цепочки инструментов и должен найти установленную версию. При возникновении проблем со сборкой, связанных с цепочкой инструментов, проверка Параметры Расширения>>>AzureSphere, чтобы убедиться, что "Azure Sphere: Arm Gnu Path" идентифицирует каталог установки цепочки инструментов GNU Arm Embedded.

Настройка оборудования для отображения выходных данных

В настоящее время каждое ядро в режиме реального времени поддерживает UART только для TX. ПРИЛОЖЕНИЯ RTApp могут использовать этот UART для отправки выходных данных журнала с устройства. Во время разработки и отладки приложений обычно требуется способ чтения и отображения выходных данных. В примере HelloWorld_RTApp_MT3620_BareMetal показано, как приложение может выполнять запись в UART.

Используйте usb-последовательный адаптер, например FTDI Friend, чтобы подключить UART на ядре реального времени к USB-порту на компьютере. Вам также потребуется эмулятор терминала для установки последовательного подключения с параметрами терминала 115200-8-N-1 (115200 бит/с, 8 бит, без бит четности, один стоп-бит) для отображения выходных данных.

Чтобы настроить оборудование для отображения выходных данных из ПРИЛОЖЕНИЯ RTApp, выполните следующие действия. Чтобы определить расположения закрепления, вам потребуется обратиться к документации от производителя оборудования. Если вы используете оборудование, следующее за оборудованием эталонной платы MT3620 ( RDB), например mt3620 Dev Kit от Seeed Studios, то просмотр заголовков интерфейса RDB может помочь определить расположения контактов.

  1. Подключите GND через usb-последовательный адаптер к GND в комплекте разработки. На оборудовании MT3620 RDB GND — заголовок 3, закрепление 2.

  2. Подключите RX на usb-последовательном адаптере к IOM4-0 TX в комплекте разработки. На оборудовании MT3620 RDB IOM4-0 TX — заголовок 3, пин-код 6.

  3. Подключите usb-последовательный адаптер к бесплатному USB-порту на компьютере разработки и определите, к какому порту подключено последовательное устройство.

    • В Windows запустите диспетчер устройств, выберите Просмотр>устройств по контейнеру и найдите "USB UART". Например, FT232R USB UART указывает на адаптер FTDI Friend.

    • В Linux введите следующую команду:

      dmesg | grep ttyUSB
      

      Порт должен иметь имя ttyUSBn, где n указывает номер порта. Если команда dmesg перечисляет несколько USB-портов, то тот, который подключен к, как правило, последний из них сообщается как подключенный. Например, в следующем примере используется ttyUSB4:

    ~$ dmesg | grep ttyUSB
    [  144.564350] usb 1-1.1.2: FTDI USB Serial Device converter now attached to ttyUSB0
    [  144.564768] usb 1-1.1.2: FTDI USB Serial Device converter now attached to ttyUSB1
    [  144.565118] usb 1-1.1.2: FTDI USB Serial Device converter now attached to ttyUSB2
    [  144.565593] usb 1-1.1.2: FTDI USB Serial Device converter now attached to ttyUSB3
    [  144.570429] usb 1-1.1.3: FTDI USB Serial Device converter now attached to ttyUSB4
    [  254.171871] ftdi_sio ttyUSB1: FTDI USB Serial Device converter now disconnected from ttyUSB1
    
  4. Запустите программу эмулятора терминала и откройте терминал 115200-8-N-1 для COM-порта, используемого адаптером. Сведения о том, как указать порт и скорость, см. в документации по эмулятору терминала.

Включение разработки и отладки

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

Для отладки на ядрах в режиме реального времени используйте команду az sphere device enable-development . Эта команда настраивает устройство для приема приложений с компьютера для отладки и назначает устройство группе устройств разработка, которая не разрешает обновления облачных приложений. Во время разработки и отладки приложений следует оставить устройство в этой группе, чтобы обновления облачных приложений не перезаписывало разрабатываемое приложение.

В Windows необходимо добавить --enable-rt-core-debugging параметр , который загружает серверы отладки и необходимые драйверы для каждого типа ядра на устройство.

  1. Войдите в Azure Sphere, если вы еще этого не сделали:

    az login
    
  2. Откройте интерфейс командной строки с помощью PowerShell или командной строки Windows с правами администратора. Для --enable-rt-core-debugging параметра требуются права администратора, так как он устанавливает USB-драйверы для отладчика.

  3. Введите следующую команду:

    az sphere device enable-development --enable-rt-core-debugging  --catalog <CatalogName>  --resource-group <ResourceGroupName>
    
  4. Закройте окно после завершения команды, так как права администратора больше не требуются. Рекомендуется всегда использовать наименьшие привилегии, которые могут выполнить задачу.

Если команда az sphere device enable-development завершается сбоем, см. статью Устранение неполадок Azure Sphere .

Скачивание примера приложения

Скачать приложения InterCore Communications можно следующим образом:

  1. Укажите в браузере пункт Microsoft Samples Browser.
  2. Введите Azure Sphere в поле Поиск.
  3. Выберите Azure Sphere — межядерные коммуникации в результатах поиска.
  4. Выберите Скачать ZIP-файл.
  5. Откройте скачанный файл и извлеките его в локальный каталог.

Создание и запуск партнерских приложений

  1. Запустите Visual Studio. Выберите Открыть локальную папку и перейдите к папке, в которой вы извлекли приложения IntercoreComms.

    Важно

    Если вы используете Visual Studio 2022 версии 17.1 или более поздней и извлекли пример IntercoreComms до выпуска Azure Sphere 22.02, необходимо добавить файл CMakeWorkspaceSettings.json в папку проекта верхнего уровня.

  2. Если вы не используете RDB MT3620, обновите файлы app_manifest.json для обоих приложений, а также файл определения оборудования и CMakeLists.txt файл для высокоуровневого приложения в соответствии с оборудованием.

  3. Если создание CMake не запускается автоматически, выберите файл CMakeLists.txt.

  4. В Visual Studio для просмотра>выходных>данных выводов из: выходные данные CMake должны отображать сообщения CMake generation started и CMake generation finished.

  5. Выберите Сборка>всех. Если меню отсутствует, откройте Обозреватель решений, щелкните правой кнопкой мыши файл CMakeLists.txt и выберите Сборка. Выходное расположение приложений INTERCORECOMMS_HL & IntercoreComms RT отображается в окне Вывод .

  6. Выберите Выбрать элемент> запускаIntercoreComms (Все ядра).

  7. Выберите Отладка Отладка> или нажмите клавишу F5, чтобы развернуть и отладить приложения.

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

    Remote debugging from host 192.168.35.1, port 58817
    High-level intercore comms application
    Sends data to, and receives data from a real-time capable application.
    Received 19 bytes: rt-app-to-hl-app-07
    Sending: hl-app-to-rt-app-00
    Sending: hl-app-to-rt-app-01
    
  9. Эмулятор подключенного терминала должен отображать выходные данные из программы, поддерживающей режим реального времени:

    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
    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:31
    Text: hl-app-to-rt-app-01
    
  10. Используйте отладчик для установки точек останова, проверки переменных и выполнения других задач отладки.

  1. В Visual Studio Code откройте папку, в которой вы извлекли приложения IntercoreComms. Visual Studio Code обнаруживает файл intercore.code-workspace и спрашивает, хотите ли вы открыть рабочую область. Выберите Открыть рабочую область, чтобы одновременно открыть приложение в режиме реального времени и приложение высокого уровня.

  2. Если вы не используете RDB MT3620, обновите файлы app_manifest.json для обоих приложений, а также файл определения оборудования и CMakeLists.txt файл для высокоуровневого приложения в соответствии с оборудованием.

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

  4. В окне выходных данных Azure Sphere должно отображаться сообщение "Развертывание образа..." следуют пути к пакету SDK и компилятору.

  5. В окне выходных данных должны отображаться выходные данные приложения высокого уровня:

    Remote debugging from host 192.168.35.1, port 58817
    High-level intercore comms application
    Sends data to, and receives data from a real-time capable application.
    Received 19 bytes: rt-app-to-hl-app-07
    Sending: hl-app-to-rt-app-00
    Sending: hl-app-to-rt-app-01
    
  6. Эмулятор подключенного терминала должен отображать выходные данные из программы, поддерживающей режим реального времени:

    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
    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:31
    Text: hl-app-to-rt-app-01
    
  7. Используйте функции отладки Visual Studio Code для установки точек останова, проверки переменных и выполнения других задач отладки.

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

Приложение может начать выполнение до того, как OpenOCD устанавливает подключение. В результате точки останова, заданные в начале кода, могут быть пропущены. Простое решение для этого заключается в том, чтобы отложить запуск приложения до подключения OpenOCD.

  1. Вставьте следующий код в начало точки входа приложения RTCoreMain. Это приведет к тому, что приложение будет вводить и оставаться в цикле while , пока переменная f не будет задана как true.

    static _Noreturn void RTCoreMain(void)
    {
      .
      .
      .
     volatile bool f = false;
     while (!f) {
        // empty.
     }
      .
      .
      .
    }
    
  2. Нажмите клавишу F5 , чтобы запустить приложение с отладкой, а затем приступить к выполнению.

  3. В области Отладка локальных объектов измените значение f с нуля на единицу.

  4. Пошаговое выполнение кода в обычном режиме.

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

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

  1. Перейдите в папку, в которой вы извлекли приложения IntercoreComms, а затем выберите папку IntercoreComms/IntercoreComms_RTApp_MT3620_BareMetal.

  2. Откройте файл app_manifest.json и убедитесь, что идентификатор компонента приложения высокого уровня отображается в возможности AllowedApplicationConnections.

  3. Откройте интерфейс командной строки с помощью PowerShell, командной строки Windows или командной оболочки Linux. Перейдите в каталог сборки проекта.

  4. В каталоге сборки проекта в командной строке запустите CMake со следующими параметрами:

    cmake --preset <preset-name> <source-path>
    
    • --preset <preset-name>

      Имя предустановки конфигурации сборки, определенное в CMakePresets.json.

    • --build <cmake-path>

      Двоичный каталог, содержащий кэш CMake. Например, при запуске CMake в примере Azure Sphere команда сборки будет иметь значение cmake --build out/ARM-Debug.

    • <source-path>

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

      Параметры CMake разделяются пробелами. Символ продолжения строки (^ для командной строки Windows, \ для командной строки Linux или " для PowerShell) можно использовать для удобства чтения, но он не является обязательным.

    В следующих примерах показаны команды CMake для приложения RTApp IntercoreComms:

    Командная строка Windows

     cmake ^
    --preset "ARM-Debug" ^
     "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_RTApp_MT3620_BareMetal"
    

    Windows PowerShell

     cmake `
    --preset "ARM-Debug" `
     "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_RTApp_MT3620_BareMetal"
    
  5. В каталоге сборки проекта в командной строке выполните команду Ninja, чтобы создать приложение и создать файл пакета образа.

    ninja -C out/ARM-Debug
    

    Ninja помещает результирующие файлы приложения и imagepackage в указанный каталог.

    Вы также можете вызвать Ninja через CMake с помощью следующей команды:

    cmake --build out/<binary-dir>
    

    Задайте <binary-dir> двоичный каталог, содержащий кэш CMake. Например, при запуске CMake в примере Azure Sphere команда сборки будет иметь значение cmake --build out/ARM-Debug.

    При устранении неполадок, особенно после внесения изменений в команды CMake, удалите всю сборку и повторите попытку.

  6. Удалите все приложения, которые уже развернуты на устройстве:

    az sphere device sideload delete
    
  7. В каталоге сборки проекта в командной строке загрузите пакет образа, созданный ninja:

    az sphere device sideload deploy --image-package <path-to-imagepackage>
    

    Приложение начнет работать вскоре после загрузки.

  8. Получите идентификатор компонента для образа:

    az sphere image-package show --image-package <path-to-imagepackage>
    

    Команда возвращает все метаданные для пакета образа. Идентификатор компонента для приложения отображается в разделе Удостоверение для типа образа приложения. Например:

    ...
      "Identity": {
        "ComponentId": "<component-id>",
        "ImageId": "<image-id>",
        "ImageType": "Application"
      },
    ...
    

Создание и развертывание высокоуровневого приложения

  1. Перейдите в папку, в которой вы извлекли приложения IntercoreComms, а затем выберите папку IntercoreComms/IntercoreComms_HighLevelApp.

  2. Откройте файл app_manifest.json и убедитесь, что идентификатор компонента RTApp отображается в возможности AllowedApplicationConnections.

  3. Откройте интерфейс командной строки с помощью PowerShell, командной строки Windows или командной оболочки Linux. Перейдите в каталог сборки проекта.

  4. В каталоге сборки проекта в командной строке запустите CMake со следующими параметрами:

    cmake --preset <preset-name> <source-path>
    
    • --preset <preset-name>

      Имя предустановки конфигурации сборки, определенное в CMakePresets.json.

    • --build <cmake-path>

      Двоичный каталог, содержащий кэш CMake. Например, при запуске CMake в примере Azure Sphere команда сборки будет иметь значение cmake --build out/ARM-Debug.

    • <source-path>

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

      Параметры CMake разделяются пробелами. Символ продолжения строки (^ для командной строки Windows, \ для командной строки Linux или " для PowerShell) можно использовать для удобства чтения, но он не является обязательным.

    В следующих примерах показаны команды CMake для высокоуровневого приложения IntercoreComms.

    Командная строка Windows

     cmake ^
     --preset "ARM-Debug" ^
     "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_HighLevelApp"
    

    Windows PowerShell

     cmake `
     --preset "ARM-Debug" `
     "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_HighLevelApp"
    
  5. В каталоге сборки проекта в командной строке выполните команду Ninja, чтобы создать приложение и создать файл пакета образа.

    ninja -C out/ARM-Debug
    

    Ninja помещает результирующие файлы приложения и imagepackage в указанный каталог.

    Вы также можете вызвать Ninja через CMake с помощью следующей команды:

    cmake --build out/<binary-dir>
    

    Задайте <binary-dir> двоичный каталог, содержащий кэш CMake. Например, при запуске CMake в примере Azure Sphere команда сборки будет иметь значение cmake --build out/ARM-Debug.

    При устранении неполадок, особенно после внесения изменений в команды CMake, удалите всю сборку и повторите попытку.

  6. В каталоге сборки проекта в командной строке загрузите пакет образа, созданный ninja:

    az sphere device sideload deploy --image-package <package-name>
    

    Приложение начнет работать вскоре после загрузки.

  7. Получите идентификатор компонента для образа:

    az sphere image-package show --image-package <path-to-imagepackage>
    

    Команда возвращает все метаданные для пакета образа. Идентификатор компонента для приложения отображается в разделе Удостоверение для типа образа приложения. Например:

    ...
      "Identity": {
        "ComponentId": "<component-id>",
        "ImageId": "<image-id>",
        "ImageType": "Application"
      },
    ...
    

Запуск партнерских приложений с включенной отладкой

  1. Остановите приложение в режиме реального времени, если оно запущено.

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

    az sphere device app start -- --debug-mode true --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. Откройте новую командную строку Azure Sphere (классический интерфейс командной строки Windows Azure Sphere), стандартную командную строку или PowerShell (Windows Azure CLI) или окно терминала (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 Azure Sphere), стандартную командную строку или PowerShell (Windows Azure CLI) или окно терминала (Linux).

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

  12. Остановите высокоуровневое приложение, если оно запущено.

    az sphere device app stop --component-id <component id>
    
  13. Повторно запустите высокоуровневое приложение с отладкой.

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

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

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

    target remote 192.168.35.2:2345

  17. Добавьте точку останова в функцию SendMessageToRTApp:

    break SendMessageToRTApp

  18. Введите c , чтобы продолжить, просмотрите выходные данные в терминале Telnet/TCP, а затем переключитесь в командную строку или окно терминала, содержащее сеанс отладки приложения в реальном времени.

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

Дальнейшие действия