La arquitectura de depuración de MIPI Alliance proporciona una infraestructura estandarizada para depurar sistemas profundamente integrados en el espacio móvil y con influencia móvil. El grupo de trabajo de depuración de MIPI Alliance ha publicado una cartera de especificaciones; su objetivo es proporcionar protocolos de depuración estándar e interfaces estándar desde un sistema en un chip (SoC) a la herramienta de depuración. El documento técnico Descripción general de la arquitectura para la depuración resume todos los esfuerzos. En los últimos años, el grupo se centró en especificar protocolos que mejoren la visibilidad de las operaciones internas de sistemas profundamente integrados, estandarizar soluciones de depuración a través de las interfaces funcionales de dispositivos de formato y especificar el uso de I3C como bus de depuración. [1] [2]
El término "depuración" abarca los distintos métodos que se utilizan para detectar, clasificar, rastrear y, potencialmente, eliminar errores o fallas en hardware y software. La depuración incluye métodos de control/configuración, depuración en modo de parada/paso a paso y diversas formas de rastreo .
La depuración se puede utilizar para controlar y configurar componentes, incluidos los sistemas integrados, de un sistema de destino determinado. Las funciones estándar incluyen la configuración de puntos de interrupción de hardware , la preparación y configuración del sistema de seguimiento y el examen de los estados del sistema .
En la depuración en modo de parada/paso, el núcleo/microcontrolador se detiene mediante el uso de puntos de interrupción y luego se ejecuta el código paso a paso ejecutando las instrucciones una a una. Si los demás núcleos/microcontroladores del SoC han finalizado de manera sincronizada, se puede examinar el estado general del sistema. La depuración en modo de parada/paso incluye técnicas de control/configuración, control de ejecución de un núcleo/microcontrolador, sincronización de inicio/parada con otros núcleos, acceso a la memoria y a los registros, y funciones de depuración adicionales, como el contador de rendimiento y el acceso a la memoria en tiempo de ejecución.
Los rastros permiten un análisis profundo del comportamiento y las características de tiempo de un sistema embebido. Los rastros siguientes son típicos:
El rastreo es la herramienta preferida para monitorear y analizar lo que sucede en un SoC complejo. Existen varios estándares de rastreo de bus y de núcleo que no son MIPI bien establecidos para el mercado de sistemas integrados. Por lo tanto, no hubo necesidad de que el Grupo de trabajo de depuración de MIPI especificara otros nuevos. Pero no existía ningún estándar para un "rastreo de sistema" cuando el Grupo de trabajo de depuración publicó su primera versión del Protocolo de rastreo de sistema MIPI (MIPI STP) en 2006.
La generación de datos de seguimiento del sistema a partir del software se realiza normalmente insertando llamadas de función adicionales, que producen información de diagnóstico valiosa para el proceso de depuración. Esta técnica de depuración se denomina instrumentación. Algunos ejemplos son: funciones de generación de cadenas de estilo printf, información de valores, afirmaciones, etc. El propósito de MIPI System Software Trace (MIPI SyS-T) es definir un protocolo de datos reutilizable y de uso general y una API de instrumentación para la depuración. La especificación define formatos de mensajes que permiten que una herramienta de análisis de seguimiento decodifique los mensajes de depuración, ya sea en texto legible para humanos o en señales optimizadas para el análisis automatizado.
Dado que los mensajes de texto extensos exigen límites de ancho de banda para la depuración, se proporcionan los denominados "mensajes de catálogo". Los mensajes de catálogo son mensajes binarios compactos que sustituyen cadenas por valores numéricos. La traducción del valor numérico a una cadena de mensaje la realiza la herramienta de análisis de trazas, con la ayuda de información XML adicional . Esta información se proporciona durante el proceso de creación del software mediante un esquema XML que también forma parte de la especificación.
El protocolo de datos SyS-T está diseñado para funcionar de manera eficiente sobre enlaces de transporte de nivel inferior, como los definidos por el Protocolo de seguimiento del sistema MIPI . Las funciones del protocolo SyS-T, como el sellado de tiempo o las sumas de comprobación de integridad de datos, se pueden deshabilitar si el enlace de transporte ya ofrece dichas capacidades. También es posible el uso de otros enlaces de transporte, como UART , USB o TCP/IP .
El grupo de trabajo de depuración de MIPI proporcionará una implementación de referencia de código abierto para la API de instrumentación SyS-T, una impresora de mensajes SyS-T y una herramienta para generar datos colaterales XML tan pronto como se apruebe la Especificación para el Rastreo de Software del Sistema (SyS-T). [3]
El protocolo de rastreo del sistema MIPI (MIPI STP) especifica un protocolo genérico que permite la fusión de flujos de rastreo originados desde cualquier parte del SoC en un flujo de rastreo de tramas de 4 bits. Fue diseñado intencionalmente para fusionar información de rastreo del sistema. El protocolo de rastreo del sistema MIPI utiliza una topología de canal/maestro que permite que la herramienta de análisis de recepción de rastreo recopile los flujos de rastreo individuales para su análisis y visualización. El protocolo proporciona además las siguientes funciones: sincronización y alineación de flujo, marcadores de activación, marca de tiempo global y sincronización de tiempo de múltiples flujos.
El flujo de paquetes STP producido por el módulo de seguimiento del sistema se puede guardar directamente en la memoria RAM de seguimiento, exportar directamente fuera del chip o se puede enrutar a un módulo de protocolo de envoltura de seguimiento (TWP) para fusionarlo con otros flujos de seguimiento. La macrocelda de seguimiento del sistema CoreSight de ARM [4] , que es compatible con MIPI STP, es hoy una parte integral de la mayoría de los chips multinúcleo utilizados en el espacio móvil.
La última versión de la Especificación para el Protocolo de Rastreo del Sistema (STP SM ) adoptada por la placa MIPI es la versión 2.2 (febrero de 2016). [5]
El protocolo MIPI Trace Wrapper permite fusionar varios flujos de seguimiento en un único flujo de seguimiento (flujos de bytes). Un protocolo de envoltura asigna una identificación única a cada flujo de seguimiento. La detección de límites de bytes/palabras es posible incluso si los datos se transmiten como un flujo de bits. Se utilizan paquetes inertes si se requiere una exportación continua de datos de seguimiento. El protocolo MIPI Trace Wrapper se basa en el protocolo Trace Formatter de ARM especificado para ARM CoreSight.
La última versión de la Especificación para el Protocolo Trace Wrapper (TWP SM ) adoptada por la placa MIPI es la versión 1.1 (diciembre de 2014). [6]
En las primeras etapas del desarrollo de un producto, es habitual utilizar placas de desarrollo con interfaces de depuración dedicadas y de fácil acceso para conectar las herramientas de depuración. Los SoC empleados en el mercado de dispositivos móviles se basan en dos tecnologías de depuración: depuración en modo de parada mediante una cadena de escaneo y depuración en modo de parada mediante registros de depuración asignados a la memoria.
Los siguientes estándares de depuración no MIPI están bien establecidos en el mercado de dispositivos integrados: IEEE 1149.1 JTAG (5 pines) y ARM Serial Wire Debug (2 pines), ambos utilizan pines de un solo extremo. Por lo tanto, no hubo necesidad de que el grupo de trabajo de depuración MIPI especificara un protocolo de depuración en modo de detención ni una interfaz de depuración.
Los datos de seguimiento generados y fusionados en un flujo de seguimiento dentro del SoC se pueden transmitir, a través de una interfaz de seguimiento unidireccional dedicada, fuera del chip a una herramienta de análisis de seguimiento. La arquitectura de depuración MIPI proporciona especificaciones para puertos de seguimiento tanto paralelos como seriales.
La interfaz de seguimiento paralelo MIPI (MIPI PTI) especifica cómo pasar los datos de seguimiento a varios pines de datos y a un pin de reloj (de un solo extremo). La especificación incluye nombres y funciones de señales, temporización y restricciones eléctricas. La última versión de la especificación para la interfaz de seguimiento paralelo adoptada por la placa MIPI es la versión 2.0 (octubre de 2011). [7]
La interfaz de seguimiento de alta velocidad MIPI (MIPI HTI) especifica cómo transmitir datos de seguimiento a través de la capa física de interfaces estándar, como PCI Express , DisplayPort , HDMI o USB. La versión actual de la especificación permite de uno a seis carriles. La especificación incluye:
La HTI es un subconjunto de la especificación del puerto de seguimiento serial de alta velocidad (HSSTP) definida por ARM. [8] La última versión de la Especificación para la interfaz de seguimiento de alta velocidad adoptada por la placa MIPI es la versión 1.0 (julio de 2016). [9]
Los desarrolladores de placas y los proveedores de herramientas de depuración se benefician de los conectores de depuración estándar y las asignaciones de pines estándar. La Recomendación MIPI para conectores de depuración y rastreo recomienda conectores de 1,27 milímetros (0,050 pulgadas) a nivel de placa de 10, 20 y 34 pines (MIPI10/20/34). Se han especificado siete asignaciones de pines diferentes que abordan una amplia variedad de escenarios de depuración. Incluyen JTAG estándar (IEEE 1149.1), cJTAG (IEEE 1149.7) e interfaces de rastreo paralelas de 4 bits (utilizadas principalmente para rastreos del sistema), complementadas con el estándar Serial Wire Debug (SWD) específico de ARM. [10] Los conectores de depuración MIPI10/20/34 se convirtieron en el estándar para los diseños integrados basados en ARM.
Muchos diseños integrados en el espacio móvil utilizan puertos de seguimiento paralelos de alta velocidad (hasta 600 megabits por segundo por pin). MIPI recomienda un conector Samtec QSH/QTH de 60 pines llamado MIPI60, que permite JTAG/cJTAG para el control de ejecución, hasta 40 señales de datos de seguimiento y hasta 4 relojes de seguimiento. Para minimizar la complejidad, la recomendación define cuatro configuraciones estándar con uno, dos, tres o cuatro canales de seguimiento de ancho variable.
La última versión de la Recomendación de la Alianza MIPI para conectores de depuración y seguimiento adoptada por la junta MIPI es la versión 1.1 (marzo de 2011). [11]
En el formato final del producto no se dispone de interfaces de depuración de fácil acceso, lo que dificulta la identificación de errores y la optimización del rendimiento en el producto final. Dado que la lógica de depuración sigue estando presente en el producto final, se necesita una ruta de acceso alternativa. Una forma eficaz es equipar la interfaz estándar de un terminal móvil con un multiplexor que permita acceder a la lógica de depuración. La conmutación entre la función esencial de la interfaz y la función de depuración puede iniciarse mediante la herramienta de depuración conectada o mediante el software del terminal móvil. Las herramientas de depuración estándar se pueden utilizar en las siguientes condiciones:
La interfaz estrecha MIPI para depuración y prueba (MIPI NIDnT) cubre la depuración a través de las siguientes interfaces estándar: microSD , receptáculo USB 2.0 Micro-B/-AB, receptáculo USB tipo C y DisplayPort. La última versión de la especificación para interfaz estrecha para depuración y prueba (NIDnT SM ) adoptada por la placa MIPI es la versión 1.2 (diciembre de 2017). [12]
En lugar de reutilizar los pines, la depuración también se puede realizar a través de la pila de protocolos de una interfaz o red estándar. En este caso, el tráfico de depuración coexiste con el tráfico de otras aplicaciones que utilizan el mismo enlace de comunicación. El grupo de trabajo de depuración de MIPI denominó este enfoque GigaBit Debug . Dado que no existía ningún protocolo de depuración para este enfoque, el grupo de trabajo de depuración de MIPI especificó su protocolo de depuración SneakPeak.
El protocolo MIPI SneakPeek (MIPI SPP) pasó de ser una interfaz dedicada a la depuración básica a una interfaz impulsada por protocolo:
La Especificación para el Protocolo SneakPeek de la MIPI Alliance describe los conceptos básicos, la infraestructura requerida, los paquetes y el flujo de datos. La última versión de la Especificación para el Protocolo SneakPeek (SPP SM ) adoptada por la junta directiva de MIPI es la versión 1.0 (agosto de 2015). [13]
La familia de especificaciones de depuración Gigabit MIPI proporciona detalles para la asignación de protocolos de depuración y seguimiento a E/S o redes estándar disponibles en terminales móviles. Estos detalles incluyen: direccionamiento de puntos finales, inicialización y gestión de enlaces, empaquetado de datos, gestión de flujo de datos y detección y recuperación de errores. La última versión de la especificación para depuración Gigabit para USB (MIPI GbD USB) adoptada por la placa MIPI es la versión 1.1 (marzo de 2018). [14] La última versión de la especificación para depuración Gigabit para sockets de protocolo de Internet (MIPI GbD IPS) adoptada por la placa MIPI es la versión 1.0 (julio de 2016). [15]
Las soluciones de depuración actuales, como JTAG y ARM CoreSight , están estructuradas de forma estática, lo que limita la escalabilidad en lo que respecta a la accesibilidad de los componentes/dispositivos de depuración. MIPI Debug for I3C especifica una solución de depuración escalable, de 2 pines y de un solo extremo, que tiene la ventaja de estar disponible durante toda la vida útil del producto. El bus I3C se puede utilizar solo como bus de depuración, o se puede compartir el bus entre la depuración y su función esencial como bus de adquisición de datos para sensores. La depuración a través de I3C funciona en principio de la siguiente manera: