Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Operating systems  





2 Differences from application software  





3 Communication protocols  





4 See also  





5 Notes  





6 References  














Embedded software






Беларуская (тарашкевіца)
Български
Català
Dansk
Deutsch
فارسی
Français
Bahasa Melayu
Norsk bokmål
Português
Română
Türkçe
Українська

 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 




In other projects  



Wikimedia Commons
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


Embedded software is computer software, written to control machines or devices that are not typically thought of as computers, commonly known as embedded systems. It is typically specialized for the particular hardware that it runs on and has time and memory constraints.[1] This term is sometimes used interchangeably with firmware.[2]

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

A precise and stable characteristic feature is that no or not all functions of embedded software are initiated/controlled via a human interface, but through machine-interfaces instead.[3]

Manufacturers build embedded software into the electronics of cars, telephones, modems, robots, appliances, toys, security systems, pacemakers, televisions and set-top boxes, and digital watches, for example.[4] This software can be very simple, such as lighting controls running on an 8-bit microcontroller with a few kilobytes of memory with the suitable level of processing complexity determined with a Probably Approximately Correct Computation framework[5] (a methodology based on randomized algorithms). However, embedded software can become very sophisticated in applications such as routers, optical network elements, airplanes, missiles, and process control systems.[6]

Operating systems[edit]

Unlike standard computers that generally use an operating systems such as macOS, WindowsorLinux, embedded software may use no operating system. When they do use one, a wide variety of operating systems can be chosen from, typically a real-time operating system. Code for embedded software is typically written in CorC++, but various high-level programming languages, such as Java, Python and JavaScript, are now also in common use to target microcontrollers and embedded systems.[7] Assembly languages are often used too, especially in booting and interrupt handling. Ada is used in some military and aviation projects.

Differences from application software[edit]

Embedded system text user interface using MicroVGA[nb 1]

Most consumers are familiar with application software that provide functionality on a computer. However embedded software is often less visible, but no less complicated. Unlike application software, embedded software has fixed hardware requirements and capabilities, and addition of third-party hardware or software is strictly controlled.

Embedded software needs to include all needed device drivers at manufacturing time, and the device drivers are written for the various hardware devices. These device drivers, called BSP (Board support package), form the layer of software containing hardware-specific drivers and other routines that allow a particular operating system (traditionally a real-time operating system, or RTOS) to function in a particular hardware environment (a computer or CPU card), integrated with the RTOS itself. The software is highly dependent on the CPU and specific chips chosen. Most embedded software engineers have at least a passing knowledge of reading schematics, and reading data sheets for components to determine usage of registers and communication system. Conversion between decimal, hexadecimal and binary is useful as well as using bit manipulation.[8]

Web applications are often used for managing hardware, although XML files and other output may be passed to a computer for display. File systems with folders are typically used, however SQL databases are often absent.

Software development requires use of a cross compiler, which runs on a computer but produces executable code for the target device. Debugging requires use of an in-circuit emulator, and debugging hardware such as JTAGorSWD debuggers. Software developers often have access to the complete kernel (OS) source code.

Size of the storage memory and RAM can vary significantly. Some systems run in 16 KB of Flash and 4 KB of RAM with a CPU operating at 8 MHz, other systems can rival contemporary computers.[9] These space requirements lead to more work being done in C or embedded C++, instead of C++. Interpreted languages like BASIC (while e.g. Parallax Propeller can use compiled BASIC) and Java (Java ME Embedded 8.3[10] is available for e.g. ARM Cortex-M4, Cortex-M7 microcontrollers and older ARM11 used in Raspberry Pi and Intel Galileo Gen. 2) are not commonly used; while an implementation of the interpreted Python 3 language – MicroPython – is however available expressly for microcontroller use, e.g. 32-bit ARM-based (such as BBC micro:bit) and 16-bit PIC microcontrollers.

Communication protocols[edit]

Communications between processors and between one processor and other components are essential. Besides direct memory addressing, hardware level common protocols include I²C, SPI, serial ports, 1-Wires, Ethernets, and USB.

Communications protocols designed for use in embedded systems are available as closed source from companies including InterNiche Technologies and CMX Systems. Open-source protocols stem from uIP, lwip, and others.

See also[edit]

Notes[edit]

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

References[edit]

  1. ^ "Stroustrup on C++ for embedded (bottom p.2)" (PDF). Retrieved 9 December 2012.
  • ^ Emilio, Maurizio Di Paolo (2014-09-01). Embedded Systems Design for High-Speed Data Acquisition and Control. Springer. ISBN 978-3-319-06865-7.
  • ^ "I.C.S. on embedded software". Archived from the original on 22 March 2013. Retrieved 22 July 2013.
  • ^ "Embedded Systems Methods and Technologies". Archived from the original on 29 October 2013. Retrieved 9 December 2012.
  • ^ Alippi, Cesare (2014), Intelligence for Embedded Systems, Springer, ISBN 978-3-319-05278-6.
  • ^ http://ptolemy.eecs.berkeley.edu/publications/papers/02/embsoft/embsoftwre.pdf [bare URL PDF]
  • ^ Mazzei, Daniele; Montelisciani, Gabriele; Baldi, Giacomo; Fantoni, Gualtiero (2015). Changing the programming paradigm for the embedded in the IoT domain. Internet of Things (WF-IoT), 2015 IEEE 2nd World Forum on. Milan: IEEE. pp. 239–244. doi:10.1109/WF-IoT.2015.7389059.
  • ^ "Stroustrup on embedded software". Archived from the original on 3 February 2013. Retrieved 9 December 2012.
  • ^ "Example of embedded CPU". Retrieved 9 December 2012.
  • ^ "Java ME Embedded". Oracle Technology Network.

  • Retrieved from "https://en.wikipedia.org/w/index.php?title=Embedded_software&oldid=1200395848"

    Categories: 
    Computing terminology
    Embedded systems
    Hidden categories: 
    All articles with bare URLs for citations
    Articles with bare URLs for citations from March 2022
    Articles with PDF format bare URLs for citations
    Articles with short description
    Short description is different from Wikidata
     



    This page was last edited on 29 January 2024, at 11:37 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki