Emulación en circuito

Depuración de sistemas integrados

La emulación en circuito ( ICE ) es el uso de un dispositivo de hardware o emulador en circuito utilizado para depurar el software de un sistema integrado . Funciona mediante el uso de un procesador con la capacidad adicional de soportar operaciones de depuración, así como de llevar a cabo la función principal del sistema. Particularmente para sistemas más antiguos, con procesadores limitados, esto generalmente implicaba reemplazar el procesador temporalmente con un emulador de hardware: una versión más potente aunque más cara. Históricamente, se presentaba en forma de procesador bond-out que tiene muchas señales internas extraídas con el propósito de depurar. Estas señales brindan información sobre el estado del procesador.

Más recientemente, el término también cubre los depuradores de hardware basados ​​en JTAG que proporcionan un acceso equivalente utilizando hardware de depuración en chip con chips de producción estándar. El uso de chips estándar en lugar de versiones personalizadas de conexión externa hace que la tecnología sea ubicua y de bajo costo, y elimina la mayoría de las diferencias entre los entornos de desarrollo y de ejecución. En este caso común, el término emulador en circuito es un nombre inapropiado , a veces confuso, porque la emulación ya no está involucrada.

Los sistemas embebidos presentan problemas especiales para los programadores porque, por lo general, carecen de teclados , monitores , unidades de disco y otras interfaces de usuario que sí están presentes en las computadoras. Estas deficiencias 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) ofrece una ventana al sistema integrado. El programador utiliza el emulador para cargar programas en el sistema integrado, ejecutarlos, recorrerlos lentamente y ver 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 integrado. Tradicionalmente, tenía un conector que se insertaba en el zócalo donde normalmente se colocarí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 un 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 haga todo lo que el procesador puede hacer, pero bajo el control de un desarrollador de software.

Los ICE conectan una terminal de computadora o computadora personal (PC) al sistema integrado. La terminal o PC proporciona una interfaz de usuario interactiva para que el programador investigue y controle el sistema integrado. Por ejemplo, es habitual tener un depurador de nivel de código fuente con una interfaz gráfica de ventanas que se comunica a través de un adaptador JTAG (emulador) con un sistema de destino integrado que no tiene interfaz gráfica de usuario.

En particular, cuando su programa falla, la mayoría de los sistemas integrados simplemente se bloquean . Los sistemas integrados a menudo carecen de funciones básicas para detectar signos de falla del software , como una unidad de administración de memoria (MMU) para detectar errores de acceso a la memoria. Sin una ICE, el desarrollo de sistemas integrados puede ser extremadamente difícil, porque generalmente no hay forma de saber qué salió mal. Con una ICE, el programador generalmente puede probar fragmentos de código, luego aislar la falla en una sección particular del código y luego inspeccionar el código que falla y reescribirlo para resolver el problema.

En uso, un ICE proporciona al programador puntos de interrupción de ejecución , visualización y monitoreo de memoria y control de entrada/salida. Además de esto, el ICE puede programarse para buscar cualquier rango de criterios coincidentes en los que detenerse, en un intento de identificar el origen de una falla.

La mayoría de los microcontroladores modernos utilizan recursos provistos en la versión fabricada del microcontrolador para la programación, emulación y depuración de dispositivos, en lugar de necesitar otra versión de emulación especial (es decir, bond-out) del microcontrolador de destino. [1] Aunque es un método rentable, dado que la unidad ICE solo administra la emulación en lugar de emular realmente el microcontrolador de destino, se deben 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 integrados tienen un elemento de hardware y un elemento de software, que son independientes pero estrechamente interdependientes. El ICE permite ejecutar y probar el elemento de software en el hardware en el que se ejecutará, pero aún permite que los programadores utilicen ventajas que les ayuden a aislar el código defectuoso, como la depuración a nivel de código fuente (que muestra un programa tal como se escribió originalmente) y la ejecución paso a paso (que permite a los programadores ejecutar los programas paso a paso para encontrar errores).

