Tutorial: Compilación y depuración de aplicaciones de asociados
En este tutorial se muestra cómo compilar y depurar un proyecto de ejemplo que incluye una aplicación de alto nivel y una aplicación compatible en tiempo real, donde las dos aplicaciones se comunican entre el núcleo A7 de alto nivel y el núcleo M4 en tiempo real. Consulte Información general sobre Azure Sphere aplicaciones para obtener información básica sobre las aplicaciones de alto nivel y las aplicaciones con respuesta en tiempo real.
En este tutorial, aprenderá a:
- Instalación de la cadena de herramientas de GNU Arm
- Configuración del hardware para mostrar la salida
- Habilitación del desarrollo y la depuración
- Clonación del Azure Sphere de ejemplo
- Inicio de un emulador de terminal para ver la salida
- Compilación, ejecución y depuración de un par de aplicaciones de asociados
Importante
En estas instrucciones se supone que está usando hardware que sigue el hardware de diseño de la placa de referencia (RDB) MT3620, como el kit de desarrollo MT3620 de Seeed Studios. Si usa otro hardware de Azure Sphere, consulte la documentación del fabricante para averiguar si el UART está expuesto y cómo acceder a él. Es posible que deba configurar el hardware para mostrar el resultado de forma diferente y actualizar el código de ejemplo y el campo "Uarts" del archivo app_manifest.json para usar un UART diferente.
Prerrequisitos
- Instale CMake y Ninja para Windows o para Linux.
- Instale Visual Studio Code para Windows o para Linux.
- Instale CMake y Ninja para Windows o para Linux.
- Instalación del SDK Azure Sphere para Windows o para Linux
- Elegir un inquilino y reclamar el dispositivo
- Configuración de redes y actualización del sistema operativo del dispositivo
Instale la cadena de herramientas insertada de GNU Arm para Windows.
Si usa Visual Studio, vaya a Set up hardware to display output (Configurar hardware para mostrar la salida). La cadena de herramientas se instala con la extensión Azure Sphere para Visual Studio. Sin embargo, si ha instalado la cadena de herramientas de GNU ARM Embedded manualmente, Visual Studio usará la versión que instaló.
Para instalar la cadena de herramientas:
- En el sitio web para desarrolladoresde Arm, busque la cadena de herramientas GNU Arm Embedded que incluye el compilador para el procesador Arm Cortex-M4. Siga las instrucciones para descargar e instalar el compilador para la plataforma del sistema operativo.
De forma predeterminada, Visual Studio Code busca la cadena de herramientas y debe encontrar la versión instalada. Si encuentra problemas de compilación relacionados con la cadena de herramientas, active Preferencias Configuración Extensiones de AzureSphere para asegurarse de que > > > "Azure Sphere: Ruta de acceso de Arm Gnu" identifica el directorio de instalación de la cadena de herramientas de GNU Arm Embedded.
Configuración del hardware para mostrar la salida
Actualmente, cada núcleo en tiempo real es compatible con un UART solo TX. Las aplicaciones con respuesta en tiempo real pueden usar este UART para enviar la salida del registro desde el dispositivo. Durante el desarrollo y la depuración de las aplicaciones, por lo general necesitará una manera de leer y mostrar la salida. El ejemplo HelloWorld_RTApp_MT3620_BareMetal muestra cómo una aplicación puede escribir en el UART.
Use un adaptador de USB a serie como FTDI Friend para conectar el UART del núcleo en tiempo real a un puerto USB de la máquina. También necesitará un emulador de terminal para establecer una conexión serie con la configuración de terminal 115200-8-N-1 (115200 bps, 8 bits, sin bits de paridad, un bit de detenerse) para mostrar la salida.
Haga lo siguiente para configurar el hardware de forma que muestre la salida de una aplicación con capacidad en tiempo real. Hay que consultar la documentación del fabricante del hardware para saber dónde están las ubicaciones de las conexiones. Si usa hardware que sigue el diseño de la placa de referencia (RDB) MT3620, como el kit de desarrollo para MT3620 de Seeed Studios, el examen de los conectores de la interfaz de RDB puede ayudarle a determinar las ubicaciones de los pines.
Conecte el GND del adaptador de USB a serie al GND del kit de desarrollo. En el hardware MT3620, GND es el encabezado 3, conexión 2.
Conecte la toma RX del adaptador de USB a serie a la toma IOM4-0 TX del kit de desarrollo. En el hardware de diseño de placa de referencia MT3620, la toma IOM4-0 TX es el encabezado 3, conexión 6.
Conecte el adaptador de USB a serie a un puerto USB gratuito en la máquina de desarrollo y determine a qué puerto está conectado el dispositivo serie.
En Windows, inicie Administrador de dispositivos, seleccione Ver > dispositivos por contenedor y busque "UART USB". Por ejemplo, UART USB FT232R indica el adaptador FTDI Friend.
En Linux, escriba el siguiente comando:
dmesg | grep ttyUSBEl puerto se llamará ttyUSB n, donde n indica el número de puerto. Si el comando enumera varios puertos USB, el que está conectado al que suele ser el último notificado
dmesgcomo conectado. Por ejemplo, en el ejemplo siguiente, usaría 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 ttyUSB1Inicie un programa de emulador de terminal y abra un terminal 115200-8-N-1 en el puerto COM que usa el adaptador. Consulte la documentación del emulador de terminal para averiguar cómo especificar el puerto y la velocidad.
Habilitación del desarrollo y la depuración
Antes de poder compilar una aplicación de ejemplo en el dispositivo de Azure Sphere o desarrollar nuevas aplicaciones para él, debe habilitar el desarrollo y la depuración. De forma predeterminada, los dispositivos de Azure Sphere están "bloqueados"; es decir, no permiten la carga de las aplicaciones en desarrollo desde un equipo, y no permiten la depuración de aplicaciones. La preparación del dispositivo para la depuración elimina esta restricción, carga el software necesario para depurar y desbloquea las funcionalidades del dispositivo, tal y como se describe en Funcionalidades del dispositivo y comunicación.
Para depurar en los núcleos en tiempo real, use el comando azsphere device enable-development. Este comando configura el dispositivo para que acepte aplicaciones de un equipo para la depuración y asigna el dispositivo al grupo de dispositivos Desarrollo, que no permite actualizaciones de aplicaciones en la nube. Durante el desarrollo y la depuración de aplicaciones, debe dejar el dispositivo en este grupo para que las actualizaciones de las aplicaciones en la nube no sobrescriban la aplicación en desarrollo.
En Windows, debe agregar el parámetro , que carga los servidores de depuración y los controladores necesarios para cada --enable-rt-core-debugging tipo de núcleo en el dispositivo.
Inicie sesión en Azure Sphere si aún no lo ha hecho:
azsphere loginAbra una interfaz de línea de comandos mediante PowerShell o Windows símbolo del sistema con privilegios de administrador. El
--enable-rt-core-debuggingparámetro requiere privilegios de administrador porque instala controladores USB para el depurador.Escriba el comando siguiente:
azsphere device enable-development --enable-rt-core-debuggingCierre la ventana cuando el comando termine, porque ya no se necesitan privilegios de administrador. Como procedimiento recomendado, debe utilizar siempre el privilegio más bajo que puede realizar una tarea.
Si se produce un error en el comando azsphere device enable-development, consulte Solución Azure Sphere problemas para obtener ayuda.
Descarga de la aplicación de ejemplo
Puede descargar las aplicaciones de InterCore Communications de la siguiente manera:
- Apunte el explorador a Explorador de ejemplos de Microsoft.
- Escriba "Azure Sphere" en el cuadro Buscar.
- Seleccione Azure Sphere - Comunicaciones entre núcleos en los resultados de la búsqueda.
- Seleccione Descargar ARCHIVO ZIP.
- Abra el archivo descargado y extraiga en un directorio local.
Compilación y ejecución de las aplicaciones asociadas
Inicie Visual Studio. Seleccione Abrir una carpeta local y vaya a la carpeta donde extrajo las aplicaciones IntercoreComms.
Si no usa una RDB MT3620, actualice elapp_manifest.jsen los archivos de las aplicaciones y el archivo de definición de hardware y el archivo CMakeLists.txt para que la aplicación de alto nivel coincida con el hardware.
Si la generación de CMake no se inicia automáticamente, seleccione el archivo CMakeLists.txt.
En Visual Studio, Ver > salida > Mostrar salida de: La salida de CMake debe mostrar los mensajes
CMake generation startedyCMake generation finished.Seleccione Build > Build All (Compilar todo). Si el menú no está presente, abra el Explorador de soluciones, haga clic en el archivo CMakeLists.txt y seleccione Compilar. La ubicación de salida de la HelloWorld_RTApp_MT3620_Baremetal aplicación aparece en la ventana Salida.
Seleccione Seleccionar elemento de inicio > IntercoreComms (Todos los núcleos).
Seleccione Depurar > depuración o presione F5 para implementar y depurar las aplicaciones.
En la ventana Salida, Seleccione la salida en el menú y seleccione Salida del dispositivo. La ventana Salida debe mostrar la salida de la aplicación de alto nivel:
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-01El emulador de terminal conectado debe mostrar la salida del programa compatible en tiempo real:
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-01Use el depurador para establecer puntos de interrupción, inspeccionar variables y probar otras tareas de depuración.
En Visual Studio Code, abra la carpeta donde extrajo las aplicaciones IntercoreComms. Visual Studio Code detecta el archivo intercore.code-workspace y le pregunta si desea abrir el área de trabajo. Seleccione Abrir área de trabajo para abrir la aplicación en tiempo real y la aplicación de alto nivel a la vez.
Si no usa una RDB MT3620, actualice elapp_manifest.jsen los archivos de las aplicaciones y el archivo de definición de hardware y el archivo CMakeLists.txt para que la aplicación de alto nivel coincida con el hardware.
Presione F5 para iniciar el depurador. Si el proyecto no se ha compilado previamente, o si los archivos han cambiado y es necesario recompilar, Visual Studio Code compilará el proyecto antes de que se inicie la depuración.
La ventana de salida de Azure Sphere debe mostrar "Implementando imagen..." seguido de las rutas de acceso al SDK y al compilador.
La ventana de salida debe mostrar la salida de la aplicación de alto nivel:
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-01El emulador de terminal conectado debe mostrar la salida del programa compatible en tiempo real:
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-01Use las características de depuración de Visual Studio Code para establecer puntos de interrupción, inspeccionar variables y probar otras tareas de depuración.
Solución de problemas
Es posible que la aplicación comience a ejecutarse antes de que OpenOCD realice una conexión. Como resultado, es posible que se pierdan los puntos de interrupción establecidos antes en el código. Una sencilla solución para esta situación es retrasar el inicio de la aplicación hasta que se conecte OpenOCD.
Inserte el siguiente código al principio del punto de entrada de la aplicación RTCoreMain. Esto hará que la aplicación entre en un bucle
whiley permanezca en él hasta que la variablefse establezca en true.static _Noreturn void RTCoreMain(void) { . . . volatile bool f = false; while (!f) { // empty. } . . . }Presione F5 para iniciar la aplicación con depuración y, a continuación, interrumpir la ejecución.
En el panel de depuración Expresiones locales, cambie el valor de
fde cero a uno.Pase por el código como de costumbre.
Al compilar con la CLI, primero se compila e implementa la aplicación compatible en tiempo real y, a continuación, se compila e implementa la aplicación de alto nivel.
Compilación e implementación de la aplicación compatible en tiempo real
Vaya a la carpeta donde extrajo las aplicaciones IntercoreComms y, a continuación, seleccione la carpeta IntercoreComms/IntercoreComms_RTApp_MT3620_BareMetal.
Abra el app_manifest.jsen el archivo y compruebe que el identificador de componente de la aplicación de alto nivel se muestra en la funcionalidad AllowedApplicationConnections.
Cree o navegue hasta el directorio de compilación del proyecto para la aplicación compatible en tiempo real. Este es el directorio que contendrá los archivos .imagepackage de compilación que se generarán durante el proceso de compilación. Por ejemplo, para crear y abrir un nuevo directorio denominado "build", escribiría los siguientes comandos:
mkdir build cd buildAbra una interfaz de línea de comandos mediante PowerShell, Windows símbolo del sistema o el shell de comandos de Linux. Vaya al directorio de compilación del proyecto.
Desde el directorio de compilación del proyecto, en el símbolo del sistema, ejecute CMake con los parámetros siguientes:
-G Establezca este parámetro en "Ninja" para indicar que CMake debe usar el generador Ninja para crear los archivos de compilación, ya que Ninja se usará para completar la compilación.
-DCMAKE_TOOLCHAIN_FILE
Establezca este parámetro en la ruta de acceso al archivo de cadena de herramientas del compilador en el equipo. Por Windows, el CMAKE_TOOLCHAIN_FILE debe apuntar a C:\Archivos de programa (x86) \ <path to SDK> \CMakeFiles\AzureSphereRTCoreToolchain.cmake. Para Linux, especifique /opt/azurespheresdk/CMakeFiles/AzureSphereRTCoreToolchain.cmake.
-DARM_GNU_PATH
Establezca este parámetro en la ruta de acceso al directorio de la máquina que contiene arm-none-eabi-gcc y no la ruta de acceso al propio compilador. Si usa las herramientas GNU de Visual Studio, la ruta de acceso ARM_GNU_PATH estaría en la subcarpeta \ \Linux\gcc_arm\bin de la edición 2019 de la instalación de Visual Studio, en lugar de la ruta de acceso del ejemplo.
-DCMAKE_BUILD_TYPE
Establezca este parámetro en el tipo de compilación. Los valores posibles son Debug y Release.
El parámetro final es la ruta de acceso al directorio de la máquina que contiene los archivos de origen de la aplicación de ejemplo. En el ejemplo, el repositorio de ejemplos de Azure Sphere se descargó en un directorio denominado AzSphere.
Los parámetros de CMake se separan mediante espacios. El carácter de continuación de línea ("^" para Windows línea de comandos o "" para la línea de comandos de Linux) se puede usar para mejorar la legibilidad, pero \ no es necesario.
En los ejemplos siguientes se muestran los comandos de CMake para IntercoreComms RTApp:
Windows Símbolo del sistema
cmake ^ -G "Ninja" ^ -DCMAKE_TOOLCHAIN_FILE="C:\Program Files (x86)\Microsoft Azure Sphere SDK\CMakeFiles\AzureSphereRTCoreToolchain.cmake" ^ -DARM_GNU_PATH:STRING="C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin" ^ -DCMAKE_BUILD_TYPE="Debug" ^ "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_RTApp_MT3620_BareMetal"Windows PowerShell
cmake ` -G "Ninja" ` -DCMAKE_TOOLCHAIN_FILE="C:\Program Files (x86)\Microsoft Azure Sphere SDK\CMakeFiles\AzureSphereRTCoreToolchain.cmake" ` -DARM_GNU_PATH:STRING="C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin" ` -DCMAKE_BUILD_TYPE="Debug" ` "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_RTApp_MT3620_BareMetal"Desde el directorio de compilación del proyecto, en el símbolo del sistema, ejecute
ninjapara compilar la aplicación y crear el archivo de paquete de imagen.Para solucionar problemas, especialmente después de realizar cambios en los comandos de CMake, elimine la compilación completa e inténtelo de nuevo.
Elimine las aplicaciones que ya están implementadas en el dispositivo:
azsphere device sideload deleteDesde el directorio de compilación del proyecto, en el símbolo del sistema, cargue el paquete de imagen que ninja creó:
azsphere device sideload deploy --image-package <path-to-imagepackage>La aplicación comenzará a ejecutarse poco después de que se cargue.
Obtención del identificador del componente para la imagen:
azsphere image-package show --image-package <path-to-imagepackage>El comando devuelve todos los metadatos del paquete de imágenes. El identificador de componente de la aplicación aparece en la sección Identidad del tipo de imagen de aplicación. Por ejemplo:
Image package metadata: Section: Identity Image Type: Application Component ID: <component id> Image ID: <image id>
Compilación e implementación de la aplicación de alto nivel
Vaya a la carpeta donde extrajo las aplicaciones IntercoreComms y, a continuación, seleccione la carpeta IntercoreComms/IntercoreComms_HighLevelApp.
Abra el app_manifest.jsen el archivo y compruebe que el identificador de componente de rtapp se muestra en la funcionalidad AllowedApplicationConnections.
Cree o navegue hasta el directorio de compilación del proyecto para la aplicación de alto nivel. Este es el directorio que contendrá los archivos .imagepackage de compilación que se generarán durante el proceso de compilación. Por ejemplo, para crear y abrir un nuevo directorio denominado "compilación", debe escribir los siguientes comandos:
mkdir build cd buildAbra una interfaz de línea de comandos mediante PowerShell, Windows símbolo del sistema o el shell de comandos de Linux. Vaya al directorio de compilación del proyecto.
Desde el directorio de compilación del proyecto, en el símbolo del sistema, ejecute CMake con los parámetros siguientes:
-G Establezca este parámetro en "Ninja" para indicar que CMake debe usar el generador Ninja para crear los archivos de compilación, ya que Ninja se usará para completar la compilación.
-DCMAKE_TOOLCHAIN_FILE
Establezca este parámetro en la ruta de acceso al archivo de cadena de herramientas del compilador en el equipo. Por Windows, el CMAKE_TOOLCHAIN_FILE debe apuntar a C:\Archivos de programa (x86)\Microsoft Azure Sphere SDK\CMakeFiles\AzureSphereRTCoreToolchain.cmake. Para Linux, especifique /opt/azurespheresdk/CMakeFiles/AzureSphereRTCoreToolchain.cmake.
-DAZURE_SPHERE_TARGET_API_SET
Establezca este parámetro en el valor Azure Sphere API que se va a usar. En el ejemplo, se establece en "latest-lts", que selecciona el conjunto más reciente de API designadas para soporte técnico a largo plazo.
-DCMAKE_BUILD_TYPE
Establezca este parámetro en el tipo de compilación. Los valores posibles son Debug y Release.
El parámetro final es la ruta de acceso al directorio de la máquina que contiene los archivos de origen de la aplicación de ejemplo. En el ejemplo, el repositorio de ejemplos de Azure Sphere se descargó en un directorio denominado AzSphere.
Los parámetros de CMake se separan mediante espacios. El carácter de continuación de línea ("^" para Windows línea de comandos o " " para la línea de comandos de Linux) se puede usar para mejorar la \ legibilidad, pero no es necesario.
En los ejemplos siguientes se muestran los comandos de CMake para la aplicación de alto nivel IntercoreComms.
Windows Símbolo del sistema
cmake ^ -G "Ninja" ^ -DCMAKE_TOOLCHAIN_FILE="C:\Program Files (x86)\Microsoft Azure Sphere SDK\CMakeFiles\AzureSphereToolchain.cmake" ^ -DAZURE_SPHERE_TARGET_API_SET="latest-lts" ^ -DCMAKE_BUILD_TYPE="Debug" ^ "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_HighLevelApp"Windows PowerShell
cmake ` -G "Ninja" ` -DCMAKE_TOOLCHAIN_FILE="C:\Program Files (x86)\Microsoft Azure Sphere SDK\CMakeFiles\AzureSphereToolchain.cmake" ` -DAZURE_SPHERE_TARGET_API_SET="latest-lts" ` -DCMAKE_BUILD_TYPE="Debug" ` "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_HighLevelApp"Desde el directorio de compilación del proyecto, en el símbolo del sistema, ejecute
ninjapara compilar la aplicación y crear el archivo de paquete de imagen.Para solucionar problemas, especialmente después de realizar cambios en los comandos de CMake, elimine la compilación completa e inténtelo de nuevo.
Desde el directorio de compilación del proyecto, en el símbolo del sistema, cargue el paquete de imagen que ninja creó:
azsphere device sideload deploy --image-package <package-name>La aplicación comenzará a ejecutarse poco después de que se cargue.
Obtención del identificador del componente para la imagen:
azsphere image-package show --image-package <path-to-imagepackage>El comando devuelve todos los metadatos del paquete de imágenes. El identificador de componente de la aplicación aparece en la sección Identidad del tipo de imagen de aplicación. Por ejemplo:
Image package metadata: Section: Identity Image Type: Application Component ID: <component id> Image ID: <image id>
Ejecución de las aplicaciones asociadas con la depuración habilitada
Detenga la aplicación en tiempo real si se está ejecutando.
azsphere device app stop --component-id <component id>Vuelva a iniciar la aplicación para la depuración.
azsphere device app start --component-id <component id>Este comando devuelve el núcleo en el que se ejecuta la aplicación.
<component id> App state: running Core : Real-time 0Vaya a la carpeta Openocd para el sysroot con que se compiló la aplicación. Los sysroot se instalan en la carpeta de instalación del SDK de Azure Sphere. Por ejemplo, en Windows, la carpeta se instala de manera predeterminada en
C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\openocdy en Linux, en/opt/azurespheresdk/Sysroots/*sysroot*/tools/sysroots/x86_64-pokysdk-linux.Ejecute
openocdcomo se muestra en el ejemplo siguiente. En el ejemplo se da por supuesto que la aplicación se ejecuta en el núcleo 0. Si la aplicación se ejecuta en el núcleo 1, reemplace "targets io0" por "targets io1".Abra un nuevo símbolo del Azure Sphere de comandos (Windows Azure Sphere cli clásica), símbolo del sistema estándar o PowerShell (CLI Windows Azure Sphere) o ventana de terminal (Linux).
Vaya a la carpeta que contiene el archivo .out de la aplicación compatible en tiempo real e inicie , que forma parte de la cadena de herramientas
arm-none-eabi-gdbde GNU Arm Embedded:Windows Símbolo del sistema
"C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.outWindows PowerShell
& "C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.outEl servidor OpenOCD proporciona una interfaz de servidor GDB en :4444. Establezca el destino para la depuración.
target remote :4444Ahora puede emitir comandos gdb a la aplicación compatible en tiempo real. Agregue un punto de interrupción en la función HandleSendTimerDeferred:
break HandleSendTimerDeferredEl emulador de terminal conectado debe mostrar la salida de la aplicación compatible en tiempo real.
Abra un nuevo símbolo del Azure Sphere de comandos (Windows Azure Sphere cli clásica), símbolo del sistema estándar o PowerShell (CLI Windows Azure Sphere) o ventana de terminal (Linux).
Vaya a la carpeta que contiene el archivo .imagepackage de aplicación de alto nivel.
Detenga la aplicación de alto nivel si se está ejecutando.
azsphere device app stop --component-id <component id>Vuelva a iniciar la aplicación de alto nivel con la depuración.
azsphere device app start --component-id <component id> --debug-modeAbra un emulador de terminal y establezca una conexión Telnet o TCP a 192.168.35.2 en el puerto 2342 para ver la salida de la aplicación de alto nivel.
Inicie gdb con el siguiente comando:
Windows Símbolo del sistema
"C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb.exe" IntercoreComms_HighLevelApp.outWindows PowerShell
& "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb.exe" IntercoreComms_HighLevelApp.outEstablezca el destino de depuración remota en la dirección IP 192.168.35.2 en el puerto 2345:
target remote 192.168.35.2:2345Agregue un punto de interrupción en la función SendMessageToRTApp:
break SendMessageToRTAppEscriba para continuar, observe la salida en el terminal Telnet/TCP y, a continuación, cambie al símbolo del sistema o a la ventana de terminal que contiene la sesión de depuración
cde la aplicación en tiempo real.Escriba
cpara continuar y observar la salida en la sesión serie conectada.
Puede trabajar entre sesiones de depuración y cambiar entre la aplicación compatible en tiempo real y la aplicación de alto nivel. Debería ver una salida similar a la siguiente en las dos ventanas de salida:
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
Para finalizar cada sesión de depuración, escriba q en el símbolo del sistema gdb.
Pasos siguientes
- Explore ejemplos adicionales para aplicaciones de alto nivel y con capacidad en tiempo real.
- Más información sobre Azure Sphere aplicaciones
- Más información sobre el entorno de Azure Sphere desarrollo