De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

Un sistema integrado en una tarjeta enchufable con procesador, memoria, fuente de alimentación e interfaces externas

Un sistema integrado es un sistema informático, una combinación de un procesador de computadora , memoria de computadora y dispositivos periféricos de entrada / salida , que tiene una función dedicada dentro de un sistema mecánico o electrónico más grande . [1] [2] Está integrado como parte de un dispositivo completo que a menudo incluye hardware eléctrico o electrónico y piezas mecánicas. Debido a que un sistema integrado generalmente controla las operaciones físicas de la máquina en la que está integrado, a menudo tiene restricciones de computación en tiempo real . Los sistemas integrados controlan muchos dispositivos de uso común en la actualidad. [3] En 2009se estimó que el noventa y ocho por ciento de todos los microprocesadores fabricados se utilizaban en sistemas integrados. [4]

Los sistemas integrados modernos a menudo se basan en microcontroladores (es decir, microprocesadores con memoria integrada e interfaces periféricas), pero los microprocesadores ordinarios (que utilizan chips externos para la memoria y los circuitos de interfaz periférica) también son comunes, especialmente en sistemas más complejos. En cualquier caso, los procesadores utilizados pueden ser de tipos que van desde los de propósito general hasta los especializados en una determinada clase de cálculos, o incluso diseñados a medida para la aplicación en cuestión. Una clase estándar común de procesadores dedicados es el procesador de señal digital (DSP).

Dado que el sistema integrado está dedicado a tareas específicas, los ingenieros de diseño pueden optimizarlo para reducir el tamaño y el costo del producto y aumentar la confiabilidad y el rendimiento. Algunos sistemas integrados se producen en masa y se benefician de las economías de escala .

Los sistemas integrados van desde dispositivos portátiles como relojes digitales y reproductores de MP3 , hasta grandes instalaciones estacionarias como controladores de semáforos , controladores lógicos programables y grandes sistemas complejos como vehículos híbridos , sistemas de imágenes médicas y aviónica . La complejidad varía desde baja, con un solo chip de microcontrolador, hasta muy alta con múltiples unidades, periféricos y redes montados dentro de un gran bastidor de equipos .

Historia [ editar ]

Antecedentes [ editar ]

Los orígenes del microprocesador y el microcontrolador se remontan al circuito integrado MOS , que es un chip de circuito integrado fabricado a partir de MOSFET ( transistores de efecto de campo de semiconductores de óxido de metal ) y se desarrolló a principios de la década de 1960. En 1964, los chips MOS habían alcanzado una mayor densidad de transistores y menores costos de fabricación que los chips bipolares . Los chips MOS aumentaron aún más en complejidad a un ritmo predicho por la ley de Moore , lo que llevó a una integración a gran escala (LSI) con cientos de transistores.en un solo chip MOS a finales de la década de 1960. La aplicación de chips MOS LSI a la informática fue la base de los primeros microprocesadores, ya que los ingenieros comenzaron a reconocer que un sistema completo de procesador de computadora podía estar contenido en varios chips MOS LSI. [5]

Los primeros microprocesadores multichip , el Four-Phase Systems AL1 en 1969 y el Garrett AiResearch MP944 en 1970, se desarrollaron con varios chips MOS LSI. El primer microprocesador de un solo chip fue el Intel 4004 , lanzado en 1971. Fue desarrollado por Federico Faggin , utilizando su tecnología MOS de puerta de silicio , junto con los ingenieros de Intel Marcian Hoff y Stan Mazor , y el ingeniero de Busicom Masatoshi Shima . [6]

Desarrollo [ editar ]

Uno de los primeros sistemas integrados reconociblemente modernos fue el Apollo Guidance Computer , [ cita requerida ] desarrollado ca. 1965 por Charles Stark Draper en el Laboratorio de Instrumentación del MIT . Al inicio del proyecto, la computadora de guía Apollo se consideró el elemento más riesgoso en el proyecto Apollo, ya que empleó los circuitos integrados monolíticos recientemente desarrollados para reducir el tamaño y el peso de la computadora.

Uno de los primeros sistemas integrados producidos en masa fue la computadora de guía Autonetics D-17 para el misil Minuteman , lanzada en 1961. Cuando el Minuteman II entró en producción en 1966, la D-17 fue reemplazada por una nueva computadora que representó la primera alta volumen de uso de circuitos integrados.

