Modo de depuración integrado estático /dinámico para sistemas LINUX integrados

  
En el desarrollo de los sistemas de LINUX integrados existentes, todos los ingenieros están cansados ​​de usar dos modos de depuración diferentes para depurar el kernel y las aplicaciones del sistema. Primero, configure e inicie el sistema LINUX a través de una herramienta de depuración JTAG; después de que el sistema LINUX incorporado se ejecuta normalmente, es necesario continuar la depuración a través de GDB.

LAUTERBACH combina estas dos técnicas tradicionales de depuración para proporcionar una nueva tecnología de depuración LINUX.

Este artículo toma el desarrollo del sistema LINUX en la arquitectura ARM como ejemplo para presentar y comparar la implementación y la aplicación de estos tres modos de depuración diferentes.

Modo de depuración estática

Las herramientas para la depuración de software a través de la interfaz de depuración JTAG solo pueden funcionar en modo de depuración estática. Tanto el procesador como el sistema completo deben suspenderse al mismo tiempo. La herramienta de depuración luego recupera y muestra el estado actual del procesador y el sistema de destino a través de la interfaz JTAG (como se muestra en la Figura 1).

modo de depuración estática tiene las siguientes ventajas: Read

modo de depuración estática sólo las necesidades del medio ambiente es el sistema de destino debe ser compatible con la depuración JTAG estándar, el modo de depuración de las mayores ventajas es que podemos apoyar desde reset La tabla de vectores comienza la depuración;

Mientras la herramienta de depuración admita la depuración de LINUX y MMU, se puede realizar la depuración del kernel de LINUX y el proceso fuera de límites;

Si el software es anormal, el procesador puede suspenderse en cualquier momento. , compruebe el código de error actual y el estado del sistema;

Debido a que el procesador está en un estado suspendido, el núcleo y otros procesos no causarán ninguna interferencia al sistema.

Sin embargo, el modo de depuración estática tiene sus inconvenientes. Una vez que se suspende el procesador, todos los procesos de la interfaz de comunicación se terminan al mismo tiempo. El resultado es que todos los dispositivos externos que se comunican con el procesador a través de una interfaz como Ethernet, Bluetooth o CAN se desconectarán porque esperan un tiempo de espera de respuesta. Por lo tanto, al depurar en modo estático, incluso si solo depura uno de los procesos o funciones, es posible cambiar el estado y la configuración de todo el sistema, luego continuar ejecutando y depurando el programa, no se puede garantizar la integridad y continuidad del sistema, por lo que La depuración posterior puede no tener ningún sentido.

Modo de depuración dinámica

El modo de depuración GDB es un modo de depuración dinámica de uso general para sistemas LINUX integrados. En este modo, es posible suspender solo el proceso actual, y el núcleo del sistema y todos los demás procesos continúan ejecutándose.

Sin embargo, GDB es una herramienta de depuración de software pura y requiere el siguiente entorno de software:

Debe haber procesos activos de GDB Server LINUX en el sistema de destino

Host final tiene software de depuración correspondiente, tal como el Trace32 (Fig. 2)

Trace32 GDB Server a través de un estado con el RS232 o interfaz de comunicación Ethernet, el proceso de recogida se suspende actualmente. Sin embargo, para implementar el modo de depuración dinámica, debe basarse en las siguientes dos condiciones:

El sistema de destino se ha inicializado correctamente y se ha iniciado correctamente.

El servidor GDB está siempre activo Estado — — es decir, la interfaz de comunicación se ha ejecutado correctamente, el procesador o el Servidor GDB no se suspenderán por otros errores de programa

En resumen, ambos modos de depuración tienen sus propias ventajas y desventajas, estática El modo de depuración es relativamente fácil de implementar, y la operación es relativamente simple, pero no se puede garantizar la continuidad y la integridad del sistema; el entorno del modo de depuración dinámica requiere entornos más complicados. Por lo tanto, LAUTERBACH proporciona herramientas de depuración que pueden implementar los dos modos de depuración anteriores, explotando completamente sus ventajas respectivas mientras superan sus defectos respectivos, y realizando el salto de la tecnología de depuración LINUX incorporada.

Modo de depuración dinámico y estático integrado

Para los sistemas LINUX integrados, la herramienta de depuración TRACE32 que admite los modos de depuración dinámica y estática integrada funciona de la siguiente manera (que se muestra en la Figura 3):

1. La herramienta de depuración TRACE32 ingresa al modo de depuración estática a través de la interfaz JTAG. En el modo estático, la configuración del entorno del hardware y el modo de depuración dinámica (GDB) del sistema de destino se completa primero.
2. Si el programa de inicio e inicio del sistema de destino es el foco de la depuración, utilice el modo de depuración estática para la depuración.


3. Después de que el sistema de destino se haya iniciado correctamente, TRACE32 se puede cambiar al modo de depuración dinámica para la depuración dinámica de la aplicación.

4. Si está en el proceso de depuración dinámica, debe volver a configurar e inicializar el sistema. TRACE32 también admite cambiar el sistema al modo de depuración estática en cualquier momento.

Al mismo tiempo, debido a la implementación de los modos de depuración estáticos y dinámicos integrados, muchas de las siguientes propiedades nuevas también se han agregado al modo de depuración dinámica.

Para los procesadores basados ​​en arquitectura ARM, puede usar el canal de comunicación de depuración (DCC) como la interfaz de comunicación de información para el modo de depuración dinámica. Esto requiere solo una interfaz JTAG para admitir modos de depuración dinámicos y estáticos integrados.

Depuración simultánea de dos o más procesos.

Uso de DCC como interfaz de comunicación

En la arquitectura ARM, la interfaz de comunicación DCC ya está incluida en la interfaz JTAG. Cuando la aplicación se ejecuta en el procesador de destino, es completamente factible implementar las siguientes dos comunicaciones de información entre módulos a través de DCC.

Software de depuración en el lado del host

Cualquier aplicación en el sistema de destino — a través del Servidor GDB.

Por lo tanto, si TRACE32 usa DCC como la interfaz para la comunicación con el Servidor GDB, Se necesitan interfaces de comunicación adicionales para admitir el modo de depuración dinámica (como se muestra en la Figura 4).

depuración varios procesos al mismo tiempo

En el proceso de depuración real, a menudo tienen que depurar varios procesos simultáneamente. Para implementar esta propiedad, LAUTERBACH proporciona el módulo T32Server para el modo de depuración dinámica. Si el T32Server se inicia como un proceso LINUX desde la ventana del terminal, se pueden implementar los siguientes comandos y operaciones:

Proceso de inicio (TASK.RUN)

Seleccione el proceso en ejecución (TASK.SELECT)

detener el proceso (TASK.KILL)


cuando se inicia un proceso y verificados, T32Server se le asignará un servidor GDB separado para cada proceso (Como se muestra en la Figura 5), ​​con los tres comandos de operación TASK anteriores, puede lograr la modulación simultánea de múltiples procesos. El usuario puede ver la información del proceso actual a través del comando (TASK.LIST).

Copyright © Conocimiento de Windows All Rights Reserved