Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Embedded system
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
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]]-->
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
Embedded system
(section)
Add topic