Menú English Ukrainian Ruso Inicio

Biblioteca técnica gratuita para aficionados y profesionales. biblioteca técnica gratuita


ENCICLOPEDIA DE RADIOELECTRÓNICA E INGENIERÍA ELÉCTRICA
biblioteca gratis / Esquemas de dispositivos radioelectrónicos y eléctricos.

Microcontroladores para principiantes y más allá. Enciclopedia de radioelectrónica e ingeniería eléctrica.

biblioteca técnica gratuita

Enciclopedia de radioelectrónica e ingeniería eléctrica. / Microcontroladores

Comentarios sobre el artículo Comentarios sobre el artículo

PRIMERA CITA

Primero, unas palabras para aquellos a quienes el tema del ciclo, a juzgar por su título, les parece a priori poco interesante o "ajeno". Tal vez aún no haya utilizado microcontroladores en sus diseños (en adelante, MK para abreviar) y piense que en un futuro previsible podrá prescindir de ellos. También es posible que asuma que construir un sistema de microcontrolador para resolver su problema sería demasiado engorroso y no sería económicamente viable. No se apresure: especialmente para usted, queremos dar algunos datos y algunas estadísticas.

Por ejemplo, tomemos el pariente más cercano de MK, una computadora personal, y comparemos la intensidad de su uso. Según la firma analista Loewenbaum & Co. Cª (EE. UU.), la cantidad de computadoras personales lanzadas en el mundo en 1997 alcanzó aproximadamente 20 millones de unidades. De acuerdo, esto es mucho. Ahora imagine que este número gigantesco es solo el 0,2% de la producción global de MK. Según la empresa de análisis IC Insights Inc. (EE.UU.) el mercado mundial en 1998 absorbió más de 13,5 mil millones de ellos!

La conclusión se sugiere a sí misma. Si incluso hoy en día es difícil encontrar un campo de la actividad humana en el que la computadora no se utilice de manera efectiva, entonces, ¿qué podemos decir sobre MK? ¿Por qué se han vuelto tan populares y literalmente indispensables? La respuesta está en la estructura misma del microcontrolador. Como primera aproximación a la definición de este concepto, podemos suponer que la MC es una computadora ubicada en un solo microcircuito. De ahí sus principales atractivos: pequeñas dimensiones, consumo, precio; alto rendimiento, confiabilidad y la capacidad de adaptarse para realizar una amplia variedad de tareas.

MK se diferencia de un microprocesador en que, además de la unidad central de procesamiento (CPU), contiene memoria y numerosos dispositivos de entrada/salida: convertidores de analógico a digital, canales de información en serie y paralelos, temporizadores en tiempo real, ancho de pulso moduladores (PWM), generadores de pulsos programables, etc. En su estructura y principio de funcionamiento, el MK, en esencia, no difiere de una computadora personal. Por lo tanto, las palabras microcontrolador y microcomputadora son sinónimos. Sin embargo, el primer término (de la palabra inglesa control - administrar) es más común porque refleja su propósito principal: uso en sistemas de control automático integrados en una variedad de dispositivos: tarjetas de crédito, cámaras, teléfonos celulares, estéreos, televisores, videograbadoras. y videocámaras, lavadoras, coches, hornos microondas, sistemas de alarma antirrobo, sistemas de encendido de motores de gasolina, accionamientos eléctricos de locomotoras, reactores nucleares y mucho, mucho más. Los sistemas de control embebidos se han convertido en un fenómeno tan masivo que en realidad se ha formado una nueva rama de la economía, llamada Embedded Systems (sistemas embebidos - inglés).

Actualmente, en el mundo se producen miles de variedades de MK. Se suministran en paquetes de 8 a 356 pines, operan a temperaturas de -55 a +125oC a frecuencias de 32 kHz a 200 MHz, son capaces de operar a una tensión de alimentación de 1,2 V, mientras consumen una corriente que no exceda algunos microamperios . . El precio de los productos también está disminuyendo constantemente. Algunas MCU de ocho bits ya cuestan hoy no más de 50 centavos, lo que es comparable al costo de un chip de "lógica dura".

Todo esto ha llevado al hecho de que hoy en día es cada vez más difícil encontrar un área de actividad humana donde MC no encuentre aplicación, y el proceso de su distribución tiene un carácter de avalancha.

Esperamos que los hechos anteriores ya lo hayan preparado para una actitud respetuosa hacia el personaje principal de nuestra historia. De hecho, MC se ha convertido en un evento global, invadiendo casi todos los tipos de actividad humana.

¿Qué proporcionó un crecimiento tan rápido en la popularidad de estos productos, que aparecieron hace poco más de 25 años? ¿Cuáles son estos dispositivos y cuáles son sus capacidades y perspectivas?

Si aún no ha utilizado MC o sistemas basados ​​en ellos en sus actividades, entonces. tal vez es hora de pensar en ello? Y si decide aplicar MK, ¿cuál debería ser la secuencia de sus acciones? ¿Qué dificultades pueden esperarte, qué puede ayudarte en el camino?

Intentaremos responder a estas preguntas en la serie de artículos propuesta.

LA LEY DE MOORE Y LA PRIMERA MK

Allá por 1965, Gordon Moore, uno de los futuros fundadores de la poderosa Corporación Intel, llamó la atención sobre un hecho interesante. Después de trazar el crecimiento del rendimiento de los chips de memoria, descubrió un patrón interesante: aparecían nuevos modelos de chips cada 18 a 24 meses, y su capacidad se duplicaba aproximadamente cada vez. Si esta tendencia continúa, sugirió G. Moore, entonces el poder de los dispositivos informáticos aumentará exponencialmente en un período de tiempo relativamente corto.

La predicción de G. Moore fue posteriormente confirmada brillantemente, y el patrón que descubrió se observa hoy, y con asombrosa precisión, siendo la base de numerosos pronósticos de crecimiento de la productividad. En los 28 años transcurridos desde la aparición del microprocesador 4004 (1971), el número de transistores en un chip se ha multiplicado por más de 12: de 000 a 2 en el chip Sorrettué.

Bueno, en 1976, el desarrollo exponencial de la tecnología de semiconductores condujo a la creación por parte de Intel del primer MK - 8048. Además de la CPU, incluía memoria de programa, memoria de datos, un temporizador de ocho bits y 27 líneas de E / S. . Hoy, el 8048 ya es historia, pero el próximo producto, lanzado por Intel en 1980, todavía está vivo y bien. Este es MK 8051.

ARQUITECTURA MK 8051

Este MK puede considerarse un modelo clásico, a imagen y semejanza del cual se crearon posteriormente muchos otros productos. Su diagrama de bloques se muestra en la fig. 1. CPU: el nodo principal del MK. Está asociado a un concepto tan importante como un sistema de mando.

Microcontroladores para principiantes y más allá

El conjunto de instrucciones es un conjunto único de códigos binarios específicos de una CPU determinada que define una lista de todas sus operaciones posibles. Cada uno de estos códigos define una operación y se denomina código de operación o comando. Cuantos más códigos se utilicen en el conjunto de instrucciones, más operaciones podrá realizar la CPU. MK 8051 es de ocho bits, por lo que sus códigos de operación tienen un tamaño de 8 bits. En teoría, puede haber un total de 256 códigos de operación de ocho bits. 8051 usa 255.

Dependiendo del número de códigos de operación utilizados, los sistemas de instrucciones se dividen en dos grupos: CISC y RISC. El término CISC significa un sistema complejo de comandos y es una abreviatura de la definición en inglés de Complex Instruction Set Computer. De manera similar, el término RISC significa un conjunto de instrucciones reducido y proviene del equipo de conjunto de instrucciones reducido en inglés. El sistema de comando MK 8051 se puede atribuir al tipo C15C.

Sin embargo, a pesar del uso generalizado de estos conceptos, debe reconocerse que los nombres en sí mismos no reflejan la principal diferencia entre los sistemas de comando CISC y RISC. La idea principal de la arquitectura RISC es una selección cuidadosa de tales combinaciones de códigos de operación que podrían ejecutarse en un ciclo del generador de reloj. La principal ventaja de este enfoque es una gran simplificación de la implementación de hardware de la CPU y la capacidad de aumentar significativamente su rendimiento.

Inicialmente, era posible implementar tal enfoque solo reduciendo significativamente el conjunto de instrucciones, de ahí nació el nombre RISC. Por ejemplo, el conjunto de instrucciones del MK de la familia Microchir PIC incluye solo 35 instrucciones y se puede clasificar como RISC. Obviamente, en el caso general, varias instrucciones de la arquitectura RISC deben corresponder a una instrucción de la arquitectura CISC. Sin embargo, las ganancias de rendimiento de la arquitectura RISC generalmente superan las pérdidas del conjunto de instrucciones menos eficiente, lo que da como resultado una mayor eficiencia del sistema RISC en su conjunto en comparación con el CISC. Entonces. el comando más rápido MK 8051 se ejecuta en 12 ciclos. Incluso si es necesario ejecutar tres instrucciones del controlador RISC para cada instrucción, al final, la arquitectura RISC proporcionará un rendimiento cuatro veces mayor.

