Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Embedded system
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Characteristics== Embedded systems are designed to perform a specific task, in contrast with general-purpose computers designed for multiple tasks. Some have [[Real-time computing|real-time]] performance constraints that must be met, for reasons such as safety and usability; others may have low or no performance requirements, allowing the system hardware to be simplified to reduce costs. Embedded systems are not always standalone devices. Many embedded systems are a small part within a larger device that serves a more general purpose. For example, the [[Gibson Robot Guitar]] features an embedded system for tuning the strings, but the overall purpose of the Robot Guitar is to play music.<ref>{{cite magazine |url=http://www.embedded.com/underthehood/207401418 |title=Under the Hood: Robot Guitar embeds autotuning |archive-url=https://web.archive.org/web/20080708195311/http://embedded.com/underthehood/207401418 |archive-date=2008-07-08 |author=David Carey |date=2008-04-22 |magazine=Embedded Systems Design}}</ref> Similarly, an embedded system in an [[automobile]] provides a specific function as a subsystem of the car itself. [[File:ESOM270 eSOM300 Computer on Modules.jpg|thumb|e-con Systems eSOM270 & eSOM300 Computer on Modules]] The program instructions written for embedded systems are referred to as [[firmware]], and are stored in read-only memory or [[flash memory]] chips. They run with limited computer hardware resources: little memory, small or non-existent keyboard or screen. ===User interfaces=== [[File:MicroVGA TUI demoapp.jpg|thumb|Embedded system [[text user interface]] using MicroVGA<ref group="nb" name="MicroVGA">For more details of MicroVGA see this [http://www.microvga.com/pdf/uvga-text-ds.pdf PDF].</ref>]] Embedded systems range from [[Headless computer|no user interface]] at all, in systems dedicated to one task, to complex [[graphical user interface]]s that resemble modern computer desktop operating systems. Simple embedded devices use [[Push-button|buttons]], [[light-emitting diode]]s (LED), graphic or character [[liquid-crystal display]]s (LCD) with a simple [[menu (computing)|menu system]]. More sophisticated devices that use a graphical screen with [[touch screen|touch sensing]] or screen-edge [[soft key]]s provide flexibility while minimizing space used: the meaning of the buttons can change with the screen, and selection involves the natural behavior of pointing at what is desired. Some systems provide user interface remotely with the help of a serial (e.g. [[RS-232]]) or network (e.g. [[Ethernet]]) connection. This approach extends the capabilities of the embedded system, avoids the cost of a display, simplifies the [[board support package]] (BSP) and allows designers to build a rich user interface on the PC. A good example of this is the combination of an [[embedded HTTP server]] running on an embedded device (such as an [[IP camera]] or a [[network router]]). The user interface is displayed in a [[web browser]] on a PC connected to the device. ===Processors in embedded systems=== Examples of properties of typical embedded computers when compared with general-purpose counterparts, are low power consumption, small size, rugged operating ranges, and low per-unit cost. This comes at the expense of limited processing resources. [[List of common microcontrollers|Numerous microcontrollers]] have been developed for embedded systems use. General-purpose microprocessors are also used in embedded systems, but generally, require more support circuitry than microcontrollers. ====Ready-made computer boards==== [[PC/104]] and PC/104+ are examples of standards for ready-made computer boards intended for small, low-volume embedded and ruggedized systems. These are mostly x86-based and often physically small compared to a standard PC, although still quite large compared to most simple (8/16-bit) embedded systems. They may use [[DOS]], [[FreeBSD]], [[Linux]], [[NetBSD]], [[OpenHarmony]] or an embedded [[real-time operating system]] (RTOS) such as [[MicroC/OS-II]], [[QNX]] or [[VxWorks]]. In certain applications, where small size or power efficiency are not primary concerns, the components used may be compatible with those used in general-purpose x86 personal computers. Boards such as the VIA [[EPIA]] range help to bridge the gap by being PC-compatible but highly integrated, physically smaller or have other attributes making them attractive to embedded engineers. The advantage of this approach is that low-cost commodity components may be used along with the same software development tools used for general software development. Systems built in this way are still regarded as embedded since they are integrated into larger devices and fulfill a single role. Examples of devices that may adopt this approach are [[automated teller machine]]s (ATM) and [[arcade machines]], which contain code specific to the application. However, most ready-made embedded systems boards are not PC-centered and do not use the [[Industry Standard Architecture|ISA]] or [[Peripheral Component Interconnect|PCI]] busses. When a [[system-on-a-chip]] processor is involved, there may be little benefit to having a standardized bus connecting discrete components, and the environment for both hardware and software tools may be very different. One common design style uses a small system module, perhaps the size of a business card, holding high density [[Ball grid array|BGA]] chips such as an [[ARM architecture|ARM]]-based [[system-on-a-chip]] processor and peripherals, external [[flash memory]] for storage, and [[DRAM]] for runtime memory. The module vendor will usually provide boot software and make sure there is a selection of operating systems, usually including [[Linux]] and some real-time choices. These modules can be manufactured in high volume, by organizations familiar with their specialized testing issues, and combined with much lower volume custom mainboards with application-specific external peripherals. Prominent examples of this approach include [[Arduino]] and [[Raspberry Pi]]. ====ASIC and FPGA SoC solutions==== A [[system on a chip]] (SoC) contains a complete system - consisting of multiple processors, multipliers, caches, even different types of memory and commonly various peripherals like interfaces for wired or wireless communication on a single chip. Often graphics processing units (GPU) and DSPs are included such chips. SoCs can be implemented as an [[application-specific integrated circuit]] (ASIC) or using a [[field-programmable gate array]] (FPGA) which typically can be reconfigured. ASIC implementations are common for very-high-volume embedded systems like [[mobile phone]]s and [[smartphone]]s. ASIC or FPGA implementations may be used for not-so-high-volume embedded systems with special needs in kind of signal processing performance, interfaces and reliability, like in avionics. ===Peripherals=== [[File:SMSC LAN91C110 ethernet chip.jpg|thumb|A close-up of the SMSC LAN91C110 (SMSC 91x) chip, an embedded [[Ethernet]] chip]] Embedded systems talk with the outside world via [[peripheral]]s, such as: * [[Serial communication interface]]s (SCI): [[RS-232]], [[RS-422]], [[RS-485]], etc. * [[Synchronous Serial Interface]]: [[I2C]], [[Serial Peripheral Interface Bus|SPI]], SSC and ESSI (Enhanced Synchronous Serial Interface) * [[Universal Serial Bus]] (USB) * Media cards ([[SD card]]s, [[CompactFlash]], etc.) * [[Network interface controller]]: [[Ethernet]], [[WiFi]], etc. * [[Fieldbus]]es: [[CAN bus]], [[Local Interconnect Network|LIN-Bus]], [[PROFIBUS]], etc. * Timers: [[Phase-locked loop]]s, [[programmable interval timer]]s * [[General Purpose Input/Output]] (GPIO) * [[Analog-to-digital converter|Analog-to-digital]] and [[digital-to-analog converter]]s * Debugging: [[JTAG]], [[In-system programming]], [[background debug mode interface]] port, BITP, and DB9 ports. ===Tools=== As with other software, embedded system designers use [[compiler]]s, [[Assembly language|assemblers]], and [[debugger]]s to develop embedded system software. However, they may also use more specific tools: * In circuit debuggers or emulators (see [[#Debugging|next section]]). * Utilities to add a checksum or [[Cyclic redundancy check|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 [[computational notebook]] 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]], [[Direct memory access|DMA]], [[Interface (computing)|interface]]s, 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-offs, reliability analysis and bottleneck analysis. Typical reports that help a designer to make architecture decisions include 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 (programming language)|Forth]] or [[BASIC Stamp|Basic]]. * Another alternative is to add a RTOS or [[embedded operating system]] * Modeling and code generating [[UML tool|tools]] often based on [[UML state machine|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 Embedded software often requires a variety of development tools, including programming languages such as [[C++]], [[Rust (programming language)|Rust]], or [[Python (programming language)|Python]], and frameworks like [[Qt (software)|Qt]] for graphical interfaces. These tools enable developers to create efficient, scalable, and feature-rich applications tailored to the specific requirements of embedded systems. The choice of tools is driven by factors such as real-time performance, integration with hardware, or energy efficiency. As the complexity of embedded systems grows, higher-level tools and operating systems are migrating into machinery where it makes sense. For example, [[cellphone]]s, [[personal digital assistant]]s 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]], [[FreeBSD]], [[OSGi]] or [[Embedded Java]] is required so that the third-party software provider can sell to a large market.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)