La emulación en circuito ( ICE ) consiste en el uso de un dispositivo de hardware o emulador en circuito para depurar el software de un sistema embebido . Funciona mediante un procesador con la capacidad adicional de realizar operaciones de depuración, además de ejecutar la función principal del sistema. En particular, para sistemas más antiguos con procesadores limitados, esto solía implicar la sustitución temporal del procesador por un emulador de hardware: una versión más potente, aunque más cara. Históricamente, se trataba de un procesador de salida de señales, cuyas señales internas se exponían para la depuración. Estas señales proporcionaban información sobre el estado del procesador.
Más recientemente, el término también abarca los depuradores de hardware basados en JTAG , que proporcionan un acceso equivalente mediante hardware de depuración integrado en chips estándar de producción. El uso de chips estándar en lugar de versiones personalizadas con conexiones externas hace que la tecnología sea omnipresente y de bajo costo, y elimina la mayoría de las diferencias entre los entornos de desarrollo y ejecución. En este caso común, el término emulador en circuito es inapropiado , a veces incluso confuso, porque ya no interviene la emulación.
Los sistemas embebidos presentan problemas especiales para los programadores, ya que generalmente carecen de teclados , monitores , unidades de disco y otras interfaces de usuario presentes en las computadoras. Estas limitaciones hacen que las herramientas de depuración de software en circuito sean esenciales para muchas tareas de desarrollo comunes.
Función
Un emulador en circuito (ICE) proporciona una ventana al sistema embebido. El programador utiliza el emulador para cargar programas en el sistema embebido, ejecutarlos, recorrerlos paso a paso lentamente y visualizar y modificar los datos utilizados por el software del sistema.
Un emulador recibe su nombre porque emula (imita) la unidad central de procesamiento (CPU) del ordenador del sistema embebido. Tradicionalmente, tenía un conector que se insertaba en el zócalo donde normalmente se ubicaría el chip del circuito integrado de la CPU . La mayoría de los sistemas modernos utilizan directamente la CPU del sistema de destino, con acceso de depuración especial basado en JTAG. La emulación del procesador, o el acceso directo a él mediante JTAG, permite que el ICE realice todas las funciones del procesador, pero bajo el control de un desarrollador de software.
Los ICE (Enterprise Instruments) conectan un terminal o una computadora personal (PC) al sistema embebido. El terminal o la PC proporciona una interfaz de usuario interactiva para que el programador pueda investigar y controlar el sistema embebido. Por ejemplo, es habitual contar con un depurador a nivel de código fuente con una interfaz gráfica de usuario que se comunica mediante un adaptador JTAG (emulador) con un sistema embebido de destino que no dispone de interfaz gráfica de usuario.
Cabe destacar que, cuando su programa falla, la mayoría de los sistemas embebidos quedan inutilizables . Estos sistemas suelen carecer de funciones básicas para detectar fallos de software , como una unidad de gestión de memoria (MMU) para identificar errores de acceso a la memoria. Sin un sistema embebido integrado (ICE), el desarrollo de sistemas embebidos puede resultar extremadamente difícil, ya que normalmente no hay forma de determinar la causa del fallo. Con un ICE, el programador puede probar fragmentos de código, aislar el fallo en una sección específica, inspeccionar el código defectuoso y reescribirlo para solucionar el problema.
En la práctica, un ICE proporciona al programador puntos de interrupción de ejecución , visualización y monitorización de la memoria, y control de entrada/salida. Además, el ICE puede programarse para buscar cualquier rango de criterios coincidentes y detenerse en ellos, con el fin de identificar el origen de un fallo.
La mayoría de los microcontroladores modernos utilizan los recursos proporcionados en la versión fabricada del microcontrolador para las funciones de programación, emulación y depuración del dispositivo, en lugar de necesitar otra versión de emulación especial (es decir, una versión modificada) del microcontrolador objetivo. [ 1 ] Aunque es un método rentable, dado que la unidad ICE solo gestiona la emulación en lugar de emular realmente el microcontrolador objetivo, es necesario hacer concesiones para mantener los precios bajos en el momento de la fabricación, pero proporcionar suficientes funciones de emulación para las (relativamente pocas) aplicaciones de emulación.
Ventajas
Prácticamente todos los sistemas embebidos constan de un componente de hardware y otro de software, que son independientes pero estrechamente interdependientes. El ICE permite ejecutar y probar el software en el hardware en el que se va a ejecutar, a la vez que ofrece herramientas útiles para el programador que ayudan a aislar el código defectuoso, como la depuración a nivel de código fuente (que muestra el programa tal como fue escrito originalmente) y la ejecución paso a paso (que permite a los programadores ejecutar programas paso a paso para encontrar errores).
La mayoría de los ICE constan de una unidad adaptadora que se ubica entre el ordenador anfitrión del ICE y el sistema que se va a probar. Un conector de pines y un conjunto de cables conectan el adaptador a un zócalo donde se monta la unidad central de procesamiento (CPU) o el microcontrolador dentro del sistema embebido. Los ICE más recientes permiten a los programadores acceder al circuito de depuración integrado en la CPU mediante JTAG o la interfaz de modo de depuración en segundo plano (BDM) para depurar el software de un sistema embebido. Estos sistemas suelen utilizar una versión estándar del chip de la CPU y se pueden conectar fácilmente a un puerto de depuración en un sistema de producción. A veces se les denomina depuradores en circuito o ICD, para distinguir el hecho de que no replican la funcionalidad de la CPU, sino que controlan una CPU estándar ya existente. Dado que no es necesario reemplazar la CPU, pueden operar en unidades de producción donde la CPU está soldada y no se puede reemplazar. En los procesadores Pentium x86, los ICE utilizan un "modo de sonda" especial para facilitar la depuración. [ 2 ]
En el contexto de los sistemas embebidos, el ICE no emula hardware, sino que proporciona acceso directo de depuración a la CPU. El sistema bajo prueba está bajo control total, lo que permite al desarrollador cargar, depurar y probar el código directamente.
La mayoría de los sistemas anfitriones son ordenadores comerciales comunes, sin relación con la CPU utilizada para el desarrollo. Por ejemplo, un PC con Linux podría usarse para desarrollar software para un sistema que utiliza un chip Freescale 68HC11 , un procesador que no puede ejecutar Linux.
El programador suele editar y compilar también el código del sistema embebido en el sistema anfitrión. El sistema anfitrión dispone de compiladores especiales que generan código ejecutable para el sistema embebido, denominados compiladores cruzados o ensambladores cruzados .
Depuración en el chip
La depuración en chip es una alternativa a la emulación en circuito. Utiliza un enfoque diferente para lograr un objetivo similar.
La depuración en chip, a menudo denominada informalmente Grupo de Acción de Prueba Conjunta (JTAG), utiliza una interfaz de depuración adicional para el hardware en funcionamiento, en el sistema de producción. Ofrece las mismas funciones que la depuración en circuito, como la inspección del estado o las variables internas, y puede permitir establecer puntos de control, puntos de interrupción y puntos de observación. La diferencia radica en que esta funcionalidad se proporciona mediante silicio adicional dentro del procesador de producción, en lugar de sustituir el procesador por un emulador de depuración externo. Por este motivo, algunas de las funciones de la interfaz en chip se ven modificadas por las especificaciones del procesador. Se añade una interfaz JTAG adicional a la placa controladora, lo cual es necesario en todos los sistemas de producción, pero dado que solo requiere unos pocos pines de señal, el coste adicional es mínimo. Las interfaces JTAG se desarrollaron originalmente para las pruebas de fin de producción y siguen siendo útiles para este fin.
Intel
Para admitir la depuración del emulador en circuito (ICE) en Intel 286 , se disponía de cinco pines adicionales en el procesador: un pin de entrada para forzar externamente un punto de interrupción ICE, ( ICEBP#) y dos pares alternativos de pines de salida para seleccionar operaciones a través del bus ICE en lugar de la memoria de usuario. [ 3 ] En el 80286 existen dos instrucciones ( 0F 04, 0F 05) para volcar/restaurar el estado completo de la CPU en el desplazamiento de memoria 0x800, junto con un prefijo de anulación de un solo byte ( F1) para habilitar el modo ICE para acceder a la memoria de usuario.
Véase también
Referencias
- ↑ Keil, Reinhard (22 de julio de 2008). "Depuración con microcontroladores Cortex-M3" . www.embedded.com . Consultado el 25 de mayo de 2013 .
- ↑ "Descripción general del modo de sonda Pentium" .
- ↑ Patente estadounidense 4547849 , Louie, Glenn; Retter, Rafi y Shaanan, Neve et al., "Interfaz entre un microprocesador y un coprocesador", emitida el 15 de octubre de 1985, asignada a Intel Corporation. "Las señales de estado del ciclo del bus de usuario, S1# y S0#, admiten el bus de usuario, y las señales de estado del ciclo del bus ICE, ICES1# e ICES0#, admiten el bus ICE. … El bus ICE se utiliza únicamente para los ciclos de lectura de datos, lectura de código, parada, apagado y escritura en memoria. … El microprocesador se ve obligado a entrar en modo compatible al reiniciarse, … no se puede volver a cambiar a modo compatible excepto mediante un reinicio (o un punto de interrupción ICE), … Se debe prestar especial atención a ICE, ya que es el único caso en el que puede producirse un cambio del microprocesador maestro del modo de protección al modo de compatibilidad (excepto por el reinicio). … El software ICE comienza su ejecución tras un punto de interrupción ICE en modo de compatibilidad y luego cambia al modo de protección para la mayor parte de sus operaciones."
Enlaces externos
- Artículo de Jack Ganssle para la sección "Rincón del principiante"
- Cómo elegir un emulador en circuito Por Jonathan Hector
- Sistemas embebidos
- Depuración