En el camino, la arquitectura RISC le permite resolver una serie de tareas. De hecho, con la simplificación de la CPU, la cantidad de transistores necesarios para su implementación disminuye, por lo tanto, el área del cristal disminuye. Esto da como resultado una reducción en el costo y el consumo de energía.

En este punto, uno podría exclamar: ¡el futuro pertenece a la arquitectura RISC! Sin embargo, la línea entre estos dos conceptos se está desdibujando rápidamente. Por ejemplo. Los MCU de la familia AVR de Atmel tienen un conjunto de instrucciones de 120 instrucciones, que corresponde al tipo CISC. Sin embargo, la mayoría de ellos se ejecutan en un ciclo, lo cual es un sello distintivo de la arquitectura RISC. Hoy en día se acepta generalmente que la característica principal de la arquitectura RISC es la ejecución de instrucciones en un ciclo del generador de reloj. El número de comandos en sí ya no importa.

El generador de reloj genera pulsos para sincronizar el funcionamiento de todos los nodos del dispositivo. La frecuencia de su repetición se puede establecer mediante un resonador de cuarzo o un circuito RC conectado a las salidas del MK. En algunos MK, se proporciona un modo de operación de generador de reloj sin el uso de elementos externos. En este caso, la frecuencia de los pulsos del reloj depende de los parámetros del cristal, que se determinan durante su producción.

La ROM es un dispositivo de memoria de solo lectura diseñado para almacenar programas, por lo que esta memoria a menudo se denomina código o memoria de programa. Hasta hace poco, había dos tipos principales de ROM: enmascaradas y programables.

La información se ingresa en las ROM de máscara durante el proceso de fabricación del MC utilizando plantillas tecnológicas: máscaras. No se puede cambiar después del final del ciclo de producción.

Dichas ROM se usan solo en los casos en que la calidad del programa está fuera de toda duda y existe una gran necesidad de MK con este programa en particular. La ventaja de las ROM de máscara es el costo más bajo en la producción en masa (de varios miles de piezas).

La información de ROM programable se escribe usando un dispositivo llamado programador. MK con tales ROM son de dos tipos: programables una y repetidamente (reprogramables). Los primeros, como su propio nombre lo dice, permiten solo una programación única, después de lo cual ya no es posible borrar la información (MK con memoria OTP - del inglés. One Time Programmable). Se utilizan en la producción a pequeña escala (hasta 1000 piezas). cuando el uso de mascarilla MK no se justifique económicamente.

Los microcircuitos programables repetidamente se dividen en MK equipados con ROM con borrado por radiación ultravioleta (disponible en paquetes con una "ventana") y MK con memoria reprogramable eléctricamente. La desventaja de MC con ROM con borrado por irradiación ultravioleta es un costo muy alto y una cantidad relativamente pequeña de ciclos de escritura/borrado (depende de la dosis total de irradiación de cristal y generalmente no supera los 15 ... 20)

Actualmente, una nueva tecnología para la implementación de ROM se está volviendo cada vez más popular: la memoria flash. Su principal mérito es que se basa en el principio de reprogramabilidad eléctrica. es decir, permite el borrado y registro múltiple de información mediante programadores. El número mínimo garantizado de ciclos de escritura/borrado suele superar varios miles. Esto aumenta significativamente el ciclo de vida y aumenta la flexibilidad de los sistemas MC. ya que permite realizar cambios en el programa MC tanto en la etapa de desarrollo del sistema como durante su funcionamiento en un dispositivo real.

La RAM es una memoria de acceso aleatorio que se utiliza para almacenar datos, por lo que esta memoria también se denomina memoria de datos. El número de ciclos de lectura y escritura en la RAM no está limitado, pero cuando se corta el voltaje de suministro, se pierde toda la información.

La arquitectura del MK 8051 implica el uso separado de la memoria de programa y de datos y se llama Harvard. Por lo general, esta arquitectura se usa para mejorar el rendimiento del sistema al separar las rutas de acceso a la memoria de datos y programas, pero en el 8051 se usó para lograr una memoria de datos y programas que no requería el mismo tamaño. La antípoda de Harvard, la arquitectura von Neumann, involucra el almacenamiento de programas y datos en una memoria compartida y es más típica para microprocesadores diseñados para uso en computadoras. Un ejemplo es la familia de microprocesadores x86.

Los temporizadores TO, T1 son temporizadores/contadores programables de dieciséis bits que se pueden programar para realizar una variedad de funciones. Se pueden usar para la formación precisa de intervalos de tiempo, contando pulsos en las salidas del MK, formando una secuencia de pulsos, cronometrando el transceptor de un canal de comunicación en serie. Los temporizadores/contadores son capaces de generar solicitudes de interrupción, cambiar la CPU para atenderlos en eventos y liberarla de la necesidad de sondear periódicamente el estado de los temporizadores. Dado que la aplicación principal de MK se encuentra en los sistemas de tiempo real, los temporizadores/contadores son su elemento indispensable. En algunas modificaciones, el número de temporizadores llega a 32.

El puerto serie es un canal para el intercambio de información entre el MK y el mundo exterior. Dichos canales de comunicación ocupan una cantidad mínima de pines de cristal, lo que brinda comunicación a distancias significativas con costos mínimos de hardware. El 8051 implementa un transceptor serie asíncrono universal (UART) que admite el protocolo estándar RS-232C, lo que permite organizar la comunicación entre este MK y una computadora personal. Además de RS-232C, los protocolos más populares en el mundo de los sistemas integrados son RS-485. I2C (bus bidireccional de dos hilos). SPI (interfaz periférica serial de XNUMX hilos). Bitbus (bus de control en serie), CAN (interfaz de red entre controladores), USB (bus en serie universal) y algunos otros. Para casi cualquier tipo de canal serie, hoy en día puedes encontrar un MK que tenga un puerto serie correspondiente en su composición.

Los puertos de E/S paralelos también son una parte esencial de cualquier MCU. Por lo general, se utilizan para comunicarse con el entorno inmediato: sensores y actuadores.

Una característica importante de los puertos paralelos MK es la capacidad de programarse para realizar varias funciones. Por ejemplo, en el 8051, los pines de puerto P0 y P2 se pueden usar como registros de E/S estáticos normales o como un bus de dirección y datos para conectar dispositivos externos como memoria de programa adicional, memoria de datos, dispositivos de E/S. Esto le da a MK flexibilidad arquitectónica. El puerto RXNUMX se puede usar como un registro de E/S estático o realizar funciones especiales para la operación de un canal serial, temporizadores, controlador de interrupciones, etc. La reprogramabilidad le permite usar todas las salidas de la MC en el dispositivo diseñado. con la máxima eficacia.

El sistema de interrupción es una de las partes más importantes de MK. Una característica de los sistemas en tiempo real es que para ellos un parámetro extremadamente importante es el tiempo de respuesta a eventos externos. Vamos a explicar con un ejemplo sencillo. Cuando realiza un cálculo matemático en una computadora, generalmente ejecuta un programa diseñado para realizar estos cálculos y, después de cargarlo en la memoria de la computadora, ingresa el enunciado del problema y espera el resultado. El tiempo de espera en este caso no tiene una importancia fundamental (dentro de lo razonable, por supuesto) - el funcionamiento lento de la computadora puede ser molesto, pero esto no afectará el resultado. El sistema en tiempo real asume una velocidad de respuesta del sistema de control a eventos externos muy específica, calculada en la etapa de desarrollo. Los retrasos más allá de los calculados son simplemente inaceptables aquí, pueden tener consecuencias catastróficas.

Los problemas de respuesta rápida a eventos se resuelven organizando un sistema de interrupciones. Implica que para cada evento de este tipo se desarrolla una "pieza" de código separada, que forma la reacción del MK ante él. Esta "pieza" de código se llama rutina de solicitud de interrupción (el término rutina de interrupción se usa a menudo por brevedad) y se coloca en la memoria del programa en una dirección conocida. En el momento en que ocurre un evento dado, se envía una señal sobre esto a la entrada del controlador de interrupción. Este último es un dispositivo que establece una correspondencia uno a uno entre la señal de entrada sobre un evento que ha ocurrido y la dirección de memoria del programa en la que se encuentra el punto de entrada a la rutina de procesamiento de solicitud de interrupción de este evento. El controlador interrumpe la ejecución de la CPU del programa actual e inicia su transición a la ejecución de la rutina de servicio de interrupción. El tiempo transcurrido desde el momento en que ocurre el evento hasta el comienzo de la ejecución de la primera instrucción de la rutina de interrupción se denomina tiempo de respuesta del MC al evento. Una vez que se completa el procesamiento, la CPU vuelve automáticamente a la ejecución del programa interrumpido.

Otra función del controlador de interrupciones es priorizar eventos. El concepto de prioridad significa que una rutina de interrupción en ejecución solo puede ser interrumpida por otro evento si tiene una prioridad más alta que la actual. De lo contrario, la CPU pasará a procesar un nuevo evento después de terminar de procesar el anterior. El controlador de interrupciones, que forma parte del MK 8051, tiene cinco entradas de eventos: dos de dispositivos externos, dos de temporizadores y una del canal serial.