Desde estas primeras aplicaciones en la década de 1960, los sistemas integrados han bajado de precio y ha habido un aumento espectacular en la capacidad de procesamiento y la funcionalidad. Uno de los primeros microprocesadores , el Intel 4004 (lanzado en 1971), fue diseñado para calculadoras y otros sistemas pequeños, pero aún requería memoria externa y chips de soporte. A principios de la década de 1980, los componentes del sistema de memoria, entrada y salida se habían integrado en el mismo chip que el procesador formando un microcontrolador . Los microcontroladores encuentran aplicaciones donde una computadora de propósito general sería demasiado costosa. A medida que disminuyó el costo de los microprocesadores y microcontroladores, aumentó la prevalencia de los sistemas integrados.

Hoy en día, un microcontrolador de costo comparativamente bajo puede programarse para cumplir la misma función que una gran cantidad de componentes separados. Con los microcontroladores, se volvió factible reemplazar, incluso en productos de consumo, costosos componentes analógicos basados ​​en perillas , como potenciómetros y capacitores variables con botones o perillas de arriba / abajo leídos por un microprocesador. Aunque en este contexto un sistema integrado suele ser más complejo que una solución tradicional, la mayor parte de la complejidad está contenida en el propio microcontrolador. Es posible que se necesiten muy pocos componentes adicionales y la mayor parte del esfuerzo de diseño se encuentra en el software. El prototipo y la prueba de software pueden ser más rápidos en comparación con el diseño y la construcción de un nuevo circuito sin un procesador integrado.

Aplicaciones [ editar ]

Subconjunto de ordenador integrado para máquina de votación electrónica Accupoll [7]

Los sistemas integrados se encuentran comúnmente en aplicaciones de consumo, industriales, automotrices , electrodomésticos , médicas, de telecomunicaciones, comerciales y militares.

Los sistemas de telecomunicaciones emplean numerosos sistemas integrados, desde conmutadores telefónicos para la red hasta teléfonos móviles en el usuario final . Las redes de computadoras utilizan enrutadores dedicados y puentes de red para enrutar datos.

Los productos electrónicos de consumo incluyen reproductores de MP3 , televisores , teléfonos móviles , consolas de videojuegos , cámaras digitales , receptores de GPS e impresoras . Los electrodomésticos, como hornos microondas , lavadoras y lavavajillas , incluyen sistemas integrados para brindar flexibilidad, eficiencia y características. Los sistemas avanzados de HVAC utilizan termostatos en red para controlar de manera más precisa y eficiente la temperatura que puede cambiar según la hora del día y la estación . Automatización del hogarutiliza redes alámbricas e inalámbricas que se pueden usar para controlar luces, clima, seguridad, audio / visual, vigilancia, etc., todos los cuales usan dispositivos integrados para detectar y controlar.

Los sistemas de transporte desde el vuelo hasta los automóviles utilizan cada vez más sistemas integrados. Los nuevos aviones contienen aviónica avanzada , como sistemas de guía inercial y receptores GPS, que también tienen requisitos de seguridad considerables. Varios motores eléctricos ( motores de CC sin escobillas , motores de inducción y motores de CC ) utilizan controladores de motor electrónicos . Los automóviles , los vehículos eléctricos y los vehículos híbridos utilizan cada vez más sistemas integrados para maximizar la eficiencia y reducir la contaminación. Otros sistemas de seguridad automotriz que utilizan sistemas integrados incluyen el sistema de frenos antibloqueo (ABS),Control electrónico de estabilidad (ESC / ESP), control de tracción (TCS) y tracción a las cuatro ruedas automática .

Los equipos médicos utilizan sistemas integrados para el monitoreo y diversas imágenes médicas ( PET , SPECT , CT y MRI ) para inspecciones internas no invasivas. Los sistemas integrados dentro de los equipos médicos a menudo funcionan con computadoras industriales. [8]

Los sistemas integrados se utilizan para sistemas críticos para la seguridad . A menos que estén conectados a redes cableadas o inalámbricas a través de un dispositivo celular 3G en el chip u otros métodos para fines de control y monitoreo de IoT, estos sistemas pueden aislarse de la piratería y, por lo tanto, ser más seguros. [ cita requerida ] Para la seguridad contra incendios, los sistemas pueden diseñarse para tener una mayor capacidad para manejar temperaturas más altas y seguir funcionando. En lo que respecta a la seguridad, los sistemas integrados pueden ser autosuficientes y poder lidiar con sistemas eléctricos y de comunicación cortados.

