¿Qué tipo de Linux es mejor aprender para el desarrollo y cómo aprenderlo?
Con el desarrollo de la tecnología de la información y la popularización de los productos digitales, los sistemas integrados con tecnología informática, tecnología de chips y tecnología de software como núcleo se han convertido una vez más en un punto caliente en la investigación y aplicación de las comunicaciones actuales. , electrónica de consumo La tendencia a la integración de la tecnología (3C) está tomando forma gradualmente. Las redes ubicuas y la computación ubicua (todo conectado, computación en todas partes) están llevando a los humanos a una nueva sociedad de la información.
1. Sistema integrado
El sistema integrado está centrado en las aplicaciones y se basa en tecnología informática, y el software y el hardware se pueden adaptar, de acuerdo con las funciones, la confiabilidad y los sistemas informáticos especiales con estrictos requisitos. requisitos de coste, tamaño, consumo de energía, etc. La característica más típica de los sistemas integrados es que están estrechamente relacionados con la vida cotidiana de las personas. Cualquier persona común y corriente puede poseer una variedad de productos electrónicos que utilizan tecnología integrada, desde dispositivos microdigitales como MP3 y PDA hasta grandes aparatos de información. El uso de electrodomésticos inteligentes, SIG montados en vehículos y varios nuevos dispositivos integrados ha superado con creces el de las computadoras de uso general. No es de extrañar que Negroponte, un famoso futurista estadounidense, predijera durante su visita a China en enero de 1999 que las herramientas inteligentes integradas se convertirán en el mayor invento de la industria informática después de la PC e Internet en 4 o 5 años.
1.1 Historia y Situación Actual
Aunque los sistemas embebidos sólo se han popularizado en los últimos años, en realidad el concepto de embebido existe desde hace mucho tiempo desde la aparición de los microcontroladores en el mercado. Desde la década de 1970 hasta el uso generalizado de varios microprocesadores y microcontroladores integrados, hoy en día, los sistemas integrados tienen una historia de al menos casi 30 años. A lo largo de la historia del desarrollo de los sistemas integrados, generalmente han pasado por las siguientes cuatro etapas:
Sin etapa de sistema operativo
Las aplicaciones iniciales de los sistemas integrados se basaban en microcomputadoras de un solo chip, y la mayoría de ellos eran programables. Aparece en forma de controlador, que tiene funciones como monitoreo, servo e indicación de equipos. Generalmente se usa en diversos tipos de control industrial y de armas y equipos como aviones y misiles. , no hay soporte del sistema operativo y el sistema solo se puede controlar directamente a través del lenguaje ensamblador. Borre la memoria después de ejecutarlo. Aunque estos dispositivos inicialmente poseían características de aplicación integradas, solo utilizan chips de CPU de 8 bits para ejecutar algunos programas de un solo subproceso, por lo que, estrictamente hablando, no se puede discutir el concepto de "sistema".
Las principales características de los sistemas integrados en esta etapa son: estructura y funciones del sistema relativamente simples, baja eficiencia de procesamiento, pequeña capacidad de almacenamiento y casi ninguna interfaz de usuario. Debido a que este tipo de sistema integrado es fácil de usar y de bajo precio, se ha utilizado ampliamente en el campo del control industrial. Sin embargo, no puede satisfacer las necesidades de los dispositivos de información actuales y otras ocasiones que tienen altos requisitos de eficiencia de ejecución y almacenamiento. capacidad.
Etapa del sistema operativo simple
En la década de 1980, con la mejora de la tecnología microelectrónica, los fabricantes de circuitos integrados comenzaron a integrar microprocesadores, E/S necesarias para aplicaciones integradas. La interfaz O, la interfaz serie. , RAM, ROM y otros componentes se integran en un VLSI, creando un microcontrolador diseñado para E/S y convirtiéndose en una nueva estrella en el campo de los sistemas integrados. Al mismo tiempo, los programadores de sistemas integrados también han comenzado a desarrollar software de aplicaciones integradas basado en algunos "sistemas operativos" simples, lo que ha acortado en gran medida el ciclo de desarrollo y mejorado la eficiencia del desarrollo.
Las principales características de los sistemas integrados en esta etapa son: ha aparecido una gran cantidad de CPU integradas de bajo consumo y alta confiabilidad (como Power PC, etc.), y han comenzado varios sistemas operativos integrados simples. aparecer y ganar popularidad rápidamente. Aunque el sistema operativo integrado en este momento todavía es relativamente simple, ya tiene un cierto grado de compatibilidad y escalabilidad. El kernel es sofisticado y eficiente y se utiliza principalmente para controlar la carga del sistema y monitorear el funcionamiento de las aplicaciones.
Etapa del sistema operativo en tiempo real
En la década de 1990, impulsados por la enorme demanda de control distribuido, fabricación flexible, comunicaciones digitales y dispositivos de información, los sistemas integrados se desarrollaron aún más rápidamente y el DSP Los productos para algoritmos de procesamiento de señales en tiempo real se están desarrollando hacia alta velocidad, alta precisión y bajo consumo de energía. Con la mejora de los requisitos de hardware en tiempo real, la escala de software de los sistemas integrados también ha seguido expandiéndose, y los sistemas operativos multitarea (RTOS) en tiempo real se han formado gradualmente y se han convertido en la corriente principal de los sistemas integrados.
Las principales características de los sistemas integrados en esta etapa son: el rendimiento en tiempo real del sistema operativo ha mejorado enormemente, puede ejecutarse en varios tipos de microprocesadores y es altamente modular y escalable. . En este momento, el sistema operativo integrado ya tiene funciones como administración de archivos y directorios, administración de dispositivos, multitarea, red, interfaz gráfica de usuario (GUI), etc., y proporciona una gran cantidad de interfaces de programas de aplicación (API). permitiendo así el desarrollo de software de aplicación.
Etapa orientada a Internet
El siglo XXI será sin duda la era de Internet y, naturalmente, la demanda de aplicar sistemas integrados a diversos entornos de red es cada vez más fuerte. En la actualidad, la mayoría de los sistemas integrados todavía están aislados de Internet. Con el mayor desarrollo de Internet y la integración cada vez más estrecha de la tecnología de Internet con los dispositivos de información, la tecnología de control industrial, etc., la combinación de dispositivos integrados e Internet es la verdadera. Significado de la tecnología integrada en el futuro.
La llegada de la era de la información y la era digital ha traído enormes oportunidades para el desarrollo de sistemas integrados, y también ha planteado nuevos desafíos a los fabricantes de sistemas integrados. En la actualidad, la combinación de tecnología integrada y tecnología de Internet está impulsando el rápido desarrollo de la tecnología integrada. La investigación y aplicación de sistemas integrados ha producido los siguientes nuevos cambios significativos:
Están surgiendo nuevos microprocesadores uno tras otro. y sistemas integrados El diseño de la estructura propia del sistema operativo es más conveniente para el trasplante y puede admitir más microprocesadores en poco tiempo.
El desarrollo de sistemas integrados se ha convertido en un proyecto sistemático. Los desarrolladores no solo deben proporcionar el sistema de software y hardware integrado en sí, sino también proporcionar potentes herramientas de desarrollo de hardware y paquetes de soporte de software.
Las nuevas tecnologías y conceptos utilizados en las computadoras de uso general han comenzado a trasplantarse gradualmente a sistemas integrados, como bases de datos integradas, agentes móviles, CORBA en tiempo real, etc., y la plataforma de software integrada ha sido mejorado aún más.
Varios tipos de sistemas operativos Linux integrados se están desarrollando rápidamente. Debido a su código fuente abierto, núcleo de sistema pequeño, alta eficiencia de ejecución y estructura de red completa, son muy adecuados para las necesidades de sistemas integrados como. dispositivos de información Actualmente, se ha formado una situación que puede competir eficazmente con sistemas operativos integrados como Windows CE y Palm OS.
Los requisitos de creación de redes e informatización se han vuelto cada vez más importantes con la madurez de la tecnología de Internet y la mejora del ancho de banda. En el pasado, los dispositivos con una sola función, como teléfonos, teléfonos móviles, refrigeradores, hornos microondas, etc. Ya no tienen funciones únicas y sus estructuras se han vuelto más complejas, la interconexión de redes se ha convertido en una tendencia inevitable.
Agilice el núcleo del sistema, optimice los algoritmos clave y reduzca el consumo de energía y los costos de software y hardware.
Proporciona una interfaz multimedia de interacción persona-computadora más amigable.
1.2 Arquitectura
Según la definición del Instituto Internacional de Ingenieros Eléctricos y Electrónicos (IEEE), un sistema integrado es "un dispositivo que controla, monitorea o asiste al funcionamiento de equipos, máquinas y talleres" (dispositivos utilizados para controlar, monitorear o ayudar al funcionamiento de equipos, maquinaria o plantas). En términos generales, la arquitectura de todo el sistema integrado se puede dividir en cuatro partes: procesador integrado, periféricos integrados, sistema operativo integrado y software de aplicación integrado, como se muestra en la Figura 1.
Figura 1 La composición del sistema integrado
Procesador integrado
El núcleo del sistema integrado son varios tipos de procesadores integrados. La mayor diferencia entre uno general. CPU de propósito general y procesador de propósito general es que la mayoría de las CPU integradas funcionan en sistemas especialmente diseñados para grupos de usuarios específicos. Integran en el chip muchas tareas completadas por placas en CPU de uso general, lo que es beneficioso para los sistemas integrados. diseñado para ser miniaturizado y al mismo tiempo ser altamente eficiente y confiable.
La arquitectura de los procesadores integrados ha sufrido una transformación de CISC (Conjunto de instrucciones complejas) a RISC (Conjunto de instrucciones reducido) y RISC compacto. El número de bits ha cambiado de 4 bits, 8 bits, 16. -bit y 32 bits evolucionaron gradualmente a 64 bits. Los procesadores integrados de uso común actualmente se pueden dividir en unidades de microcontrolador integrado de gama baja (Unidad de microcontrolador, MCU), microprocesadores integrados de gama media a alta (Unidad de microprocesador integrado, EMPU) y DSP integrados utilizados en el campo de la informática. Procesador de comunicaciones (Embedded Digital Signal Processor, EDSP) y sistema embebido en chip altamente integrado (System On Chip, SOC).
En la actualidad, casi todos los fabricantes de semiconductores producen procesadores integrados y cada vez más empresas están comenzando a tener departamentos de diseño de procesadores independientes. Según estadísticas incompletas, hay más de 1.000 procesadores integrados en el mundo. Más de 30 series de arquitecturas populares, entre las cuales ARM, PowerPC, MC 68000, MIPS, etc. son las más utilizadas.
Periféricos integrados
En los sistemas de hardware de sistemas integrados, además de los componentes de control central (MCU, DSP, EMPU, SOC), se utilizan para completar el almacenamiento, la comunicación, la depuración, y pantalla Otros componentes, como las funciones auxiliares, en realidad pueden contarse como periféricos integrados. Los dispositivos periféricos integrados de uso común actualmente se pueden dividir en tres categorías según sus funciones: dispositivos de almacenamiento, dispositivos de comunicación y dispositivos de visualización.
Los dispositivos de almacenamiento se utilizan principalmente para almacenar varios tipos de datos. Los más utilizados incluyen memoria volátil estática (RAM, SRAM), memoria dinámica (DRAM) y memoria no volátil (ROM, EPROM, EEPROM, FLASH). ), entre los cuales FLASH se ha utilizado ampliamente en el campo integrado debido a sus ventajas como alta reescribibilidad, rápida velocidad de almacenamiento, gran capacidad de almacenamiento y bajo precio.
La mayoría de los dispositivos de comunicación actuales se pueden utilizar directamente en sistemas integrados, incluida la interfaz RS-232 (interfaz de comunicación en serie), SPI (interfaz periférica en serie), IrDA (interfaz de infrarrojos), I2C (bus de campo) , USB (Interfaz de bus serie universal), Ethernet (Interfaz Ethernet), etc.
Debido a la particularidad de las aplicaciones integradas, se suelen utilizar dispositivos de visualización periféricos como tubos de rayos catódicos (CRT), pantallas de cristal líquido (LCD) y paneles táctiles (Touch Panel).
Sistema operativo integrado
Para que el desarrollo de sistemas integrados sea más cómodo y rápido, se necesitan módulos de software específicamente responsables de gestionar la asignación de memoria, el procesamiento de interrupciones y la programación de tareas. y otras funciones. Este es un sistema operativo integrado. El sistema operativo integrado es un software del sistema que se utiliza para admitir aplicaciones integradas. Es una parte extremadamente importante del sistema integrado. Por lo general, incluye controladores subyacentes relacionados con el hardware, el núcleo del sistema, la interfaz del controlador del dispositivo, los protocolos de comunicación y la interfaz gráfica de usuario (GUI). . )esperar. El sistema operativo integrado tiene las características básicas de un sistema operativo general, como la capacidad de administrar de manera efectiva recursos complejos del sistema, la capacidad de abstraer hardware y la capacidad de proporcionar funciones de biblioteca, controladores, conjuntos de herramientas de desarrollo, etc. Sin embargo, en comparación con los sistemas operativos de propósito general, los sistemas operativos integrados tienen características más distintivas en términos de rendimiento del sistema en tiempo real, dependencia del hardware, solidificación del software y especificidad de la aplicación.
Los sistemas operativos integrados se pueden dividir en dos categorías según los escenarios de aplicación: uno son los sistemas no en tiempo real para productos electrónicos de consumo; dichos dispositivos incluyen asistentes digitales personales (PDA), teléfonos móviles y top boxes (STB), etc.; el otro tipo son los sistemas operativos en tiempo real para control, comunicaciones, medicina y otros campos, como VxWorks de WindRiver Company, QNX de QNX System Software Company, etc. Un sistema en tiempo real es un sistema que puede completar las funciones del sistema dentro de un tiempo específico o determinado, y puede responder rápidamente a eventos externos e internos dentro de un tiempo sincrónico o asincrónico. En los sistemas de tiempo real, la corrección de las operaciones no solo depende de la corrección del diseño lógico, sino que también está relacionada con el momento en que se realizan estas operaciones. Es decir, los sistemas de tiempo real tienen requisitos muy estrictos en materia de lógica y. Si hay una desviación en la lógica y el control del tiempo, habrá graves consecuencias.
Los sistemas en tiempo real miden principalmente la naturaleza en tiempo real del sistema a través de tres indicadores de rendimiento, a saber, tiempo de respuesta (Tiempo de respuesta), tiempo de supervivencia (Tiempo de supervivencia) y rendimiento (Rendimiento):
El tiempo de respuesta es el tiempo que tarda un sistema en tiempo real en reconocer un evento externo y responder;
El tiempo de supervivencia es el tiempo de espera efectivo de los datos, y los datos solo son válidos durante este período;
El rendimiento es el número total de eventos que el sistema puede manejar en un período de tiempo determinado. El rendimiento suele ser menor que el recíproco del tiempo de respuesta promedio.
Los sistemas en tiempo real se pueden dividir en tres tipos: sistemas débiles en tiempo real, sistemas generales en tiempo real y sistemas fuertes en tiempo real basados en el tiempo de respuesta. El propósito del diseño de un sistema débil en tiempo real es hacer que cada tarea se ejecute lo más rápido posible, pero no existe un límite estricto sobre cuánto tiempo debe completarse una tarea. Los sistemas débiles en tiempo real se centran más en si los resultados de ejecución del programa son correctos. o no, además de otros aspectos como el rendimiento de la seguridad del sistema, los requisitos para el tiempo de ejecución de la tarea son relativamente flexibles, el tiempo de respuesta puede ser de decenas de segundos o más. Un sistema general en tiempo real es un compromiso entre un sistema en tiempo real débil y un sistema en tiempo real fuerte. Su tiempo de respuesta puede ser del orden de segundos y se usa ampliamente en equipos de electrónica de consumo. Los sistemas sólidos en tiempo real requieren que cada tarea no solo garantice la exactitud del proceso de ejecución y los resultados, sino que también garantice que la tarea se complete en un tiempo limitado. Por lo general, se requiere que el tiempo de respuesta sea del orden de milisegundos o incluso microsegundos. , que es muy importante para aplicaciones médicas y de seguridad, los sistemas de software y hardware militares son cruciales.
La fecha límite es un concepto importante en los sistemas en tiempo real. Se refiere a los requisitos para los plazos de las tareas. Según el impacto de los plazos en el rendimiento del sistema, los sistemas en tiempo real se pueden dividir en sistemas blandos en tiempo real. (sistemas blandos en tiempo real) y sistema duro en tiempo real (sistema duro en tiempo real). Tiempo real suave significa que, aunque el tiempo de respuesta del sistema es limitado, si el tiempo de respuesta del sistema no puede cumplir con los requisitos, no causará un error fatal o falla en el sistema. Tiempo real duro significa que existen límites estrictos en el sistema; tiempo de respuesta. Si el tiempo de respuesta del sistema no puede cumplir con los requisitos, provocará un error fatal o una falla en el sistema. Si una tarea no se ha completado cuando se alcanza el límite de tiempo, aún es tolerable para los sistemas blandos en tiempo real. Como máximo, solo reducirá el rendimiento del sistema, pero es inaceptable para los sistemas duros en tiempo real debido a las consecuencias de esto. son simplemente inaceptables. Las predicciones pueden ser incluso catastróficas. En los sistemas de tiempo real actuales que están realmente en uso, generalmente se permite que coexistan tanto el tiempo real suave como el duro. Algunos eventos no tienen requisitos de límite de tiempo, mientras que otros eventos tienen límites de tiempo suaves en tiempo real, mientras que aquellos eventos que tienen un límite de tiempo. El impacto crítico en el sistema tiene requisitos de límite de tiempo. Es difícil en tiempo real.
Software de aplicación integrado
El software de aplicación integrado es un software informático que está dirigido a un campo de aplicación específico y se basa en una plataforma de hardware fija para lograr los objetivos esperados del usuario debido a las tareas del usuario. Puede que existan requisitos de tiempo y precisión, por lo que algunas aplicaciones de software integradas requieren el soporte de un sistema operativo integrado específico.
Existen ciertas diferencias entre el software de aplicación integrado y el software de aplicación normal. No solo requiere su precisión, seguridad y estabilidad para satisfacer las necesidades de las aplicaciones prácticas, sino que también debe optimizarse tanto como sea posible para reducir el consumo de recursos del sistema. reducir los costos de hardware.
1.3 Cuestiones clave
Los sistemas integrados son el producto de la combinación de tecnología informática avanzada, tecnología de semiconductores y tecnología electrónica con aplicaciones específicas en industrias específicas. Por lo tanto, deben ser intensivos en tecnología y. El desarrollo de sistemas integrados es un sistema de integración de conocimientos que requiere mucho capital, es altamente descentralizado y constantemente innovador y está lleno de competencia, oportunidades e innovaciones. Es necesario resolver las siguientes cuestiones clave:
Los campos de aplicación. Los sistemas integrados sofisticados generalmente son todos dispositivos electrónicos pequeños con recursos de sistema relativamente limitados, por lo que los requisitos para el kernel son bastante altos, que son mucho más pequeños que los sistemas operativos tradicionales. Por ejemplo, el sistema integrado distribuido OSE lanzado por ENEA tiene un. núcleo completo de sólo 5 KB.
Los sistemas integrados orientados a aplicaciones suelen estar orientados al usuario, al producto y a aplicaciones específicas. La mayoría de las CPU en sistemas integrados funcionan en un entorno personalizado para grupos de usuarios específicos. Tienen las características de bajo consumo, tamaño pequeño y alta integración. Al diseñar software y hardware, se debe resaltar la eficiencia, se deben eliminar las redundancias y la CPU. adaptarse a las necesidades específicas de los usuarios. Sólo cuando el sistema está configurado correctamente puede lograr un rendimiento ideal.
Simplificación del sistema Por lo general, no existe una diferencia obvia entre el software del sistema y el software de aplicación en los sistemas integrados, y no es necesario que sus funciones e implementaciones sean demasiado complejas. Esto es beneficioso para controlar los costos del sistema, por un lado. y también beneficioso para el otro. Garantizar la seguridad del sistema.
Los sistemas integrados de optimización del rendimiento generalmente requieren un cierto grado de garantía en tiempo real. Para mejorar la velocidad de ejecución y el rendimiento del sistema, el software en los sistemas integrados generalmente se solidifica en el chip de memoria o en el dispositivo de almacenamiento interno. el procesador, en lugar de almacenarlos en medios externos como discos. Dado que la velocidad de computación y la capacidad de almacenamiento de los sistemas integrados están limitadas hasta cierto punto y la mayoría de los sistemas deben tener altas garantías en tiempo real, tienen altos requisitos de calidad del software (especialmente confiabilidad).
Desarrollo profesional El sistema integrado en sí no tiene capacidades de desarrollo independientes y los usuarios no pueden realizar directamente un desarrollo secundario en él. Una vez completado el sistema, si el usuario necesita modificar la función de uno de los programas, debe utilizar un conjunto completo de herramientas y entorno de desarrollo. Las herramientas y entornos de desarrollo especiales en sistemas integrados generalmente se basan en dispositivos de software y hardware en computadoras de uso general, así como en varios analizadores lógicos, osciloscopios de señal mixta, etc.
Volver al principio
2. Linux integrado
Linux se ha convertido en un sistema operativo potente, potente y uno de los bien diseñados, no puede. Solo compite con varios sistemas operativos comerciales tradicionales, pero también logra un rápido desarrollo en el campo emergente de los sistemas operativos integrados. Linux integrado (Linux integrado) se refiere a un sistema operativo Linux especial que es adecuado para aplicaciones integradas específicas después de miniaturizar Linux estándar y solidificarlo en un chip de memoria o microcontrolador con una capacidad de solo unos pocos K o M bytes.
2.1 Ventajas
El desarrollo y la investigación de Linux integrado es un punto importante en el campo de los sistemas operativos. Aproximadamente la mitad de los sistemas integrados que se han desarrollado con éxito utilizan actualmente Linux. La razón por la que Linux puede lograr resultados tan brillantes en el mercado de sistemas integrados es inseparable de sus excelentes características.
Amplio soporte de hardware
Linux puede admitir múltiples arquitecturas como x86, ARM, MIPS, ALPHA, PowerPC, etc. Se ha trasplantado con éxito a docenas de plataformas de hardware y puede ejecutarse en casi todos En todas las CPU populares. Linux tiene un recurso de controladores inusualmente rico, admite una variedad de dispositivos de hardware convencionales y las últimas tecnologías de hardware, e incluso puede ejecutarse en procesadores sin una unidad de administración de memoria (MMU), lo que promueve aún más la aplicación de Linux en sistemas integrados.
El kernel es eficiente y estable
La eficiencia y estabilidad del kernel de Linux han sido verificadas por una gran cantidad de hechos en varios campos. El diseño del kernel de Linux es muy sofisticado y dividido. en programación de procesos, gestión de memoria y proceso. Consta de cinco partes: intercomunicación, sistema de archivos virtual e interfaz de red. Su mecanismo de módulo único puede insertar o eliminar ciertos módulos en el kernel en tiempo real según las necesidades del usuario. Estas características permiten que el kernel del sistema Linux se adapte de manera muy compacta, lo cual es muy adecuado para las necesidades de los sistemas integrados.
Software rico y de código abierto
Linux es un sistema operativo gratuito de código abierto que proporciona a los usuarios el mayor grado de libertad. Dado que los sistemas integrados varían ampliamente, a menudo es necesario personalizarlos. para aplicaciones específicas. Para modificar y optimizar su aplicación, el acceso al código fuente se vuelve fundamental. Los recursos de software de Linux son muy ricos. Casi todos los programas comunes se pueden encontrar en Linux y el número sigue aumentando. Al desarrollar software de aplicación integrado en Linux, generalmente no es necesario empezar desde cero. En lugar de ello, puede elegir un software gratuito similar como prototipo y realizar un desarrollo secundario en él.
Excelentes herramientas de desarrollo
La clave para desarrollar sistemas integrados es la necesidad de un conjunto completo de herramientas de desarrollo y depuración. La herramienta tradicional integrada de desarrollo y depuración es el emulador en circuito (ICE), que proporciona un entorno de simulación completo para el programa de destino reemplazando el microprocesador de la placa de destino, de modo que los desarrolladores puedan comprender claramente el estado de funcionamiento del programa en el El tablero de destino facilita el seguimiento y la depuración del programa. Los emuladores en línea son muy caros y solo son adecuados para la depuración de muy bajo nivel. Si está utilizando Linux integrado, una vez que el software y el hardware puedan admitir las funciones normales del puerto serie, podrá desarrollar y depurar bien sin utilizar un emulador en línea. ahorrando una cantidad considerable de costes de desarrollo. Embedded Linux proporciona a los desarrolladores una cadena de herramientas completa (Tool Chain). Utiliza gcc de GNU como compilador y gdb, kgdb y xgdb como herramientas de depuración. Puede implementar fácilmente todo, desde el nivel de depuración del sistema operativo.
Mecanismo completo de comunicación de red y administración de archivos
Linux ha sido inseparable de Internet desde su nacimiento, admite todos los protocolos de red estándar de Internet y se trasplanta fácilmente a sistemas integrados. Además, Linux también admite sistemas de archivos como ext2, fat16, fat32, romfs, etc., que sientan una buena base para el desarrollo de aplicaciones de sistemas integrados.
2.2 Desafíos
En la actualidad, el auge de la investigación y el desarrollo de los sistemas Linux integrados está en auge y ocupa una gran participación de mercado, además de algunas empresas tradicionales de Linux (como RedHat, MontaVista). , etc.) ) se dedican al desarrollo y aplicación de Linux integrado, empresas famosas como IBM, Intel y Motorola también han comenzado a realizar investigaciones sobre Linux integrado. Aunque las perspectivas son brillantes, por ahora todavía existe una brecha entre los resultados de la investigación sobre Linux integrado y los requisitos reales del mercado. Para desarrollar un sistema Linux integrado verdaderamente maduro, es necesario realizar esfuerzos en los siguientes aspectos.
Mejora del rendimiento en tiempo real del sistema
Aunque Linux se ha aplicado con éxito a varios dispositivos integrados como PDA, teléfonos móviles, televisores para automóviles, decodificadores y dispositivos de red. Aunque todavía se usa en hornos microondas en medicina, no se puede aplicar directamente en situaciones con requisitos de tiempo real muy estrictos, como la aviación, el transporte y el control industrial. utiliza muchas tecnologías para acelerar el funcionamiento y la respuesta del sistema y cumple con el estándar POSIX 1003.1b, pero no es esencialmente un sistema operativo integrado en tiempo real.
La estrategia de programación del kernel de Linux sigue básicamente la del sistema UNIX. Aplicarla directamente al entorno integrado en tiempo real tendrá muchos defectos, como la desactivación de interrupciones al ejecutar el subproceso del kernel, incertidumbre de tiempo en la estrategia de programación de tiempo compartido. y Falta de temporizadores de alta precisión, etc. Por esta razón, usar Linux como sistema operativo subyacente y realizar una transformación en tiempo real para construir un sistema integrado con capacidades de procesamiento en tiempo real es una solución cada vez más popular.
Mejora de la estructura del kernel
El kernel de Linux adopta una estructura monolítica. Todo el kernel es un programa separado y muy grande, lo que permite que todas las partes del sistema se comuniquen directamente. El tiempo de cambio entre tareas y mejora la velocidad de respuesta del sistema, pero no es consistente con las características de pequeña capacidad de almacenamiento y recursos limitados de los sistemas integrados. Los sistemas integrados suelen utilizar otra arquitectura llamada microkernel, es decir, el kernel en sí solo proporciona algunas de las funciones más básicas del sistema operativo, como programación de tareas, administración de memoria, manejo de interrupciones, etc., y es similar al sistema de archivos. Funciones adicionales como ya que los protocolos de red y los protocolos de red se ejecutan en el espacio del usuario y se pueden seleccionar en función de las necesidades reales. Aunque la eficiencia de ejecución de Microkernel no es tan buena como la de Monolithic, reduce en gran medida el tamaño del kernel, facilita el mantenimiento y el trasplante y puede cumplir mejor con los requisitos de los sistemas integrados. Puede considerar transformar la parte del kernel de Linux en un Microkernel para que Linux pueda tener un alto rendimiento y al mismo tiempo cumplir con los requisitos de tamaño pequeño de los sistemas integrados.
Mejorar la plataforma de desarrollo integrada
La introducción de una plataforma de desarrollo integrada para sistemas Linux integrados es un requisito inherente para el desarrollo y la aplicación posteriores de Linux integrado. Tradicionalmente, los sistemas integrados están orientados a aplicaciones específicas, y el software y el hardware deben cooperar estrechamente. Sin embargo, con la expansión continua de la escala de los sistemas integrados y la expansión continua de los campos de aplicación, la aparición de sistemas operativos integrados se ha vuelto inevitable. , porque sólo así los sistemas integrados pueden desarrollarse en una dirección jerárquica y modular. Obviamente, la plataforma de desarrollo integrada integrada también está en línea con la tendencia de desarrollo anterior. Un excelente entorno de desarrollo integrado integrado puede proporcionar funciones de simulación relativamente completas y puede realizar el desarrollo simultáneo de software de aplicación integrado y hardware integrado, eliminando así el "integrado". El desarrollo de software de aplicación tradicional depende del desarrollo de hardware integrado y se basa en el desarrollo de hardware integrado. Una plataforma de desarrollo integrada completa generalmente incluye un compilador, conector, depurador, rastreador, optimizador e interfaz de usuario integrada. Actualmente, Linux está en la investigación de plataformas de personalización de sistemas específicas basadas en interfaces gráficas y sistemas integrados comerciales como Windows CE. Todavía hay una gran brecha en comparación con los sistemas operativos tradicionales, y es necesario mejorar y perfeccionar el entorno de desarrollo integrado general.
Volver al inicio
3. Tecnologías clave
El sistema integrado es un sistema especialmente desarrollado para propósitos específicos. Solo cumple con la función que se espera que se complete. , por lo que su proceso de desarrollo y su entorno de desarrollo son significativamente diferentes del desarrollo de software tradicional.
3.1 Proceso de desarrollo
En el desarrollo de aplicaciones de sistemas integrados, el proceso de desarrollo de todo el sistema se muestra en la Figura 2:
Figura 2 Desarrollo del sistema integrado proceso
Con el desarrollo actual de los sistemas integrados, las plataformas de hardware correspondientes a varios microprocesadores son generalmente universales, fijas y maduras, lo que reduce en gran medida la posibilidad de errores introducidos por el sistema de hardware. Además, debido a que el sistema operativo integrado protege la complejidad del hardware subyacente, los desarrolladores pueden completar la mayor parte del trabajo a través de las funciones API proporcionadas por el sistema operativo, lo que simplifica enormemente el proceso de desarrollo y mejora la estabilidad del sistema. Los desarrolladores de sistemas integrados ahora están liberados del proceso iterativo de diseñar plataformas de hardware y pueden centrarse en satisfacer necesidades específicas.
El sistema integrado suele ser un sistema con recursos limitados, por lo que es difícil, a veces incluso imposible, escribir software directamente en la plataforma de hardware del sistema integrado.
La solución comúnmente utilizada en la actualidad es escribir primero el programa en una computadora de uso general, luego realizar una compilación cruzada para generar un formato de código binario que se pueda ejecutar en la plataforma de destino y, finalmente, descargarlo en una ubicación específica en la plataforma de destino. para correr.
La necesidad de soportar un entorno de desarrollo cruzado (Cross Development Environment) es una característica importante del desarrollo de software de aplicaciones integradas. El entorno de desarrollo cruzado se refiere al entorno para compilar, vincular y depurar el software de aplicaciones integradas. Está estrechamente relacionado con la ejecución del software de aplicación integrado. El entorno del software de aplicación integrado es diferente y generalmente utiliza el modo host/destino, como se muestra en la Figura 3.
Figura 3 Entorno de desarrollo cruzado
El host (Host) es una computadora de uso general (como una PC o una estación de trabajo) que se comunica con la máquina de destino a través de un puerto serie. o interfaz Ethernet. El host tiene abundantes recursos de software y hardware, que incluyen no solo potentes sistemas operativos (como Windows y Linux), sino también una variedad de excelentes herramientas de desarrollo (como WindRiver's Tornado, Embedded Visual C de Microsoft, etc.), que pueden mejorar enormemente. la velocidad y eficiencia del desarrollo de software de aplicaciones integradas.
El objetivo se utiliza generalmente durante el desarrollo de software de aplicación integrado para distinguir el host que se comunica con el sistema integrado. Puede ser el entorno de ejecución real del software de aplicación integrado o puede ser un sistema de simulación que. reemplaza el entorno operativo real, pero los recursos de software y hardware suelen ser limitados. El entorno de desarrollo cruzado de sistemas integrados generalmente incluye compiladores cruzados, depuradores cruzados y simuladores de sistemas. El compilador cruzado se utiliza para generar código en la máquina host que se puede ejecutar en la máquina de destino, mientras que el depurador cruzado y el simulador del sistema. se utilizan para completar la depuración del software integrado entre la máquina host y la máquina de destino. Cuando utilice el modo host/destino para desarrollar software de aplicación integrado, primero utilice los ricos recursos y el buen entorno de desarrollo en el host para desarrollar, simular y depurar el software en la máquina de destino, y luego realizar una compilación cruzada del código de destino generado a través del serial. transferirlo y cargarlo en la máquina de destino, y utilizar un depurador cruzado para analizar y depurar con el soporte del programa de monitoreo o sistema operativo. Finalmente, la máquina de destino se ejecuta independientemente de la máquina host en un entorno específico.
Establecer un entorno de desarrollo cruzado es el primer paso en el desarrollo de software integrado. Actualmente, existen dos tipos principales de entornos de desarrollo cruzado comúnmente utilizados: abiertos y comerciales. El representante típico del entorno abierto de desarrollo cruzado es la cadena de herramientas GNU, que actualmente puede admitir múltiples procesadores como x86, ARM, MIPS y PowerPC. Los entornos comerciales de desarrollo cruzado incluyen principalmente Metrowerks CodeWarrior, ARM Software Development Toolkit, SDS Cross compilador, WindRiver Tornado, Microsoft Embedded Visual C, etc.
3.2 Compilación cruzada y vinculación
Después de completar la codificación del software integrado, es necesario compilarlo y vincularlo para generar código ejecutable, ya que la mayor parte del proceso de desarrollo utiliza Intel. Serie x86 Se lleva a cabo en una computadora de uso general con una CPU, pero los chips de procesador en el entorno de destino son en su mayoría ARM, MIPS, PowerPC, DragonBall y otras series de microprocesadores. Esto requiere compilación cruzada y vinculación en un buen estado. entorno de desarrollo cruzado establecido.
Los compiladores cruzados y los enlazadores cruzados son compiladores y enlazadores que pueden ejecutarse en la máquina host y generar código binario que se puede ejecutar directamente en la máquina de destino. Por ejemplo, en el entorno de desarrollo cruzado gcc basado en la arquitectura ARM, arm-linux-gcc es el compilador cruzado y arm-linux-ld es el entrelazador. Normalmente, no todas las arquitecturas de microprocesadores integrados corresponden a un solo compilador cruzado y enlazador cruzado. Por ejemplo, el entorno de desarrollo cruzado gcc de la arquitectura M68K corresponde a una variedad de compiladores y enlazadores diferentes.
Si está utilizando un archivo ejecutable en formato COFF, debe utilizar m68k-coff-gcc y m68k-coff-ld al compilar el kernel de Linux, y m68k-coff-pic-gcc y m68k- al compilar la aplicación. foto-ld.
Los sistemas integrados generalmente requieren el uso de bibliotecas de funciones más pequeñas durante el proceso de vinculación para que el código ejecutable final generado pueda ser lo más pequeño posible. Por lo tanto, las bibliotecas de funciones especialmente procesadas generalmente se usan en aplicaciones reales. Para los sistemas Linux integrados, la biblioteca de funciones del lenguaje C glibc y la biblioteca de funciones matemáticas libm, que son cada vez más poderosas y de mayor tamaño, ya no pueden satisfacer las necesidades reales. Por lo tanto, sus versiones refinadas uClibc, uClibm y newlib, etc. .
Actualmente, todos los entornos de desarrollo integrados integrados admiten la compilación cruzada y el enlace cruzado, como las cadenas de herramientas WindRiver Tornado y GNU. Después de la compilación cruzada y el enlace cruzado, el software integrado escrito generalmente genera dos tipos de. Archivos ejecutables: archivos ejecutables para depurar y archivos ejecutables para curar.
3.3 Depuración cruzada
Después de compilar y vincular el software integrado, ingresa a la etapa de depuración. La depuración es un vínculo esencial en el proceso de desarrollo de software.