Por lo general, cuando hablan de cualquier MK, siempre mencionan la familia a la que pertenece. Una familia incluye productos que tienen el mismo núcleo, que se entiende como un conjunto de conceptos tales como un sistema de instrucciones, un diagrama de secuencia de operación de la CPU, organización de memoria de programa y memoria de datos, un sistema de interrupción y un conjunto básico de dispositivos periféricos. . De hecho, en la Fig. 1 muestra el núcleo, que se convirtió en la base para la creación de cientos de otras modificaciones de la familia 8051.

Las diferencias entre sus diversos representantes se encuentran principalmente en la composición de los dispositivos periféricos y la cantidad de memoria de programa o datos. Dado que la gama de tareas resueltas por MK. extremadamente amplia, sus fabricantes están tratando de lanzar la mayor cantidad de modificaciones para satisfacer las más diversas necesidades de los consumidores. En muchas familias, el número de modificaciones se acerca al centenar o incluso supera este valor.

La característica más importante de la familia es la compatibilidad del software a nivel del código binario de todos los MK incluidos en ella. Esto permite a los desarrolladores de sistemas reemplazar una familia de microcontroladores con otras sin perder sus desarrollos de software. Naturalmente, cuanto mayor sea el número de variedades incluidas en la familia, más probable es elegir la mejor opción, más atractiva es esta familia para el desarrollador. La cuestión de la elección correcta de una familia MC para un nuevo desarrollo es estratégica, ya que el problema de la transferencia de software entre productos de diferentes familias es extremadamente complejo, e incluso el uso de lenguajes de alto nivel no siempre permite resolverlo. sin grandes pérdidas. Volveremos sobre el tema de los criterios de selección en los siguientes artículos del ciclo.

El desarrollo del programa es una de las etapas más importantes en la creación de un dispositivo basado en MK. Sin él, está "muerto", no responde a influencias externas y no emite señales de control.

Cuando se enciende la alimentación, la MCU inmediatamente comienza a ejecutar el programa ubicado en la memoria del programa (generalmente ROM) conectada a ella. Su ejecución comienza desde alguna dirección fija, la mayoría de las veces cero. Una dirección es simplemente un número de celda de la ROM.El proceso es el siguiente: la MCU lee un número almacenado en la memoria del programa y, dependiendo de su valor, llamado código máquina, realiza ciertas acciones sobre el contenido de los registros de la ALU. memoria, puertos, etc. Por ejemplo, leyendo el número 32H de la memoria del programa. MK "entiende" que necesita leer el valor del puerto de entrada número 2 y colocarlo en el registro del acumulador. A menudo, un byte no es suficiente para describir la acción y luego el MK lee bytes adicionales de la memoria.

Después de realizar la acción, el MK lee el valor de la siguiente celda de memoria en orden, etc. El conjunto de bytes que describen una acción realizada por el MK se denomina comando de máquina (instrucción), y el conjunto de tales comandos que el MK “ entiende”. - su sistema de mando o conjunto de instrucciones (Instruction Set). Los MK de diferentes familias tienen diferentes sistemas de comando, es decir, sus códigos de máquina tienen diferentes significados, aunque realizan acciones similares.

Entonces, el programa para MK es una secuencia de números, cuyos valores le indican qué acciones realizar. El resultado de desarrollar un programa es un archivo de computadora que contiene estos códigos de máquina. Con la ayuda de un programador de ROM, se ingresa ("cose") en la memoria del programa MK.

¿Cómo es la composición de esta secuencia de códigos de máquina: un programa para MK? ¿El desarrollador realmente necesita recordar los valores de los códigos de máquina y configurar manualmente su secuencia? Los primeros programas para MK se crearon de esta forma. y se llamó programación en códigos de máquina. Está claro que esta forma de desarrollar programas consume mucho tiempo y es ineficiente.

El primer paso para facilitar el proceso de creación de programas fue un programa de computadora, el llamado traductor del lenguaje ensamblador. La idea era expresar las acciones realizadas por el MK en un lenguaje más legible por humanos y luego convertir estas expresiones en códigos de máquina. En la instrucción de máquina del ejemplo anterior que lee el valor del puerto 2 y lo coloca en el acumulador, la acción realizada se puede indicar aproximadamente como MOV A.P2.

Aquí la palabra MOV (del inglés move), llamada instrucción mnemotécnica, denota la transferencia de un valor, y A y P2, llamados operandos, indican de dónde obtener el valor y dónde colocarlo. Esta notación se llama lenguaje ensamblador. programa escrito en él. procesado por un traductor que convierte construcciones de lenguaje ensamblador en códigos de máquina.

La programación en lenguaje ensamblador está muy extendida hasta el día de hoy. Los traductores de lenguaje ensamblador para todas las familias de microcontroladores populares son gratuitos.

A pesar de las obvias ventajas de programar en ensamblador sobre la programación en código de máquina, en muchos casos el ensamblador no es lo suficientemente eficiente para implementar las tareas del desarrollador. El hecho es que el MK solo puede realizar las operaciones más simples, como operaciones aritméticas con números enteros, transferencias, comparaciones, etc. Para tareas más complejas, por ejemplo, operaciones con números de punto flotante, los desarrolladores tuvieron que escribir rutinas especiales que son inconvenientes para uso y engorroso. El siguiente paso en el desarrollo de programas para MK fue la creación de programas informáticos especiales: traductores de lenguajes de programación de alto nivel o compiladores. El lenguaje de programación más utilizado es C.

Con la llegada de los traductores, el desarrollo de programas para MK se ha simplificado drásticamente. Si, por ejemplo, necesita agregar dos números en el programa, ahora es suficiente escribir a = b + c. y el traductor convierte esta expresión en la secuencia necesaria de instrucciones de máquina dependiendo de los tipos de variables a, b y c.

El uso de un lenguaje de alto nivel permite al desarrollador abstraerse del sistema de comando de un microcontrolador en particular y operar con categorías que son más simples y comprensibles para una persona. Solo se requiere que el desarrollador conozca la arquitectura general del microcontrolador. principios de funcionamiento de los dispositivos periféricos integrados necesarios para resolver la tarea y habilidades de programación en lenguaje C. El contenido funcional del programa se implementa utilizando las herramientas del lenguaje C. que contiene una gran cantidad de varias subrutinas (funciones): aritmética, para trabajar con cadenas de caracteres y muchas otras.

Considere el proceso de creación de un programa para MK en el lenguaje C. El proceso de desarrollo requerirá una computadora personal.

Después de comprender la tarea, el desarrollador escribe el código fuente de su programa en lenguaje C utilizando cualquier editor de texto. Luego ejecuta el programa traductor de C. que convierte el texto fuente en un archivo de objeto intermedio. El traductor está controlado por un conjunto de teclas (su descripción se puede encontrar en su documentación) que se especifican en su línea de comando. Si el desarrollador cometió errores sintácticos al escribir el programa, el traductor muestra una lista de ellos en la pantalla con una indicación para cada número de línea en el archivo de texto fuente. El desarrollador debe corregir todos los errores. Después de una traducción exitosa, los archivos objeto deben ser procesados ​​por el enlazador (linker), que genera el archivo de programa en códigos de máquina.

Hay un problema cuando se usa un lenguaje de alto nivel. El compilador es responsable de convertir las construcciones del lenguaje en códigos de máquina, y esta conversión se puede realizar con diversos grados de eficiencia. Los criterios de eficiencia son el tamaño del código de máquina (cuanto más pequeño, por supuesto, mejor) y la velocidad del código de máquina. La tarea de generar código compacto y rápido es muy difícil y la calidad general del compilador depende de su solución. Los compiladores de C modernos utilizan la optimización de varios niveles, las características de la arquitectura de un MK en particular le permiten crear programas mixtos en los que algunas de las subrutinas están escritas en ensamblador.