Los dispositivos inalámbricos en miniatura llamados motas son sensores inalámbricos conectados en red. La red de sensores inalámbricos hace uso de la miniaturización que es posible gracias al diseño de IC avanzado para acoplar subsistemas inalámbricos completos a sensores sofisticados, lo que permite a las personas y empresas medir una gran cantidad de cosas en el mundo físico y actuar sobre esta información a través de sistemas de control y monitoreo. Estas motas son completamente autónomas y normalmente funcionarán con una fuente de batería durante años antes de que sea necesario cambiarlas o cargarlas.

Características [ editar ]

Los sistemas integrados están diseñados para realizar una tarea específica, en lugar de ser una computadora de propósito general para múltiples tareas. Algunos también tienen limitaciones de rendimiento en tiempo real que deben cumplirse, por razones como la seguridad y la facilidad de uso; otros pueden tener requisitos de rendimiento bajos o nulos, lo que permite simplificar el hardware del sistema para reducir los costos.

Los sistemas integrados no siempre son dispositivos independientes. Muchos sistemas integrados constan de piezas pequeñas dentro de un dispositivo más grande que tiene un propósito más general. Por ejemplo, la Gibson Robot Guitar cuenta con un sistema integrado para afinar las cuerdas, pero el propósito general de la Robot Guitar es, por supuesto, tocar música. [9] De manera similar, un sistema integrado en un automóvil proporciona una función específica como un subsistema del propio automóvil.

e-con Systems eSOM270 y eSOM300 Computadora en módulos

Las instrucciones del programa escritas para los sistemas integrados se denominan firmware y se almacenan en una memoria de solo lectura o en chips de memoria flash . Funcionan con recursos de hardware informáticos limitados: poca memoria, teclado o pantalla pequeños o inexistentes.

Interfaz de usuario [ editar ]

Interfaz de usuario de texto del sistema integrado mediante MicroVGA [nb 1]

Los sistemas integrados van desde ninguna interfaz de usuario , en sistemas dedicados solo a una tarea, hasta complejas interfaces gráficas de usuario que se asemejan a los sistemas operativos de escritorio de las computadoras modernas. Los dispositivos integrados simples utilizan botones , LED , LCD gráficos o de caracteres ( LCD HD44780, por ejemplo) con un sistema de menú simple . Los dispositivos más sofisticados que usan una pantalla gráfica con sensor táctil o teclas programables en el borde de la pantalla brindan flexibilidad al tiempo que minimizan el espacio utilizado: el significado de los botones puede cambiar con la pantalla y la selección implica el comportamiento natural de apuntar a lo que se desea.

Algunos sistemas proporcionan una interfaz de usuario de forma remota con la ayuda de una conexión en serie (por ejemplo, RS-232 ) o de red (por ejemplo, Ethernet ). Este enfoque amplía las capacidades del sistema integrado, evita el costo de una pantalla, simplifica BSP y permite a los diseñadores crear una interfaz de usuario enriquecida en la PC. Un buen ejemplo de esto es la combinación de un servidor HTTP integrado que se ejecuta en un dispositivo integrado (como una cámara IP o un enrutador de red ). La interfaz de usuario se muestra en un navegador web en una PC conectada al dispositivo.

Procesadores en sistemas integrados [ editar ]

Ejemplos de propiedades de las computadoras integradas típicas, en comparación con sus contrapartes de uso general, son el bajo consumo de energía, el tamaño pequeño, los rangos operativos resistentes y el bajo costo por unidad. Esto tiene el precio de unos recursos de procesamiento limitados. A pesar de esta limitación, se pueden diseñar técnicas inteligentes para, por ejemplo, gestionar el consumo de energía de los sistemas integrados. [10] [11]

Los procesadores integrados se pueden dividir en dos categorías amplias. Los microprocesadores ordinarios (μP) utilizan circuitos integrados separados para la memoria y los periféricos. Los microcontroladores (μC) tienen periféricos en chip, lo que reduce el consumo de energía, el tamaño y el costo. A diferencia del mercado de las computadoras personales, se utilizan muchas arquitecturas de CPU básicas diferentes, ya que el software se desarrolla a medida para una aplicación y no es un producto básico instalado por el usuario final. Se utilizan tanto Von Neumann como varios grados de arquitecturas de Harvard . RISCasí como también se encuentran procesadores no RISC. Las longitudes de las palabras varían de 4 bits a 64 bits y más, aunque las más típicas siguen siendo de 8/16 bits. La mayoría de las arquitecturas vienen en una gran cantidad de variantes y formas diferentes, muchas de las cuales también son fabricadas por varias compañías diferentes.

