Logo Passei Direto

Programacion de sistemas embebidos en C - Gustavo Galeano - Resumo

Herramientas de estudio

Este resumen es del material:

Programacion de sistemas embebidos en C - Gustavo Galeano
532 pag.

Arquitetura de Computador • Instituto Politécnico NacionalInstituto Politécnico Nacional

Material

Esta es una vista previa del archivo. Inicie sesión para ver el archivo original

## Resumen detallado sobre Sistemas Embebidos y Programación en C para MicrocontroladoresEl texto aborda de manera exhaustiva los fundamentos y componentes esenciales para la programación y diseño de sistemas embebidos, con un enfoque particular en microcontroladores de 8 bits y el lenguaje C. Se inicia con la definición de un sistema embebido, que es un circuito electrónico computarizado diseñado para cumplir una función específica dentro de un producto o dispositivo. A diferencia de los sistemas computacionales generales, los sistemas embebidos están integrados en una amplia variedad de objetos cotidianos, desde vehículos (control de inyección de combustible, sistemas ABS, airbags) hasta electrodomésticos (refrigeradores, microondas, lavadoras) y dispositivos portátiles (celulares, cámaras, reproductores de música). Se destaca que un usuario promedio interactúa diariamente con cientos de microcontroladores, y esta cifra seguirá creciendo debido a la miniaturización, reducción de costos y menor consumo energético de estos dispositivos.El capítulo inicial también introduce la evolución hacia los microcontroladores de una sola pastilla (single-chip), que integran en un solo circuito todos los componentes necesarios para un sistema embebido: procesador, memoria RAM, memoria de programa, sistemas de decodificación y multiplexaje, y señales de sincronización para lectura y escritura. Esta integración permite sistemas más compactos, eficientes y económicos, facilitando su uso en aplicaciones industriales, automotrices y de consumo masivo. Se explica además la importancia de la robustez en estos sistemas, ya que deben operar en ambientes exigentes con condiciones adversas como polvo, humedad, vibración y temperaturas extremas.### Compiladores e Interpretadores: Conceptos y ProcesosSe clarifica la diferencia fundamental entre compiladores e interpretadores, dos métodos para transformar el código fuente en instrucciones ejecutables por el microcontrolador (target). Un compilador traduce completamente el código fuente a código máquina antes de la ejecución, generando un archivo ejecutable que se carga en el dispositivo. Esto implica un tiempo de compilación previo, pero permite que el microcontrolador ejecute el código de manera eficiente y rápida, sin necesidad de traducción adicional en tiempo real. Por otro lado, un interpretador traduce el código línea por línea durante la ejecución, lo que otorga mayor portabilidad y flexibilidad, ya que el mismo código fuente puede ser ejecutado en diferentes máquinas sin recompilación. Sin embargo, esta ventaja se paga con un mayor consumo de recursos y tiempo de ejecución en el microcontrolador, que debe realizar la traducción en tiempo real.El proceso de compilación se desglosa en varias etapas: el preprocesador resuelve macros y directivas condicionales, generando un código intermedio; el análisis semántico verifica la sintaxis y léxico del código; el generador de código produce un archivo en lenguaje ensamblador; el optimizador mejora el código eliminando instrucciones innecesarias para hacerlo más eficiente; el ensamblador convierte el código a lenguaje máquina; y finalmente, el enlazador une todos los archivos objeto y librerías para crear el archivo ejecutable final (.HEX o .S19). Se enfatiza la importancia de distinguir entre tiempo de compilación y tiempo de ejecución, ya que ciertas operaciones y definiciones (como macros con #define) se resuelven en tiempo de compilación, reduciendo la carga en el microcontrolador durante la ejecución.### Origen y Estructura del Lenguaje C en Sistemas EmbebidosEl lenguaje C, desarrollado en 1972 por ingenieros de los Laboratorios Bell liderados por Denis Ritchie, fue creado para reescribir el sistema operativo UNIX de manera portable y eficiente. Su evolución desde lenguajes anteriores (B y BCPL) y su estandarización ANSI/ISO lo han convertido en el lenguaje más popular para programación tanto en computadoras comerciales como en microcontroladores. C ofrece un equilibrio entre la eficiencia del lenguaje ensamblador y la portabilidad de un lenguaje de alto nivel, lo que lo hace ideal para sistemas embebidos.Un proyecto en C típicamente está compuesto por múltiples archivos fuente (.C) y de cabecera (.H), que pueden incluir código en ensamblador para optimizaciones específicas. El código fuente contiene líneas de código, comentarios, identificadores, palabras reservadas, constantes, operadores y signos de puntuación. Los comentarios, aunque ignorados por el compilador, son esenciales para la comprensión y mantenimiento del código. Los identificadores nombran objetos y son sensibles a mayúsculas y minúsculas, mientras que las palabras reservadas tienen un significado especial en el lenguaje y no pueden usarse como nombres de variables o funciones.Se describen también los operadores y signos de puntuación usados en C, que permiten realizar operaciones aritméticas, lógicas, de comparación y manipulación de bits, fundamentales para el control preciso de hardware en sistemas embebidos.### Periféricos Comunes en Microcontroladores y su UsoEl texto dedica una sección a los periféricos más comunes integrados en microcontroladores de 8 bits, que facilitan la implementación de sistemas embebidos compactos y eficientes. Entre ellos destacan:- **Puertos de Entrada/Salida (I/O):** Son la interfaz entre el bus de datos interno del microcontrolador y los dispositivos externos. Los pines son bidireccionales y se configuran como entrada o salida mediante registros específicos (DDR para dirección y PTD para datos). Al reset, los pines se configuran como entrada para evitar conflictos con dispositivos externos. La correcta configuración de estos puertos es fundamental para la interacción con sensores, actuadores y otros periféricos.- **Función KBI (Key Board Interrupt):** Permite detectar eventos externos en los pines de entrada, generando interrupciones que facilitan la respuesta rápida del sistema a cambios en el entorno.- **Convertidor Analógico a Digital (ADC):** Transforma señales analógicas en valores digitales que el microcontrolador puede procesar, esencial para aplicaciones que requieren medición de variables físicas como temperatura, luz o presión.- **Periféricos de Control y Seguridad:** Como el Computador Operando Apropiadamente (COP), que supervisa el correcto funcionamiento del sistema, y el Detector de Bajo Nivel de Voltaje (LVI), que protege contra condiciones de alimentación inadecuadas.- **Temporizadores (TIMER):** Permiten medir intervalos de tiempo y generar eventos periódicos, cruciales para la sincronización y control temporal en sistemas embebidos.- **Comunicación Serial:** Incluye protocolos asincrónicos (SCI) y sincrónicos (SPI, I2C), que facilitan la comunicación con otros dispositivos y módulos, permitiendo la expansión y conexión en red de sistemas embebidos.### Interrupciones y Manejo de ContextoUn tema central en sistemas embebidos es el manejo de interrupciones, que permite al microcontrolador responder de manera inmediata a eventos externos o internos sin necesidad de estar constantemente verificando su ocurrencia (polling). Se explica el concepto de interrupción con ejemplos cotidianos y su implementación en procesadores, detallando cómo el procesador suspende temporalmente la ejecución del programa principal para atender la interrupción, y luego retoma su tarea previa. Se abordan también conceptos relacionados como el cambio de contexto, latencia de interrupción y zonas críticas de software, que son áreas del código donde se debe evitar la interrupción para prevenir errores o inconsistencias.### Herramientas de Desarrollo para MicrocontroladoresFinalmente, se presentan las herramientas de desarrollo más comunes para microcontroladores de marcas reconocidas como Microchip, Renesas, Texas Instruments y Freescale. Estas herramientas incluyen entornos integrados de desarrollo (IDE), compiladores y depuradores que facilitan la creación, compilación, simulación y carga de programas en los dispositivos target. Se
destaca la disponibilidad de herramientas de bajo costo o gratuitas que permiten a los desarrolladores practicar y experimentar con ejemplos reales, facilitando el aprendizaje y la aplicación práctica de los conceptos teóricos.---### **Destaques**- Los sistemas embebidos son circuitos computarizados diseñados para funciones específicas, presentes en una amplia variedad de dispositivos cotidianos y con creciente presencia debido a la miniaturización y reducción de costos.- La programación embebida se orienta a aplicaciones compactas, de bajo consumo y alta robustez, utilizando microcontroladores single-chip que integran todos los componentes necesarios en un solo circuito.- La diferencia entre compiladores e interpretadores radica en el momento y forma en que el código fuente se traduce a código máquina, afectando la portabilidad y eficiencia del sistema.- El lenguaje C, estandarizado por ANSI/ISO, es el más utilizado en sistemas embebidos por su equilibrio entre eficiencia y portabilidad, y su estructura modular facilita el desarrollo de proyectos complejos.- Los periféricos integrados en microcontroladores, como puertos I/O, ADC, temporizadores y módulos de comunicación serial, son esenciales para la interacción con el entorno y la implementación de funcionalidades específicas.- El manejo de interrupciones es fundamental para la respuesta eficiente y oportuna del sistema embebido ante eventos externos o internos, requiriendo un diseño cuidadoso para evitar errores en zonas críticas.- Las herramientas de desarrollo modernas permiten la creación y depuración de programas embebidos de manera accesible, facilitando la práctica y el aprendizaje en el campo de la programación para microcontroladores.