El proceso descrito parece bastante engorroso: el desarrollador debe iniciar manualmente varios programas (editor de texto, compilador de C, enlazador para recordar las teclas de control, buscar errores en el programa por números de línea en el archivo. El último paso hasta la fecha para facilitar el trabajo de El desarrollador de programas para MK ha sido la aparición de entornos de desarrollo integrados (Integrated Development Environment. IDE). El entorno de desarrollo integrado es un programa informático que vincula todas las etapas del desarrollo del programa. Combina un editor de texto para escribir código fuente, traductores de ensamblador y C, un enlazador, un depurador, información de referencia sobre MK y otras herramientas necesarias para el desarrollador. La configuración de traductores, enlazador y otros componentes no se realiza especificando interruptores en la línea de comando, sino en forma de cuadros de diálogo donde solo necesitas marcar las casillas en los lugares correctos. .

La aparición de entornos de desarrollo de software integrado aumentó aún más la eficiencia de la creación de programas para MC, permitió al desarrollador centrarse en la esencia del problema que se está resolviendo y abstraerse de los detalles específicos de su implementación.

Varias empresas producen paquetes de desarrollo de software integrado. Los paquetes de diferentes fabricantes tienen una función similar, pero difieren en las capacidades de servicio, la facilidad de uso y la calidad del código de máquina generado.

Las principales características de los kits de desarrollo más populares se muestran en la tabla.

Microcontroladores para principiantes y más allá
(haga clic para agrandar)

DEPURACIÓN SIMBÓLICA DE PROGRAMAS PARA MK

Salvo raras excepciones, los programas para MK, debido a los errores que contienen, no funcionan a la primera y requieren depuración. Los desarrolladores se ocupan de los problemas de depuración de diferentes maneras. Algunos de ellos creen que es suficiente analizar cuidadosamente el texto fuente, ver con un osciloscopio lo que sucede en las salidas MK y todos los errores pueden corregirse. Este método es aplicable si el desarrollador tiene una amplia experiencia, conoce perfectamente el MK utilizado y dispone de un traductor que siempre genera el código correcto (normalmente un ensamblador), y tiempo suficiente.

Otros usan monitores de depuración caseros en su práctica: conjuntos de subrutinas especiales que se cargan en el MK junto con el programa principal. Este último llama a las subrutinas del monitor en los puntos de control y proporciona información sobre el estado de los recursos de MK. Casi cualquier programa se puede depurar de esta manera, pero tiene inconvenientes que pueden ser significativos. En primer lugar, el monitor de depuración debe contar con una parte de los recursos de MC para el trabajo: al menos una parte del espacio de direcciones del código y un cierto número de celdas de pila, y como máximo, también una parte de la RAM y periférico dispositivos del MC. utilizado por el monitor para mostrar información. Puede ser difícil asignar recursos al monitor de depuración si el propio programa principal está cargando activamente el MK. Por ejemplo, el PIC 16С5х (Microchip) MK tiene solo dos celdas de pila y es difícil usar llamadas de subrutina de monitoreo de depuración. En segundo lugar, las llamadas de supervisión toman tiempo del programa principal y, por lo tanto, no se pueden llamar desde partes del programa críticas en cuanto al tiempo. En tercer lugar, la creación de un monitor de depuración lleva tiempo.

La forma más efectiva de depurar programas para MK es usar herramientas de depuración profesionales especializadas, que incluyen depuradores de simuladores y emuladores en circuito.

Antes de hablar sobre las posibilidades que brindan dichos depuradores, es necesario mencionar la elección del compilador, con la ayuda del cual los textos fuente de los programas se convierten en código de máquina. En la gran mayoría de los casos, es preferible programar en un lenguaje de alto nivel. El uso de ensamblador es necesario si se imponen requisitos muy estrictos sobre el tamaño y la velocidad del código generado. Actualmente, estos casos son cada vez menos, ya que casi siempre puede tomar un MK "más rápido" con más memoria. Además, los paquetes modernos de herramientas cruzadas facilitan la escritura de programas mixtos, donde algunos de los módulos están escritos en C. y las partes más críticas para el rendimiento están en ensamblador. Los compiladores de C también permiten insertar instrucciones de ensamblaje en el código fuente.

¿Cuáles son las ventajas de programar en C en comparación con la programación en ensamblador? Brevemente, son los siguientes:

  • no hay necesidad de preocuparse por operaciones con números de gran capacidad. El compilador generará automáticamente el código correcto para la operación a+b. si ayb son números de 8, 16, 32 bits, números de punto flotante y números pares de diferentes tipos;
  • El compilador viene con una extensa biblioteca de funciones (subrutinas) que implementan varias operaciones matemáticas (funciones trigonométricas, exponenciación, etc.). trabajar con cadenas de caracteres, entrada/salida formateada, etc.;
  • el compilador diagnostica muchos errores del programador: por ejemplo, no le permitirá pasar la cantidad incorrecta de parámetros o parámetros de tipos incorrectos a una función, olvidará poner una declaración de retorno, etc.;
  • el código fuente escrito en C es mucho más fácil de leer, más compacto, más fácil de modificar;
  • programas escritos en C. se transfieren más fácilmente a los MK de otras familias.

Para depurar programas escritos en un lenguaje de alto nivel de manera efectiva, el desarrollador debe tener a su disposición herramientas de depuración que brinden oportunidades adecuadas para mostrar los datos utilizados en el programa, así como para rastrear la ejecución del programa desde su código fuente. . Son necesarias dos condiciones para que esto sea posible:

  • el compilador debe proporcionar información suficiente sobre la estructura del programa y los datos que utiliza. Esta información se llama simbólica (depuración);
  • el depurador debe ser capaz de interpretar esta información. Todos los compiladores y ensambladores modernos generan información simbólica de una forma u otra, pero aún no se ha desarrollado un formato universal y cada compilador la genera en su propio formato. Esto crea dificultades adicionales para los depuradores que deben poder "comprender" varios formatos de caracteres.

Ahora consideremos cómo el depurador debe interpretar la información simbólica y qué opciones se le deben proporcionar al usuario en relación con esto.

SEGUIMIENTO DE LA EJECUCIÓN DEL PROGRAMA SEGÚN SU TEXTO FUENTE

En general, el compilador convierte una línea de texto fuente en varias instrucciones de máquina. Incluso un programa ensamblador casi siempre contiene macros que se expanden en varias instrucciones de procesador cuando se traducen. Es un inconveniente depurar un programa de este tipo utilizando el desensamblador de su código, por lo que los compiladores insertan una tabla de números de línea en la información de depuración. Contiene información sobre la correspondencia de los números de línea del texto fuente y los nombres de archivo del texto fuente con las direcciones absolutas del código del programa. El depurador muestra el código fuente del programa en la pantalla. siguiendo esta tabla, puede ejecutar el programa "línea por línea", ejecutando en un solo paso todas las instrucciones máquina generadas por el compilador para la línea actual.

La tabla de números de línea también le permite realizar acciones contextuales con el texto del programa, por ejemplo, ejecutarlo "al cursor", es decir, a un lugar especificado por el usuario en el texto fuente, establecer puntos de interrupción en líneas específicas, etc. Acciones contextuales son convenientes porque el desarrollador no necesita conocer las direcciones correspondientes a las líneas del texto fuente: el depurador mismo las determinará a partir de la tabla. El depurador también debe "conocer" las direcciones de las subrutinas, funciones y etiquetas de código, y poder encontrar el texto fuente de una función por su nombre.

MOSTRAR DATOS UTILIZADOS EN EL PROGRAMA QUE DEPURA

Para una depuración completa, el desarrollador debe poder ver los datos manipulados por el programa en cualquier momento. El depurador debe "poder" mostrar cualquier dato utilizado por el programa de la manera más adecuada.

Como regla general, los desarrolladores usan datos con nombre en los programas, es decir, cada objeto que se usa en el programa recibe un nombre. Los objetos pueden tener una complejidad variable, desde celdas de memoria simples hasta estructuras complejas de lenguajes de alto nivel, como estructuras, matrices, etc.

DATOS EN PROGRAMAS DE MONTAJE

Los programas de ensamblaje utilizan principalmente datos simples, es decir, celdas de memoria. También se utilizan matrices. Para mostrar correctamente datos simples, el depurador necesita "saber":

  • nombre del objeto:
  • la dirección del objeto en la memoria;
  • Espacio de direcciones MK en el que se encuentra el objeto. Muchos microcontroladores tienen más de un área de datos. Por ejemplo, la familia MCS-51 tiene una memoria de datos interna, una memoria de datos externa y un espacio de bits;
  • el bitness del objeto, es decir, el número de bytes que ocupa. Los microcontroladores de 16 bits, como los miembros de la familia MCS-96, "saben cómo" operar 8-. dieciséis-. datos de 16 bits. Aquí hay que señalar un punto importante. Para el desarrollador, es importante cuál es el tamaño lógico del objeto. Por ejemplo, los MK de ocho bits de la familia PIC (Microchip) funcionan solo con bytes. Si es necesario tener en el programa, por ejemplo, un contador de 32 bits, entonces cada byte debe manipularse por separado. Pero al depurar, al programador le gustaría ver no cada byte del contador por separado, sino ambos bytes a la vez, en forma de una variable de 16 bits. Los ensambladores cruzados populares no brindan esa oportunidad. La excepción es el ensamblador cruzado PASM-PIC de Fiton, que le permite declarar en el programa datos del tamaño de bytes, una palabra, una palabra doble, así como matrices de dichos objetos. Al depurar programas escritos con PASM-PIC. todos los objetos se muestran en una forma correspondiente a su tamaño y estructura lógicos;
  • alcance del objeto. Si el programa consta de varios módulos, el programador tiene la oportunidad de localizar el alcance del nombre dentro de un módulo. Por lo tanto, en diferentes módulos puede haber objetos con los mismos nombres, pero con otros atributos diferentes. El depurador necesita "descubrir" qué objeto está activo y mostrarlo correctamente. Tenga en cuenta, sin embargo, que la práctica de usar los mismos nombres en diferentes módulos a menudo genera confusión y errores. Si el objeto se declara global (PUBLIC) y es visible en todos los módulos, no hay dificultades de interpretación.

Con la información anterior, el depurador debería, después de recibir el nombre del objeto del usuario, mostrar su valor según el tipo. Los depuradores más "avanzados" pueden mostrar adicionalmente el resto de los atributos del objeto.

DATOS EN PROGRAMAS EN LENGUAS DE ALTO NIVEL

Mostrar objetos utilizados en lenguajes de alto nivel es mucho más difícil debido a la variedad de estructuras de objetos, formas en que se almacenan en la memoria y alcances. Por ejemplo, utilizaremos el lenguaje C, como el más popular entre los desarrolladores.

ESTRUCTURA DE OBJETOS

Además de variables simples de diferentes longitudes, los programas en C también utilizan variables de coma flotante, estructuras (struct), uniones o uniones (union), punteros, arreglos unidimensionales y multidimensionales. Este último puede constar tanto de objetos simples como complejos (estructuras, uniones, punteros).

El uso de objetos complejos en los programas es ciertamente conveniente. Sin embargo, debido a la complejidad de su estructura, es muy deseable poder mostrarlo adecuadamente en la etapa de depuración. En los depuradores de Fiton, los objetos complejos se pueden mostrar tanto en forma comprimida (lista de valores de elementos) como expandida, indicando la dirección, el valor y el tipo de cada elemento de la matriz y/o miembro de la estructura. La implementación de punteros en diferentes compiladores es diferente. El hecho de que el MK suele tener varios espacios de direcciones crea dificultades adicionales, ya que al trabajar con un puntero, además de la dirección, se debe conocer el espacio de direcciones al que apunta el puntero. En algunas implementaciones, el identificador del espacio de direcciones es parte del valor del puntero; en otras, el compilador "sabe" esto de antemano y genera el código apropiado.

Además, el componente de dirección en un puntero puede tener un tamaño de 8 a 32 bits. Al mostrar los valores de los punteros, el depurador debe "conocer" todos los detalles de su implementación en cada compilador.

MÉTODOS DE LOCALIZACIÓN DE OBJETOS EN MEMORIA

Además de los objetos estáticos, cuyas direcciones no cambian durante la ejecución del programa, en un programa escrito en un lenguaje de alto nivel, pueden existir los llamados objetos automáticos, cuya memoria se asigna temporalmente en la pila MK . Las direcciones de dichos objetos no son absolutas, sino que se determinan dinámicamente en la etapa de ejecución del programa. Por lo general, se miden a partir del valor actual de alguna variable estática llamada puntero de marco de pila (puntero base o BP). Dado que el valor de BP es generado dinámicamente por el programa en tiempo de ejecución, los valores de los objetos automáticos solo están disponibles dentro de su alcance, es decir, con un valor de BP válido. El depurador, al mostrar los valores de los objetos automáticos, debe "conocer" la forma en que se determinan las direcciones, así como monitorear la exactitud del valor BP

También es posible colocar temporalmente variables en registros MK. En este caso, el depurador debe "saber" qué variables se colocan en qué registros y durante cuánto tiempo. Y, finalmente, a menudo hay una situación en la que el mismo objeto durante su vida cambia la forma en que se coloca en la memoria, y más de una vez. Esto puede suceder, por ejemplo, cuando una función recibe uno o más parámetros en los registros y luego los coloca en la pila.

OBJETO CAMPO DE VISIBILIDAD

Al igual que en los programas ensambladores, los programas C tienen objetos globales a los que se puede acceder por nombre desde cualquier módulo y objetos que están localizados en el módulo (estos objetos se declaran estáticos). Sin embargo, las variables automáticas y de registro dificultan que los depuradores muestren sus valores. El hecho es que. en primer lugar, el tiempo de vida de un objeto automático está limitado por su ámbito y, en segundo lugar, los ámbitos adjuntos pueden tener sus propios objetos automáticos con los mismos nombres. Ilustremos esto con un ejemplo de una función que tiene varios ámbitos anidados:

Microcontroladores para principiantes y más allá

La variable llamada "a" existe mientras se ejecuta la función f, pero dependiendo de qué parte de la función se esté ejecutando, el nombre "a" representa diferentes variables. Al rastrear la función f, el depurador debe, dependiendo de qué variable esté activa, mostrar correctamente su valor.

Al crear un programa, el desarrollador no se preocupa por los detalles de la implementación de los conceptos que utilizó en el programa. En términos de categorías "por sentado", a menudo no sospecha lo difícil que fue para los desarrolladores de compiladores y depuradores implementarlas. Estos últimos deben resolver el problema de combinar en un solo shell al mismo tiempo una interfaz simple e intuitiva, una gran cantidad de funcionalidades y un estudio detallado de todo lo relacionado con la implementación de las características de la arquitectura y el funcionamiento de un MK en particular. Si el depurador no proporciona al desarrollador las herramientas de depuración adecuadas a la complejidad del problema que se está resolviendo, el desarrollador inevitablemente pierde productividad. ¿Quién de nosotros no ha tenido que pasar horas y días buscando un error molesto o una errata en el texto fuente?

En el proceso de desarrollo y creación de un sistema de microprocesador, tarde o temprano llega un momento en que finalmente se materializa en hardware y comienza a dar señales de vida. Sin embargo, en la mayoría de los casos estos signos resultan ser impredecibles, el sistema comienza a vivir su propia vida. Muchos programadores probablemente estarían de acuerdo en que cada nuevo programa contiene errores. Esta es en parte la razón por la cual el nuevo MK al principio se comporta como una caja "negra".

Para facilitar el proceso de depuración de sistemas, se ha desarrollado toda una clase de herramientas. Su objetivo principal es hacer que el proceso de funcionamiento del MK depurado sea "transparente", es decir, fácilmente controlado, arbitrariamente controlado y modificado a voluntad del desarrollador. Una buena caja de herramientas profesional puede, además, proporcionar muchos servicios al desarrollador, facilitando enormemente su trabajo, eliminando operaciones rutinarias.

Las principales herramientas de depuración incluyen emuladores en circuito, simuladores de software, placas de desarrollo (placas de evaluación), monitores de depuración y emuladores de ROM. También hay dispositivos y conjuntos combinados.

EMULADORES EN CIRCUITO

Un emulador en circuito (ICE) es una herramienta de hardware y software que puede reemplazar un procesador emulado en un dispositivo real. VSE es la herramienta de depuración más potente y versátil.

Funcionalmente, los VE se dividen en aquellos conectados a una computadora externa (generalmente una PC compatible con IBM) y que funcionan de manera autónoma. Estos últimos tienen sus propios recursos informáticos y facilidades de entrada/salida, por lo tanto, a igualdad de capacidades, son mucho más caros que los primeros, y al mismo precio, son significativamente inferiores a ellos en términos de funcionalidad y capacidades de servicio.

Con el sistema en proceso de depuración, el VSE generalmente se conecta mediante un cable a un cabezal de emulación especial. Hace relativamente poco tiempo, han aparecido modelos VSE en los que dicho cabezal se combina estructuralmente con la unidad principal y se inserta en el sistema que se está depurando en lugar del MC. Si este último no se puede quitar (los pines están soldados a la placa), se permite el uso del VSE, siempre que esta MC tenga un modo de depuración en el que todos sus pines estén en el tercer estado (alta impedancia). En este caso, para conectar el VSE se utiliza un adaptador de clip especial, que se conecta directamente a las salidas del MK emulado.

El menos. VSE contiene un depurador, un nodo de emulación MK. memoria de emulación y subsistema de punto de interrupción. Los TSE más avanzados pueden incluir además un rastreador, un procesador de punto de interrupción, un perfilador (analizador de eficiencia de código de programa), un temporizador en tiempo real, herramientas de software y hardware que le permiten leer y modificar los recursos del procesador emulado "sobre la marcha". , herramientas de software y hardware que brindan administración sincrónica y necesarias para la emulación en sistemas multiprocesador, un entorno de desarrollo integrado.

El depurador es una especie de puente entre el desarrollador y la herramienta de depuración. Un buen depurador asegura que los programas que se están depurando se cargan en la memoria del sistema, los estados y contenidos de todos los registros y la memoria (y, si es necesario, sus modificaciones) se muestran en el monitor y se controla el proceso de emulación.

Los depuradores más potentes (comúnmente denominados depuradores de alto nivel o de alto nivel) también permiten esto.

  • realizar la depuración simbólica (debido al hecho de que el depurador, utilizando información especial proporcionada por el compilador, "conoce" las direcciones de todas las variables, matrices y estructuras simbólicas). En este caso, el usuario puede operar con nombres simbólicos que sean más aceptables para una persona, sin molestarse en recordar sus direcciones;
  • controlar y analizar no solo texto desensamblado, sino también el código fuente de un programa escrito en un lenguaje de alto nivel, e incluso con sus propios comentarios.

Tal depurador permite al usuario controlar simultáneamente el progreso del programa y ver la correspondencia entre el texto fuente, la imagen del programa en códigos de máquina y el estado de todos los recursos del microcontrolador emulado.

Cabe señalar que un depurador de alto nivel proporciona el rendimiento de todas sus funciones solo si se utiliza un compilador cruzado que proporciona información de depuración completa y correcta (no todos los compiladores, especialmente sus versiones pirateadas, son capaces de esto), y en al mismo tiempo el formato de su presentación "familiar" al depurador.

La memoria de emulación se utiliza en el proceso de depuración en lugar de la ROM del sistema que se está desarrollando. Además, le permite depurar el programa en ausencia de un sistema real o su diseño. Si necesita realizar cambios en el programa que se está depurando, basta con cargar un programa nuevo o modificado en la memoria del emulador, en lugar de reprogramar la ROM.

Hay VSE. que permiten al usuario "sustituir" la memoria de emulación en lugar de la ROM no solo en su totalidad, sino también bloque a bloque (en algunos modelos, el tamaño mínimo de bloque es de 1 byte). en el orden especificado por el usuario. Para hacer esto, basta con que configure la distribución de la memoria de datos y la memoria de programa, según la cual el procesador accederá tanto al contenido de la ROM en el sistema que se está depurando como al contenido de la memoria de emulación del TSE. Dicha memoria suele denominarse memoria con posibilidad de mapeo.

El trazador es un analizador lógico que funciona sincrónicamente con el procesador y captura el flujo de instrucciones que se ejecutan y el estado de las señales externas seleccionadas. Hay VSE que permiten rastrear no solo señales externas, sino también los estados de los recursos internos de la MC. ej., registros. En tales dispositivos, se utilizan versiones especiales de MK (cristales de emulación).

El procesador de punto de interrupción permite detener la ejecución del programa o realizar otras acciones (por ejemplo, iniciar o detener el rastreador) cuando se cumplen las condiciones especificadas por el usuario, a diferencia del mecanismo de punto de interrupción habitual, el procesador le permite formar y realizar un seguimiento de las condiciones de casi cualquier complejidad a nivel de hardware, mientras que al ser emulado el proceso no se deduce de la escala de tiempo real. En algunos modelos VSE, el procesador de punto de interrupción se puede usar opcionalmente para controlar dinámicamente el rastreador.

El generador de perfiles (analizador de eficiencia de código de programa) permite, en función de los resultados de ejecutar el programa depurado, obtener información sobre la cantidad de llamadas a varias secciones del programa y el tiempo dedicado a su ejecución. El análisis de la información estadística suministrada por el generador de perfiles permite identificar secciones de programas "muertos" o sobrecargados y, como resultado, optimizar la estructura del programa que se está depurando.

Un entorno de desarrollo integrado es un conjunto de herramientas de software que admite todas las etapas del desarrollo de software, desde escribir el código fuente de un programa hasta compilarlo y depurarlo, y proporciona una interacción simple y rápida con un depurador-simulador y programador de software.

La presencia de un editor, un administrador de proyectos y un sistema de control incorporados en el shell del software VSE facilita enormemente el trabajo del desarrollador, ahorrándolo de muchas acciones de rutina. Para él, la línea entre escribir un programa, editarlo y depurarlo es borrosa. La transición de la edición del texto fuente a la depuración y viceversa se realiza de forma "transparente" y sincronizada con la activación de las ventanas correspondientes. El Project Manager inicia automáticamente la compilación según sea necesario y activa la ventana de la interfaz del programa correspondiente. Puede proceder con la misma facilidad a depurar el proyecto utilizando el depurador del simulador existente o comenzar a actualizar la ROM con un programa depurado.

Algunas ITU proporcionan a los usuarios otras características adicionales. Entre ellos, uno debe tener en cuenta especialmente uno, aunque bastante específico, pero en algunos casos de importancia fundamental, la capacidad de construir complejos multi-emuladores necesarios para depurar sistemas multiprocesador Una característica distintiva de tal complejo es el control sincrónico (desde una computadora ) de varios emuladores.

En el caso general, la capacidad del TSE para controlar y administrar el funcionamiento de los dispositivos depurados puede verse limitada (por ejemplo, manejo incorrecto de interrupciones en modo paso a paso, prohibición del uso de un puerto serie, etc.). También es necesario recordar que cada modelo de VSE tiene su propia lista de microcontroladores y compiladores compatibles.

Sin embargo, para la mayoría de los microcontroladores populares, se han desarrollado VSE que no tienen restricciones en el uso de recursos de cristales depurados. Ilustraremos las posibilidades de tal ESS utilizando como ejemplo el modelo PICE-51 de la empresa Fiton.

PICE-51 es un dispositivo creado utilizando un circuito integrado de lógica programable (FPGA). Esto hizo posible reducir drásticamente el tamaño del VSE, minimizar las desviaciones de sus características eléctricas y de frecuencia de las características del MC emulado y, por lo tanto, lograr la máxima precisión de emulación a frecuencias de hasta 33 MHz con voltajes de alimentación de 3,3 a 5 V. emulación de casi todos los MK de la familia MCS-51. El soporte de software funciona en el entorno de Windows.

PICE-51 consta de una placa principal, un adaptador reemplazable para un grupo MK específico y un cabezal de emulación reemplazable también para un tipo de caja específico. Un rastreador y un procesador de punto de interrupción están ensamblados en la placa principal, y un procesador de emulación para un tipo específico de MK está instalado en la placa adaptadora reemplazable. Los cabezales de emulación permiten instalar el dispositivo en tomas DIP y PLCC en la placa de usuario. La alimentación se suministra desde un bloque con una tensión de salida de +5 V (0,5 A) o desde un dispositivo que se está depurando. La comunicación con una computadora se realiza a través de un canal RS-232C aislado galvánicamente a una velocidad de 115 kbaudios.

Otras características y capacidades del PICE-51 son las siguientes:

  • emulación precisa: la ausencia de restricciones en el uso por parte del programa de usuario de los recursos MK;
  • hasta 256 KB de programa emulado y memoria de datos. Soporte para el modelo de memoria bancaria. Asignación de memoria entre el ESS y el dispositivo del usuario con una precisión de 1 byte;
  • hasta 512 XNUMX puntos de interrupción de hardware para el acceso a la memoria de programas y datos,
  • soporte de hardware para la depuración de programas en lenguajes de alto nivel;
  • rastrear ocho señales externas arbitrarias;
  • cuatro salidas de sincronización de equipos de usuario;
  • trazador en tiempo real con un buffer de 16 a 64K frames (arrays) de 64 bits con acceso on-the-fly. Dirección de seguimiento, datos, señales de control, temporizador en tiempo real y ocho señales de usuario externas;
  • filtro de trazas programable;
  • Procesador de punto de interrupción de hardware con la capacidad de establecer una condición de parada de emulación compleja mediante una combinación de dirección, datos, control, ocho señales externas, un temporizador en tiempo real, contadores de eventos y un temporizador de retardo:
  • cuatro puntos de corte complejos que se pueden usar de forma independiente o en combinación para las condiciones Y/O/SI-ENTONCES;
  • temporizador en tiempo real de 48 bits;
  • emulación "transparente": acceso "sobre la marcha" a la memoria emulada, puntos de interrupción, procesador de punto de interrupción, búfer de seguimiento, temporizador en tiempo real;
  • generador de reloj controlado para el MK emulado. La capacidad de cambiarlo suavemente de 500 kHz a 40 MHz;
  • sistema incorporado de autodiagnóstico del equipo VSE. Se admite el desarrollo de programas a nivel de gestión de proyectos para el ensamblador de macros МСА-51 ("Fiton"/"Microcosmos"), así como para paquetes de herramientas cruzadas de Keil Software e IAR Systems;
  • compatibilidad con la depuración simbólica completa de programas creados con los siguientes compiladores: ensamblador ASM51 de Intel, compilador PL/M de Intel, ensambladores y compiladores C de Avocet Systems. De alta tecnología. software de asignación de tareas;
  • guardado y carga automáticos de archivos de configuración de hardware, interfaz y opciones de depuración. Compatibilidad asegurada de archivos de configuración con el simulador PDS-51 y portabilidad de proyectos entre PICE-51 y el simulador PDS-51;
  • la capacidad de personalizar colores, fuentes y otras configuraciones para todas las ventanas al mismo tiempo y para cada ventana por separado.

Esta amplia gama de funcionalidades convierte a VSE en la herramienta de depuración más potente y versátil.

SIMULADORES

Simulator: una herramienta de software que puede simular el funcionamiento del MK y su memoria. Por lo general, consta de un depurador, un modelo de CPU y memoria. Los dispositivos más avanzados contienen modelos de dispositivos periféricos incorporados (temporizadores, puertos, ADC y sistemas de interrupción).

El simulador debería "poder" cargar archivos de programa en todos los formatos populares, mostrar información sobre el estado de los recursos del microcontrolador simulado de la manera más completa posible. y también brindan oportunidades para simular la ejecución del programa cargado en varios modos. Durante la depuración, el modelo ejecuta el programa y el estado actual del modelo se muestra en la pantalla del monitor de la computadora.

Cargando el programa en el simulador. el usuario puede ejecutarlo en modo paso a paso o continuo, establecer puntos de interrupción condicionales o incondicionales, controlar y modificar libremente el contenido de las celdas de memoria y los registros del microcontrolador simulado. El simulador le permite verificar rápidamente la lógica de ejecución del programa, la corrección de las operaciones aritméticas.

Dependiendo de la clase de depurador utilizado, algunos modelos de simulador admiten la depuración simbólica de alto nivel de los programas.

El simulador también puede contener una serie de herramientas de software adicionales, como una interfaz de entorno externo. La presencia de dicha interfaz le permite crear y utilizar de manera flexible un modelo del entorno externo de la MC. funcionando y afectando el programa depurado de acuerdo con un algoritmo dado.

En un sistema real, el MC suele "comprometerse" en leer información de dispositivos externos (sensores) conectados a él, procesarla y emitir señales de control a los actuadores. Para simular el funcionamiento de un sensor en un simulador simple, debe cambiar manualmente el estado actual del modelo del dispositivo periférico al que está conectado el sensor en un sistema real. Si, por ejemplo, al recibir un byte a través de un puerto serie, se establece una determinada bandera y el propio byte cae en un determinado registro, ambas acciones deben realizarse manualmente en el simulador. En algunos modelos, este problema se ha resuelto: los simuladores tienen herramientas integradas para crear modelos de dispositivos externos conectados al MK, incluidas herramientas para la visualización gráfica de información.

Una característica obvia de los simuladores de software es que que los programas cargados en ellos se ejecutan en una escala de tiempo distinta al tiempo real. Sin embargo, el bajo precio, la capacidad de depurar incluso en ausencia de una maqueta del dispositivo que se está depurando, hacen que los simuladores de software sean una herramienta de depuración muy atractiva. También se debe tener en cuenta que existe toda una clase de errores que solo se pueden detectar mediante un simulador.

MONITORES DE DEPURACIÓN

Un monitor de depuración es un programa especial que se carga en la memoria del sistema que se está depurando. Obliga al MK a realizar, además de la tarea aplicada, también funciones de depuración:

  • cargar códigos de aplicación de usuario en la memoria sin monitor;
  • establecimiento de puntos de interrupción;
  • iniciar y detener el programa cargado en tiempo real;
  • pasar el programa de usuario paso a paso;
  • visualización, edición del contenido de la memoria y registros de control.

El programa monitor funciona "en conjunto" con una computadora o una terminal pasiva, en la que se realiza la visualización y el control del proceso de depuración. La ventaja de este enfoque

  • costos muy bajos manteniendo la capacidad de depuración en tiempo real, el principal inconveniente;
  • distracción de los recursos de MK para los procedimientos de depuración y comunicación (el monitor ocupa algo de memoria, interrupciones, canal serie). Recientemente, han aparecido programas que prácticamente no ocupan los recursos de hardware del MK (se discutirán en la sección "Emuladores de ROM").

TABLEROS DE DESARROLLO

Tableros de desarrollo, o, como se les suele llamar en la literatura extranjera, tableros de evaluación (Evaluation Boards). - constructores originales para prototipos de sistemas aplicados. Recientemente, muchas empresas manufactureras lanzaron nuevos modelos de MK. oferta y placas de desarrollo correspondientes. Por lo general, se trata de una placa de circuito impreso con un MK instalado y todos los elementos necesarios para su funcionamiento normal, así como sistemas de comunicación con una computadora. Como regla general, la placa proporciona espacio libre para montar el dispositivo de usuario que se está desarrollando. A veces, también hay un "cableado" listo para instalar dispositivos adicionales recomendados por la empresa (ROM, RAM, pantalla LCD, teclado, ADC, etc.). Las tarjetas modificadas por el usuario se pueden utilizar ventajosamente como controladores de una sola tarjeta integrados en productos a pequeña escala (5...20 piezas).

Para comodidad del usuario, las placas de desarrollo también están equipadas con una herramienta de depuración simple basada en el monitor de depuración. Aquí han surgido dos enfoques diferentes: uno se utiliza para MK. tener un bus externo, y el segundo, para MK que no lo tienen.

En el primer caso, el monitor de depuración se suministra como un chip ROM. que se instala en un zócalo especial en la placa de desarrollo. La placa también tiene RAM para programas de usuario y un canal de comunicación con una computadora o terminal. Un ejemplo es la placa de desarrollo desarrollada por Intel para la familia MK MCS-51.

En el segundo caso, la placa de desarrollo contiene sistemas de programación integrados para la ROM interna del MK. que son controlados por una computadora. El programa del monitor se ingresa en la ROM del MK junto con la aplicación preparada en consecuencia (las llamadas de las rutinas de depuración del monitor se insertan en los lugares correctos). Luego se realiza una prueba de funcionamiento. Para hacer correcciones al programa que se está depurando, se borra de la ROM y se escribe en él el corregido. El programa de aplicación terminado se obtiene del depurado eliminando el monitor y todas las llamadas a sus funciones. Las placas de desarrollo para MK de las familias PIC-micro (Microchip), 80C750 (Philips), 89C2051 (Atmel) están diseñadas para dicho algoritmo de depuración.

Las placas de desarrollo a veces están equipadas con programas de depuración que se ejecutan en una computadora externa "junto" con un monitor. Estos programas se han vuelto notablemente más complejos recientemente y, a menudo, tienen un conjunto altamente profesional de funciones de depuración (por ejemplo, un depurador-simulador) o varios elementos que son inherentes solo en entornos de desarrollo integrado en su forma pura. Los kits también pueden incluir programas aplicados que se encuentran con mayor frecuencia en la práctica.

Las capacidades de depuración del kit "placa de desarrollo más monitor" no son tan universales como las del ESS. además, se seleccionan algunos de los recursos de MC en proceso de depuración para que el monitor funcione. Sin embargo, la disponibilidad de un conjunto completo de herramientas de software y hardware listas para usar que le permitan comenzar a instalar y depurar el sistema aplicado sin pérdida de tiempo es en muchos casos un factor decisivo. Especialmente cuando considera que dicho kit cuesta varias veces menos que un emulador más versátil.

EMULADORES DE ROM

Un emulador de ROM es una herramienta de software y hardware que le permite reemplazar la ROM del dispositivo que se está depurando con RAM. en el que puede descargar el programa desde su computadora a través de uno de los canales de comunicación estándar. Le permite al usuario evitar múltiples ciclos de flasheo de la ROM. El emulador de ROM se usa solo para depurar programas MK que pueden acceder a la memoria de programa externa. En términos de complejidad y costo, este dispositivo es comparable a las placas de desarrollo. Tiene una gran ventaja: la versatilidad. El emulador de ROM puede funcionar con cualquier MK.

Los primeros emuladores de ROM solo permitían cargar, ejecutar y detener un programa mediante un reinicio maestro. Luego estaban los modelos complicados con generación de hardware de señales de rastreo al osciloscopio al llegar a una dirección determinada. La memoria emulada en dichos productos estaba disponible para su visualización y modificación, pero hasta hace poco era imposible controlar los registros de control interno del MK.

Recientemente, han aparecido los llamados emuladores de ROM inteligentes. Le permiten 'mirar' dentro del MC en la placa de usuario y son similares en el control de depuración al VSE. Cactus incluso presenta su emulador de ROM realmente inteligente como el VSE de la serie MK, es tan imposible distinguir entre trabajar con uno y el otro De hecho, el procesador en este caso no se reemplaza, y se usa el que está en la tarifa del usuario.

El emulador de ROM inteligente es un híbrido del emulador de ROM normal. un monitor de depuración y un sistema para cambiar rápidamente el bus de uno a otro. Esto crea el efecto como si el monitor de depuración estuviera instalado en la placa del usuario y, al mismo tiempo, prácticamente no consume recursos de hardware del MK, excepto por una pequeña zona (alrededor de 4 KB) de pasos de software. Tal emulador fue desarrollado, por ejemplo, por la compañía Fiton para todos los MK existentes y futuros que tienen el núcleo 8051, pero que además están saturados con varios dispositivos de entrada / salida. El producto es compatible con muchos MC diferentes de Philips, Siemens. OKI.

ENTORNOS DE DESARROLLO INTEGRADO

Estrictamente hablando, los entornos de desarrollo integrado no se encuentran entre las herramientas de depuración, sin embargo, sería un error ignorar esta clase de herramientas de software que facilitan y aceleran enormemente el proceso de desarrollo y depuración de sistemas de microprocesadores.

Con el enfoque tradicional, la etapa inicial de escribir un programa se construye de la siguiente manera. El texto fuente se escribe usando un editor de texto. Al terminar de escribir, se detiene el trabajo con el editor de texto y se inicia el compilador cruzado. Como regla general, un nuevo programa contiene errores de sintaxis y el compilador los informa a la consola del operador. Luego se vuelve a iniciar el editor de texto y el operador busca y elimina los errores identificados. Al mismo tiempo, los mensajes sobre su naturaleza, que muestra el compilador, ya no son visibles, ya que la pantalla está ocupada por un editor de texto.

Este ciclo puede repetirse más de una vez. Y si el programa es relativamente complejo, se ensambla a partir de varias partes, está sujeto a edición o modernización, incluso esta etapa inicial puede requerir mucho esfuerzo y tiempo por parte del programador.

Para evitar una gran cantidad de trabajo rutinario y, por lo tanto, aumentar significativamente la productividad de un programador, permiten los llamados entornos de desarrollo integrados (shells) de desarrollo (Integrated Development Environment IDE) que han aparecido y están ganando popularidad rápidamente.

Por regla general, un buen entorno integrado combina las herramientas de depuración disponibles (emulador en circuito, simulador de software, programador) y proporciona al programador textos de programa de estilo "Turbo".

El entorno integrado permite:

  • use el editor de texto de múltiples archivos incorporado, especialmente orientado para trabajar con textos fuente del programa;
  • observar simultáneamente (en modo multiventana) los diagnósticos de errores detectados durante la compilación y el texto fuente del programa, disponible para editar;
  • trabajar en varios proyectos en paralelo. El Administrador de proyectos le permite usar cualquier proyecto como plantilla para uno recién creado. Las opciones para los compiladores utilizados y la lista de archivos fuente del proyecto se configuran en los menús de diálogo y se guardan dentro del proyecto, eliminando la necesidad de trabajar con archivos por lotes inconvenientes;
  • recompilar solo los módulos editados;
  • cargue el programa que se está depurando en las herramientas de depuración disponibles y trabaje con ellas sin salir del shell;
  • conectar al shell casi cualquier software.

Recientemente, las funciones de los entornos de desarrollo integrados han pasado a formar parte de las interfaces de programación de los emuladores y depuradores-simuladores más "avanzados". Dicha funcionalidad, combinada con una interfaz amigable, acelera significativamente el trabajo del programador.

Por lo tanto, al elegir herramientas de depuración, es recomendable tener en cuenta el siguiente conjunto de indicadores: la lista de microcontroladores compatibles, las restricciones en los recursos de los microcontroladores emulados/simulados, la posibilidad de depuración simbólica, la lista de compiladores compatibles y, finalmente, capacidades de servicio.

Autores: Yu.Zobnin, Sh.Kobakhidze, Moscú

Ver otros artículos sección Microcontroladores.

Lee y escribe útil comentarios sobre este artículo.

<< Volver

Últimas noticias de ciencia y tecnología, nueva electrónica:

Cuero artificial para emulación táctil. 15.04.2024

En un mundo tecnológico moderno donde la distancia se está volviendo cada vez más común, mantener la conexión y la sensación de cercanía es importante. Los recientes avances en piel artificial realizados por científicos alemanes de la Universidad del Sarre representan una nueva era en las interacciones virtuales. Investigadores alemanes de la Universidad del Sarre han desarrollado películas ultrafinas que pueden transmitir la sensación del tacto a distancia. Esta tecnología de punta brinda nuevas oportunidades de comunicación virtual, especialmente para quienes se encuentran lejos de sus seres queridos. Las películas ultrafinas desarrolladas por los investigadores, de sólo 50 micrómetros de espesor, pueden integrarse en textiles y usarse como una segunda piel. Estas películas actúan como sensores que reconocen señales táctiles de mamá o papá, y como actuadores que transmiten estos movimientos al bebé. El toque de los padres sobre la tela activa sensores que reaccionan a la presión y deforman la película ultrafina. Este ... >>

Arena para gatos Petgugu Global 15.04.2024

Cuidar a las mascotas a menudo puede ser un desafío, especialmente cuando se trata de mantener limpia la casa. Se ha presentado una nueva e interesante solución de la startup Petgugu Global, que facilitará la vida a los dueños de gatos y les ayudará a mantener su hogar perfectamente limpio y ordenado. La startup Petgugu Global ha presentado un inodoro para gatos único que puede eliminar las heces automáticamente, manteniendo su hogar limpio y fresco. Este innovador dispositivo está equipado con varios sensores inteligentes que monitorean la actividad del baño de su mascota y se activan para limpiar automáticamente después de su uso. El dispositivo se conecta al sistema de alcantarillado y garantiza una eliminación eficiente de los residuos sin necesidad de intervención del propietario. Además, el inodoro tiene una gran capacidad de almacenamiento, lo que lo hace ideal para hogares con varios gatos. El arenero para gatos Petgugu está diseñado para usarse con arena soluble en agua y ofrece una gama de arena adicional ... >>

El atractivo de los hombres cariñosos. 14.04.2024

El estereotipo de que las mujeres prefieren a los "chicos malos" está muy extendido desde hace mucho tiempo. Sin embargo, una investigación reciente realizada por científicos británicos de la Universidad de Monash ofrece una nueva perspectiva sobre este tema. Observaron cómo respondieron las mujeres a la responsabilidad emocional y la voluntad de los hombres de ayudar a los demás. Los hallazgos del estudio podrían cambiar nuestra comprensión de lo que hace que los hombres sean atractivos para las mujeres. Un estudio realizado por científicos de la Universidad de Monash arroja nuevos hallazgos sobre el atractivo de los hombres para las mujeres. En el experimento, a las mujeres se les mostraron fotografías de hombres con breves historias sobre su comportamiento en diversas situaciones, incluida su reacción ante un encuentro con un vagabundo. Algunos de los hombres ignoraron al vagabundo, mientras que otros lo ayudaron, como comprarle comida. Un estudio encontró que los hombres que mostraban empatía y amabilidad eran más atractivos para las mujeres en comparación con los hombres que mostraban empatía y amabilidad. ... >>

Noticias aleatorias del Archivo

ICL5102 - Controlador de convertidor AC-DC de medio puente eficiente con PFC 27.08.2018

El ICL5102 de Infineon es un nuevo controlador de suministro de energía combinado que controla dos etapas a la vez: una etapa de corrección del factor de potencia (PFC) y una etapa de convertidor LLC de medio puente resonante (opcionalmente LCC).

El alto nivel de integración de esta solución garantiza un bajo número de componentes y es ideal para fuentes de alimentación compactas y de bajo perfil. La configuración de los parámetros del chip ICL5102 se realiza seleccionando los valores de resistencia. Con una corriente de arranque de aproximadamente 100 μA, el controlador le permite iniciar la fuente de alimentación en no más de 300 ms.

La etapa PFC se implementa sobre la base de un núcleo digital y funciona en el modo de límite de corriente de choque (CrM) o cambia al modo de corriente discontinua (DCM) con carga ligera. Esta etapa opera en el rango de frecuencia de 22 a 500 kHz y le permite lograr un factor de potencia de más del 95% y una distorsión armónica de corriente de entrada (THD) de menos del 10%.

La etapa de medio puente contiene un controlador de lado bajo y alto incorporado para controlar un transistor externo con un voltaje máximo de hasta 650 V. Este microcircuito implementa un algoritmo de ajuste de tiempo muerto adaptativo en el rango de 500-1000 ns.

El controlador ICL5102 implementa un algoritmo para salir del modo de funcionamiento capacitivo del convertidor LLC. El modo capacitivo puede ocurrir ya sea con un cortocircuito en la carga, o con un aumento brusco de la carga (sobrevoltaje) o al arrancar el convertidor. El controlador intenta sacar suavemente el convertidor del modo capacitivo aumentando la frecuencia de conversión. Si esto no ayuda, entonces se reinicia el controlador.

Ventajas técnicas:

Rango de valores efectivos de voltajes de entrada 85...305 V;
El rango de frecuencia de funcionamiento de la cascada PFC es de 22...500 kHz;
Controlador de lado alto de tecnología de transformador sin núcleo aislado incorporado de la etapa de salida;
Es posible una alta eficiencia del convertidor de hasta el 95% (ambas etapas - KKM + LLC);
Resistencia NTC externa para protección contra sobrecalentamiento;
Corto tiempo de arranque suave de hasta 300 ms;
Algoritmo de regulación en el modo capacitivo de la cascada LLC;
Funciona a 1,3 MHz;
Operación estable bajo carga ligera;
Vivienda DSO-16;
Rango de temperatura de funcionamiento -40...125°C.

Aplicaciones Típicas:

Fuentes de alimentación industriales;
Fuentes de alimentación para productos electrónicos de consumo;
Controladores LED.

Otras noticias interesantes:

▪ Corning Gorilla Glass para autos

▪ ciudades marcianas

▪ Camiseta inteligente

▪ Unidad de estado sólido Transcend TS128GMTS810

▪ Micrófono USB de estudio Roccat Torch

Feed de noticias de ciencia y tecnología, nueva electrónica

 

Materiales interesantes de la Biblioteca Técnica Libre:

▪ sección del sitio Estabilizadores de voltaje. Selección de artículos

▪ artículo Centros geográficos de origen de las plantas cultivadas. Historia y esencia del descubrimiento científico.

▪ artículo ¿Qué monarca estaba técnicamente en guerra consigo mismo? Respuesta detallada

▪ artículo Espino común. Leyendas, cultivo, métodos de aplicación.

▪ artículo Información general sobre barnices y barnices. recetas simples y consejos

▪ artículo Fuente de alimentación conmutada basada en un bloque de un reproductor de DVD. Enciclopedia de radioelectrónica e ingeniería eléctrica.

Deja tu comentario en este artículo:

Nombre:


Email opcional):


comentar:





Todos los idiomas de esta página

Hogar | Biblioteca | Artículos | Mapa del sitio | Revisiones del sitio

www.diagrama.com.ua

www.diagrama.com.ua
2000 - 2024