Se han desarrollado numerosos microcontroladores para su uso en sistemas integrados. Los microprocesadores de uso general también se utilizan en sistemas integrados, pero generalmente requieren más circuitos de soporte que los microcontroladores.

Tableros de computadora listos para usar [ editar ]

PC / 104 y PC / 104 + son ejemplos de estándares para placas de computadora listas para usar destinadas a sistemas pequeños, embebidos y robustos de bajo volumen, en su mayoría basados ​​en x86. Estos suelen ser físicamente pequeños en comparación con una PC estándar, aunque siguen siendo bastante grandes en comparación con la mayoría de los sistemas integrados simples (8/16 bits). A menudo utilizan DOS , Linux , NetBSD o un sistema operativo integrado en tiempo real como MicroC / OS-II , QNX o VxWorks . A veces, estas placas utilizan procesadores que no son x86.

En ciertas aplicaciones, donde el tamaño pequeño o la eficiencia energética no son preocupaciones principales, los componentes usados ​​pueden ser compatibles con los usados ​​en computadoras personales x86 de uso general. Las placas como la gama VIA EPIA ayudan a cerrar la brecha al ser compatibles con PC pero altamente integradas, físicamente más pequeñas o con otros atributos que las hacen atractivas para los ingenieros integrados. La ventaja de este enfoque es que se pueden utilizar componentes básicos de bajo costo junto con las mismas herramientas de desarrollo de software que se utilizan para el desarrollo de software en general. Los sistemas construidos de esta manera todavía se consideran integrados, ya que están integrados en dispositivos más grandes y cumplen una única función. Ejemplos de dispositivos que pueden adoptar este enfoque son los cajeros automáticos y las máquinas recreativas., que contienen código específico de la aplicación.

Sin embargo, la mayoría de las placas de sistemas integrados listas para usar no están centradas en la PC y no utilizan los buses ISA o PCI. Cuando se trata de un procesador de sistema en un chip , puede haber pocos beneficios de tener un bus estandarizado que conecte componentes discretos, y el entorno para las herramientas de hardware y software puede ser muy diferente.

Un estilo de diseño común utiliza un módulo de sistema pequeño, quizás del tamaño de una tarjeta de visita, que contiene chips BGA de alta densidad , como periféricos y un procesador de sistema en un chip basado en ARM , memoria flash externa para almacenamiento y DRAM para tiempo de ejecución. memoria. El proveedor del módulo generalmente proporcionará software de arranque y se asegurará de que haya una selección de sistemas operativos, que generalmente incluyen Linux y algunas opciones en tiempo real. Estos módulos pueden ser fabricados en gran volumen por organizaciones familiarizadas con sus problemas de pruebas especializadas y combinados con placas madre personalizadas de mucho menor volumen con periféricos externos específicos de la aplicación.

Implementation of embedded systems has advanced so that they can easily be implemented with already-made boards that are based on worldwide accepted platforms. These platforms include, but are not limited to, Arduino and Raspberry Pi.

ASIC and FPGA solutions[edit]

A common array for very-high-volume embedded systems is the system on a chip (SoC) that contains a complete system consisting of multiple processors, multipliers, caches and interfaces on a single chip. SoCs can be implemented as an application-specific integrated circuit (ASIC) or using a field-programmable gate array (FPGA).

Peripherals[edit]

A close-up of the SMSC LAN91C110 (SMSC 91x) chip, an embedded Ethernet chip

Embedded systems talk with the outside world via peripherals, such as:

  • Serial Communication Interfaces (SCI): RS-232, RS-422, RS-485, etc.
  • Synchronous Serial Communication Interface: I2C, SPI, SSC and ESSI (Enhanced Synchronous Serial Interface)
  • Universal Serial Bus (USB)
  • Multi Media Cards (SD cards, Compact Flash, etc.)
  • Networks: Ethernet, LonWorks, etc.
  • Fieldbuses: CAN-Bus, LIN-Bus, PROFIBUS, etc.
  • Timers: PLL(s), Capture/Compare and Time Processing Units
  • Discrete IO: aka General Purpose Input/Output (GPIO)
  • Analog to Digital/Digital to Analog (ADC/DAC)
  • Debugging: JTAG, ISP, BDM Port, BITP, and DB9 ports.