La mayoría de los ICE constan de una unidad adaptadora que se ubica entre el ordenador central del ICE y el sistema que se va a probar. Un conjunto de conectores y cables conecta el adaptador a un zócalo donde se monta la unidad central de procesamiento (CPU) o el microcontrolador dentro del sistema integrado. Los ICE recientes permiten a los programadores acceder al circuito de depuración en chip que está integrado en la CPU a través de JTAG o la interfaz de modo de depuración en segundo plano (BDM) para depurar el software de un sistema integrado. Estos sistemas suelen utilizar una versión estándar del chip de la CPU y pueden simplemente conectarse a un puerto de depuración en un sistema de producción. A veces se los llama 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 funcionar en unidades de producción donde la CPU está soldada y no se puede reemplazar. En los Pentium x86, los ICE utilizan un "modo de prueba" especial para ayudar en la depuración. [2]

En el contexto de los sistemas integrados, el ICE no emula el hardware, sino que proporciona acceso directo a la CPU para la depuración. El sistema que se está probando está bajo control total, lo que permite al desarrollador cargar, depurar y probar el código directamente.

La mayoría de los sistemas host son computadoras comerciales comunes que no tienen relación con la CPU que se utiliza para el desarrollo. Por ejemplo, una PC con Linux se puede utilizar para desarrollar software para un sistema que utiliza un chip Freescale 68HC11 , un procesador que no puede ejecutar Linux.

El programador también suele editar y compilar el código del sistema integrado en el sistema anfitrión. El sistema anfitrión tendrá compiladores especiales que producen código ejecutable para el sistema integrado, denominados compiladores cruzados o ensambladores cruzados .

Depuración en chip

La depuración en chip es una alternativa a la emulación en circuito. Utiliza un enfoque diferente para alcanzar un objetivo similar.

La depuración en chip, a menudo denominada de forma imprecisa como Joint Test Action Group (JTAG), utiliza la provisión de una interfaz de depuración adicional al hardware en vivo, en el sistema de producción. Proporciona las mismas funciones que la depuración en circuito, como la inspección del estado interno o las variables, y puede tener la capacidad de establecer puntos de control, puntos de interrupción y puntos de vigilancia. La diferencia es que esto lo proporciona un silicio adicional dentro del procesador de producción, en lugar de cambiar el procesador por un emulador de depuración externo. Por este motivo, algunas de las funciones del ICE se modifican según las especificaciones del procesador. Se agrega una interfaz JTAG adicional a la placa del controlador, y esto es necesario en todos los sistemas de producción, pero como esto solo requiere unos pocos pines de señal, el costo adicional es mínimo. Las interfaces JTAG se desarrollaron originalmente para las pruebas de final de producción, y aún son útiles para ellas.

Intel

Para soportar la depuración del emulador en circuito (ICE) en Intel 286 , había cinco pines adicionales disponibles en el procesador: un pin de entrada para forzar externamente un punto de interrupción de ICE, ( ICEBP#) y dos pares alternativos de pines de salida para seleccionar operaciones a través del bus ICE en lugar de la memoria del usuario. [3] En el 80286 existen dos instrucciones ( 0F 04, 0F 05) para volcar/restaurar el estado completo de la CPU al desplazamiento de memoria 0x800, junto con un prefijo de anulación de un solo byte ( F1) para permitir que el modo ICE acceda a la memoria del usuario.

Véase también

Referencias

  1. ^ Keil, Reinhard (22 de julio de 2008). "Depuración con microcontroladores Cortex-M3". www.embedded.com . Consultado el 25 de mayo de 2013 .
  2. ^ "Descripción general del modo de sonda Pentium".
  3. ^ Patente de EE. UU. 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 del usuario y las señales de estado del ciclo del bus ICE, ICES1# e ICES0# admiten el bus ICE. … El bus ICE se utiliza solo para ciclos de lectura de datos, lectura de código, detención, apagado y escritura de memoria. … el microprocesador se ve obligado a pasar al modo compatible al reiniciarse, … no se puede volver a cambiar al modo compatible excepto por reinicio (o punto de interrupción de ICE), … se debe prestar especial atención a ICE ya que es el único caso en el que puede ocurrir un cambio del microprocesador maestro del modo de protección al modo de compatibilidad (excepto por reinicio). … El software ICE comienza la ejecución después de un punto de interrupción de ICE en modo de compatibilidad y luego cambia al modo de protección para la mayor parte de sus operaciones".
  • Artículo del rincón del principiante de Jack Ganssle
  • Cómo elegir un emulador en circuito Por Jonathan Hector
Obtenido de "https://es.wikipedia.org/w/index.php?title=Emulación_en_circuito&oldid=1248082978#Depuración_en_chip"