stringtranslate.com

Emulación en circuito

La emulación en circuito ( ICE ) es el uso de un dispositivo de hardware o emulador en circuito que se utiliza para depurar el software de un sistema integrado . Opera mediante el uso de un procesador con la capacidad adicional de soportar operaciones de depuración, así como de realizar la función principal del sistema. Especialmente en sistemas más antiguos, con procesadores limitados, esto normalmente implicaba reemplazar el procesador temporalmente con un emulador de hardware: una versión más potente aunque más cara. Históricamente tenía la forma de un procesador de enlace externo que presenta muchas señales internas con el fin de depurar. Estas señales proporcionan información sobre el estado del procesador.

Más recientemente, el término también cubre los depuradores de hardware basados ​​en JTAG que brindan 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 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 integrados presentan problemas especiales para los programadores porque generalmente carecen de teclados , monitores , unidades de disco y otras interfaces de usuario que 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) proporciona una ventana al sistema integrado. El programador utiliza el emulador para cargar programas en el sistema integrado, ejecutarlos, recorrerlos lentamente y ver y cambiar los datos utilizados por el software del sistema.

Un emulador recibe su nombre porque emula (imita) la unidad central de procesamiento (CPU) de la computadora del sistema integrado. Tradicionalmente tenía un enchufe 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 la CPU del sistema de destino directamente, con acceso especial de depuración basado en JTAG. Emular el procesador, o acceder directamente a JTAG, permite al ICE hacer cualquier cosa que el procesador pueda hacer, pero bajo el control de un desarrollador de software.

Los ICE conectan una terminal de computadora o una computadora personal (PC) al sistema integrado. El 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 a 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 una interfaz gráfica de usuario.

En particular, cuando su programa falla, la mayoría de los sistemas integrados simplemente quedan bloqueados . Los sistemas integrados a menudo carecen de funciones básicas para detectar signos de fallas de software , como una unidad de administración de memoria (MMU) para detectar errores de acceso a la memoria. Sin un ICE, el desarrollo de sistemas integrados puede resultar extremadamente difícil, porque normalmente no hay forma de saber qué salió mal. Con un ICE, el programador generalmente puede probar fragmentos de código, luego aislar la falla en una sección particular de código y luego inspeccionar el código defectuoso 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 la memoria y control de entrada/salida. Más allá de esto, el ICE puede programarse para buscar cualquier rango de criterios coincidentes en los que hacer una pausa, en un intento de identificar el origen de una falla.

La mayoría de los microcontroladores modernos utilizan recursos proporcionados en la versión fabricada del microcontrolador para funciones de programación, emulación y depuración del dispositivo, en lugar de necesitar otra versión de emulación especial (es decir, conexión) 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 y, al mismo tiempo, proporcionar suficientes funciones de emulación para el (relativamente pocas) aplicaciones de emulación.

Ventajas

Prácticamente todos los sistemas integrados tienen un elemento de hardware y un elemento de software, que están separados pero estrechamente interdependientes. El ICE permite que el elemento de software se ejecute y pruebe en el hardware en el que se ejecutará, pero aún permite que las comodidades del programador ayuden a aislar el código defectuoso, como la depuración a nivel de fuente (que muestra un programa tal como fue escrito originalmente) y 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 la computadora host del ICE y el sistema que se va a probar. Un conjunto de cables y cabezal de clavija 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 les 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 sonda" especial para ayudar en la depuración. [2]

En el contexto de los sistemas integrados, el ICE no emula hardware. Más bien, proporciona acceso directo de depuración a la CPU real. 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 host son computadoras comerciales comunes y corrientes sin relación con la CPU utilizada para el desarrollo. Por ejemplo, se podría utilizar una PC con Linux para desarrollar software para un sistema que utilice 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 host. El sistema host 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 abordar un objetivo similar.

La depuración en chip, a menudo denominada en términos generales Grupo de Acción de Prueba Conjunta (JTAG), utiliza la provisión de una interfaz de depuración adicional para el 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 de 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 silicio adicional dentro del procesador de producción, en lugar de cambiar el procesador por un emulador de depuración externo. Por esta razón, algunas de las funciones del ICE cambian 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 solo requiere unos pocos pines de señal, el costo adicional es mínimo. Las interfaces JTAG se desarrollaron originalmente para las pruebas de fin de producción y siguen siendo útiles para ellas.

Intel

Para admitir 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 ICE ( ICEBP#) y dos pares alternativos de pines de salida para seleccionar operaciones a través del bus ICE. en lugar de memoria de 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.

Ver 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 estadounidense 4547849, Louie, Glenn; Retter, Rafi & Shaanan, Neve et al., "Interfaz entre un microprocesador y un coprocesador", publicado el 15 de octubre de 1985, asignado a Intel Corporation  "Las señales de estado del ciclo del bus del usuario, S1# y S0# soportan el bus del usuario y el ICE las señales de estado del ciclo del bus, ICES1# e ICES0# soportan el bus ICE... El bus ICE se utiliza sólo para los ciclos de lectura de datos, lectura de código, parada, apagado y escritura de memoria... el microprocesador se fuerza al modo compatible al reiniciarse,... no se puede volver al modo compatible excepto mediante 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 para reinicio) ... El software ICE comienza a ejecutarse 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".

enlaces externos