Tools[edit]

As with other software, embedded system designers use compilers, assemblers, and debuggers to develop embedded system software. However, they may also use some more specific tools:

  • In circuit debuggers or emulators (see next section).
  • Utilities to add a checksum or CRC to a program, so the embedded system can check if the program is valid.
  • For systems using digital signal processing, developers may use a math workbench to simulate the mathematics.
  • System-level modeling and simulation tools help designers to construct simulation models of a system with hardware components such as processors, memories, DMA, interfaces, buses and software behavior flow as a state diagram or flow diagram using configurable library blocks. Simulation is conducted to select the right components by performing power vs. performance trade-off, reliability analysis and bottleneck analysis. Typical reports that help a designer to make architecture decisions includes application latency, device throughput, device utilization, power consumption of the full system as well as device-level power consumption.
  • A model-based development tool creates and simulates graphical data flow and UML state chart diagrams of components like digital filters, motor controllers, communication protocol decoding and multi-rate tasks.
  • Custom compilers and linkers may be used to optimize specialized hardware.
  • An embedded system may have its own special language or design tool, or add enhancements to an existing language such as Forth or Basic.
  • Another alternative is to add a real-time operating system or embedded operating system
  • Modeling and code generating tools often based on state machines

Software tools can come from several sources:

  • Software companies that specialize in the embedded market
  • Ported from the GNU software development tools
  • Sometimes, development tools for a personal computer can be used if the embedded processor is a close relative to a common PC processor

As the complexity of embedded systems grows, higher-level tools and operating systems are migrating into machinery where it makes sense. For example, cellphones, personal digital assistants and other consumer computers often need significant software that is purchased or provided by a person other than the manufacturer of the electronics. In these systems, an open programming environment such as Linux, NetBSD, OSGi or Embedded Java is required so that the third-party software provider can sell to a large market.

Embedded systems are commonly found in consumer, cooking, industrial, automotive, and medical applications. Some examples of embedded systems are MP3 players, mobile phones, video game consoles, digital cameras, DVD players, and GPS. Household appliances, such as microwave ovens, washing machines and dishwashers, include embedded systems to provide flexibility and efficiency.

Debugging[edit]

Embedded debugging may be performed at different levels, depending on the facilities available. The different metrics that characterize the different forms of embedded debugging are: does it slow down the main application, how close is the debugged system or application to the actual system or application, how expressive are the triggers that can be set for debugging (e.g., inspecting the memory when a particular program counter value is reached), and what can be inspected in the debugging process (such as, only memory, or memory and registers, etc.).

From simplest to most sophisticated they can be roughly grouped into the following areas:

  • Interactive resident debugging, using the simple shell provided by the embedded operating system (e.g. Forth and Basic)
  • External debugging using logging or serial port output to trace operation using either a monitor in flash or using a debug server like the Remedy Debugger that even works for heterogeneous multicore systems.
  • An in-circuit debugger (ICD), a hardware device that connects to the microprocessor via a JTAG or Nexus interface.[12] This allows the operation of the microprocessor to be controlled externally, but is typically restricted to specific debugging capabilities in the processor.
  • An in-circuit emulator (ICE) replaces the microprocessor with a simulated equivalent, providing full control over all aspects of the microprocessor.
  • A complete emulator provides a simulation of all aspects of the hardware, allowing all of it to be controlled and modified, and allowing debugging on a normal PC. The downsides are expense and slow operation, in some cases up to 100 times slower than the final system.
  • For SoC designs, the typical approach is to verify and debug the design on an FPGA prototype board. Tools such as Certus[13] are used to insert probes in the FPGA RTL that make signals available for observation. This is used to debug hardware, firmware and software interactions across multiple FPGA with capabilities similar to a logic analyzer.
  • Software-only debuggers have the benefit that they do not need any hardware modification but have to carefully control what they record in order to conserve time and storage space.[14]

Unless restricted to external debugging, the programmer can typically load and run software through the tools, view the code running in the processor, and start or stop its operation. The view of the code may be as HLL source-code, assembly code or mixture of both.

