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!
==Embedded software architectures== {{Main|Embedded software}} In 1978 [[National Electrical Manufacturers Association]] released ICS 3-1978, a standard for programmable microcontrollers,<ref>{{cite web |title=FAQs: Programmable Controllers |url=https://www.nema.org/docs/default-source/standards-document-library/faq-programmable-controllers.pdf?sfvrsn=a03312d_2 |access-date=2020-01-10}}</ref> including almost any computer-based controllers, such as [[single-board computer]]s, numerical, and event-based controllers. There are several different types of software architecture in common use. ===Simple control loop=== In this design, the software simply has a [[loop (computing)|loop]] which monitors the input devices. The loop calls [[subroutine]]s, each of which manages a part of the hardware or software. Hence it is called a simple control loop or programmed input-output. ===Interrupt-controlled system=== Some embedded systems are predominantly controlled by [[interrupt]]s. 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 at a predefined interval, or by a serial port controller receiving data. This architecture is used if event handlers need low latency, and the event handlers are short and simple. These 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=== [[Cooperative multitasking]] is very similar to the simple control loop scheme, except that the loop is hidden in an [[API]].<ref name=":0" /><ref name="Barr-glossary" /> 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 which passes control to another task. 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=== In this type of system, a low-level piece of code switches between tasks or threads based on a timer invoking 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 systems using a [[memory management unit]]) programs must be carefully designed and tested, and access to shared data must be controlled by some synchronization strategy such as [[message queue]]s, [[semaphore (programming)|semaphores]] or a [[non-blocking synchronization]] scheme. Because of these complexities, it is common for organizations to use an off-the-shelf RTOS, allowing the application programmers to concentrate on device functionality rather than operating system services. The choice to include an RTOS brings in its own issues, however, as the selection must be made prior to starting the application development process. This timing forces developers to choose the embedded operating system for their device based on current requirements and so restricts future options to a large extent.<ref> {{cite web |url=http://www.clarinox.com/docs/whitepapers/Whitepaper_06_CrossPlatformDiscussion.pdf |archive-url=https://web.archive.org/web/20110219200027/http://www.clarinox.com/docs/whitepapers/Whitepaper_06_CrossPlatformDiscussion.pdf |archive-date=2011-02-19 |url-status=live |title= Working across Multiple Embedded Platforms |publisher=clarinox |access-date=2010-08-17 }}</ref> The level of complexity in embedded systems is continuously growing as devices are required to manage peripherals and tasks 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 an RTOS. ===Microkernels and exokernels=== A [[microkernel]] allocates memory and switches the CPU to different threads of execution. User-mode processes implement major functions such as file systems, network interfaces, etc. [[Exokernel]]s 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=== A [[monolithic kernel]] is a relatively large kernel with sophisticated capabilities 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 router]]s and [[Automotive navigation system|GPS navigation systems]]. ===Additional software components=== In addition to the core operating system, many embedded systems have additional upper-layer software components. These components include networking protocol stacks like [[Controller–area network|CAN]], [[TCP/IP]], [[FTP]], [[HTTP]], and [[HTTPS]], and storage capabilities like [[File Allocation Table|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 may be included in the kernel. In the RTOS category, the availability of additional software components depends upon the commercial offering. ===Domain-specific architectures=== In the automotive sector, [[AUTOSAR]] is a standard architecture for embedded software.<!--[[User:Kvng/RTH]]-->
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)