Because an embedded system is often composed of a wide variety of elements, the debugging strategy may vary. For instance, debugging a software- (and microprocessor-) centric embedded system is different from debugging an embedded system where most of the processing is performed by peripherals (DSP, FPGA, and co-processor). An increasing number of embedded systems today use more than one single processor core. A common problem with multi-core development is the proper synchronization of software execution. In this case, the embedded system design may wish to check the data traffic on the busses between the processor cores, which requires very low-level debugging, at signal/bus level, with a logic analyzer, for instance.

Tracing[edit]

Real-time operating systems (RTOS) often supports tracing of operating system events. A graphical view is presented by a host PC tool, based on a recording of the system behavior. The trace recording can be performed in software, by the RTOS, or by special tracing hardware. RTOS tracing allows developers to understand timing and performance issues of the software system and gives a good understanding of the high-level system behaviors.

Reliability[edit]

Embedded systems often reside in machines that are expected to run continuously for years without errors, and in some cases recover by themselves if an error occurs. Therefore, the software is usually developed and tested more carefully than that for personal computers, and unreliable mechanical moving parts such as disk drives, switches or buttons are avoided.

Specific reliability issues may include:

  • The system cannot safely be shut down for repair, or it is too inaccessible to repair. Examples include space systems, undersea cables, navigational beacons, bore-hole systems, and automobiles.
  • The system must be kept running for safety reasons. "Limp modes" are less tolerable. Often backups are selected by an operator. Examples include aircraft navigation, reactor control systems, safety-critical chemical factory controls, train signals.
  • The system will lose large amounts of money when shut down: Telephone switches, factory controls, bridge and elevator controls, funds transfer and market making, automated sales and service.

A variety of techniques are used, sometimes in combination, to recover from errors—both software bugs such as memory leaks, and also soft errors in the hardware:

  • watchdog timer that resets the computer unless the software periodically notifies the watchdog subsystems with redundant spares that can be switched over to software "limp modes" that provide partial function
  • Designing with a Trusted Computing Base (TCB) architecture[15] ensures a highly secure & reliable system environment
  • A hypervisor designed for embedded systems is able to provide secure encapsulation for any subsystem component so that a compromised software component cannot interfere with other subsystems, or privileged-level system software.[16] This encapsulation keeps faults from propagating from one subsystem to another, thereby improving reliability. This may also allow a subsystem to be automatically shut down and restarted on fault detection.
  • Immunity Aware Programming

High vs. low volume[edit]

For high volume systems such as portable music players or mobile phones, minimizing cost is usually the primary design consideration. Engineers typically select hardware that is just “good enough” to implement the necessary functions.

For low-volume or prototype embedded systems, general-purpose computers may be adapted by limiting the programs or by replacing the operating system with a real-time operating system.

Embedded software architectures[edit]

In 1978 National Electrical Manufacturers Association released a standard for programmable microcontrollers, including almost any computer-based controllers, such as single board computers, numerical, and event-based controllers.

There are several different types of software architecture in common use today.

Simple control loop[edit]

In this design, the software simply has a loop. The loop calls subroutines, each of which manages a part of the hardware or software. Hence it is called a simple control loop or control loop.

Interrupt-controlled system[edit]

Some embedded systems are predominantly controlled by interrupts. This means that tasks performed by the system are triggered by different kinds of events; an interrupt could be generated, for example, by a timer in a predefined frequency, or by a serial port controller receiving a byte.

These kinds of systems are used if event handlers need low latency, and the event handlers are short and simple. Usually, these kinds of systems run a simple task in a main loop also, but this task is not very sensitive to unexpected delays.

Sometimes the interrupt handler will add longer tasks to a queue structure. Later, after the interrupt handler has finished, these tasks are executed by the main loop. This method brings the system close to a multitasking kernel with discrete processes.

Cooperative multitasking[edit]

A non-preemptive multitasking system is very similar to the simple control loop scheme, except that the loop is hidden in an API.[3][1] The programmer defines a series of tasks, and each task gets its own environment to “run” in. When a task is idle, it calls an idle routine, usually called “pause”, “wait”, “yield”, “nop” (stands for no operation), etc.

The advantages and disadvantages are similar to that of the control loop, except that adding new software is easier, by simply writing a new task, or adding to the queue.

Preemptive multitasking or multi-threading[edit]

In this type of system, a low-level piece of code switches between tasks or threads based on a timer (connected to an interrupt). This is the level at which the system is generally considered to have an "operating system" kernel. Depending on how much functionality is required, it introduces more or less of the complexities of managing multiple tasks running conceptually in parallel.

As any code can potentially damage the data of another task (except in larger systems using an MMU) programs must be carefully designed and tested, and access to shared data must be controlled by some synchronization strategy, such as message queues, semaphores or a non-blocking synchronization scheme.

Because of these complexities, it is common for organizations to use a real-time operating system (RTOS), allowing the application programmers to concentrate on device functionality rather than operating system services, at least for large systems; smaller systems often cannot afford the overhead associated with a generic real-time system, due to limitations regarding memory size, performance, or battery life. The choice that an RTOS is required brings in its own issues, however, as the selection must be made prior to starting to the application development process. This timing forces developers to choose the embedded operating system for their device based upon current requirements and so restricts future options to a large extent.[17] The restriction of future options becomes more of an issue as product life decreases. Additionally, the level of complexity is continuously growing as devices are required to manage variables such as serial, USB, TCP/IP, Bluetooth, Wireless LAN, trunk radio, multiple channels, data and voice, enhanced graphics, multiple states, multiple threads, numerous wait states and so on. These trends are leading to the uptake of embedded middleware in addition to a real-time operating system.

Microkernels and exokernels[edit]

A microkernel is a logical step up from a real-time OS. The usual arrangement is that the operating system kernel allocates memory and switches the CPU to different threads of execution. User-mode processes implement major functions such as file systems, network interfaces, etc.

In general, microkernels succeed when task switching and intertask communication is fast and fail when they are slow.

Exokernels communicate efficiently by normal subroutine calls. The hardware and all the software in the system are available to and extensible by application programmers.

Monolithic kernels[edit]

In this case, a relatively large kernel with sophisticated capabilities is adapted to suit an embedded environment. This gives programmers an environment similar to a desktop operating system like Linux or Microsoft Windows, and is therefore very productive for development; on the downside, it requires considerably more hardware resources, is often more expensive, and, because of the complexity of these kernels, can be less predictable and reliable.

Common examples of embedded monolithic kernels are embedded Linux, VXWorks and Windows CE.

Despite the increased cost in hardware, this type of embedded system is increasing in popularity, especially on the more powerful embedded devices such as wireless routers and GPS navigation systems. Here are some of the reasons:

  • Ports to common embedded chip sets are available.
  • They permit re-use of publicly available code for device drivers, web servers, firewalls, and other code.
  • Development systems can start out with broad feature-sets, and then the distribution can be configured to exclude unneeded functionality, and save the expense of the memory that it would consume.
  • Many engineers believe that running application code in user mode is more reliable and easier to debug, thus making the development process easier and the code more portable.[citation needed]
  • Features requiring faster response than can be guaranteed can often be placed in hardware.

Additional software components[edit]

In addition to the core operating system, many embedded systems have additional upper-layer software components. These components consist of networking protocol stacks like CAN, TCP/IP, FTP, HTTP, and HTTPS, and also included storage capabilities like FAT and flash memory management systems. If the embedded device has audio and video capabilities, then the appropriate drivers and codecs will be present in the system. In the case of the monolithic kernels, many of these software layers are included. In the RTOS category, the availability of the additional software components depends upon the commercial offering.

Domain-specific architectures[edit]

In the automotive sector, AUTOSAR is a standard architecture for embedded software.

See also[edit]

  • Communications server
  • Cyber-physical system
  • DSP
  • Electronic control unit
  • Hypervisor
  • Embedded operating systems
  • Embedded software
  • Firmware
  • FPGA
  • Information appliance
  • Microprocessor
  • Microcontroller
  • Silicon compiler
  • Real-time operating system
  • Software engineering
  • System on a chip
  • System on module
  • Ubiquitous computing
  • Photonically Optimized Embedded Microprocessors

Notes[edit]

  1. ^ For more details of MicroVGA see this PDF.

References[edit]

  1. ^ a b Michael Barr. "Embedded Systems Glossary". Neutrino Technical Library. Retrieved 2007-04-21.
  2. ^ Heath, Steve (2003). Embedded systems design. EDN series for design engineers (2 ed.). Newnes. p. 2. ISBN 978-0-7506-5546-0. An embedded system is a microprocessor based system that is built to control a function or a range of functions.
  3. ^ a b Michael Barr; Anthony J. Massa (2006). "Introduction". Programming embedded systems: with C and GNU development tools. O'Reilly. pp. 1–2. ISBN 978-0-596-00983-0.
  4. ^ Barr, Michael (1 August 2009). "Real men program in C". Embedded Systems Design. TechInsights (United Business Media). p. 2. Retrieved 2009-12-23.
  5. ^ Shirriff, Ken (30 August 2016). "The Surprising Story of the First Microprocessors". IEEE Spectrum. Institute of Electrical and Electronics Engineers. 53 (9): 48–54. doi:10.1109/MSPEC.2016.7551353. S2CID 32003640. Retrieved 13 October 2019.
  6. ^ "1971: Microprocessor Integrates CPU Function onto a Single Chip". The Silicon Engine. Computer History Museum. Retrieved 22 July 2019.
  7. ^ "Electronic Frontier Foundation". Electronic Frontier Foundation.
  8. ^ Embedded Systems Dell OEM Solutions | Dell. Content.dell.com (2011-01-04). Retrieved on 2013-02-06.
  9. ^ David Carey (2008-04-22). "Under the Hood: Robot Guitar embeds autotuning". Embedded Systems Design. Archived from the original on 2008-07-08.
  10. ^ C.Alippi: Intelligence for Embedded Systems. Springer, 2014, 283pp, ISBN 978-3-319-05278-6.
  11. ^ S. Mittal, "A survey of techniques for improving energy efficiency in embedded computing systems", IJCAET, 6(4), 440–459, 2014.
  12. ^ Tancreti, Matthew; Hossain, Mohammad Sajjad; Bagchi, Saurabh; Raghunathan, Vijay (2011). "Aveksha: A Hardware-software Approach for Non-intrusive Tracing and Profiling of Wireless Embedded Systems". Proceedings of the 9th ACM Conference on Embedded Networked Sensor Systems. SenSys '11. New York, NY, USA: ACM: 288–301. doi:10.1145/2070942.2070972. ISBN 9781450307185. S2CID 14769602.
  13. ^ "Tektronix Shakes Up Prototyping, Embedded Instrumentation Boosts Boards to Emulator Status". Electronic Engineering Journal. 2012-10-30. Retrieved 2012-10-30.
  14. ^ Tancreti, Matthew; Sundaram, Vinaitheerthan; Bagchi, Saurabh; Eugster, Patrick (2015). "TARDIS: Software-only System-level Record and Replay in Wireless Sensor Networks". Proceedings of the 14th International Conference on Information Processing in Sensor Networks. IPSN '15. New York, NY, USA: ACM: 286–297. doi:10.1145/2737095.2737096. ISBN 9781450334754. S2CID 10120929.
  15. ^ Heiser, Gernot (December 2007). "Your System is secure? Prove it!" (PDF). ;login:. 2 (6): 35–8.
  16. ^ Moratelli, C; Johann, S; Neves, M; Hessel, F (2016). "Embedded virtualization for the design of secure IoT applications". 2016 International Symposium on Rapid System Prototyping (RSP): 2–6. doi:10.1145/2990299.2990301. ISBN 9781450345354. S2CID 17466572. Retrieved 2 February 2018.
  17. ^ "Working across Multiple Embedded Platforms" (PDF). clarinox. Retrieved 2010-08-17.

Further reading[edit]

  • John Catsoulis (May 2005). Designing Embedded Hardware, 2nd Edition. O'Reilly. ISBN 0-596-00755-8.
  • James M. Conrad; Alexander G. Dean (September 2011). Embedded Systems, An Introduction Using the Renesas RX62N Microcontroller. Micrium. ISBN 978-1935-7729-96.
  • Klaus Elk (August 2016). Embedded Software Development for the Internet Of Things, The Basics, The Technologies and Best Practices. ISBN 978-1534602533.

External links[edit]

  • Embedded Systems course with mbed YouTube, ongoing from 2015
  • Trends in Cyber Security and Embedded Systems Dan Geer, November 2013
  • Modern Embedded Systems Programming Video Course YouTube, ongoing from 2013
  • Embedded Systems Week (ESWEEK) yearly event with conferences, workshops and tutorials covering all aspects of embedded systems and software
  • Workshop on Embedded and Cyber-Physical Systems Education, workshop covering educational aspects of embedded systems