embedded software 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 this term is sometimes used interchangeably with firmware although firmware can also be applied to rombased code on a computer on top of which the os runs whereas embedded software is typically the only software on the device in question a precise and stable characteristic feature is that no or not all functions of embedded software are initiatedcontrolled via a human interface but through machineinterfaces instead manufacturers build in embedded software in the electronics of eg cars telephones modems robots appliances toys security systems pacemakers televisions and settop boxes and digital watches for example operating systems unlike standard computers that generally use an operating systems such as os x windows or gnulinux embedded software may use no operating system or when they do use a wide variety of operating systems can be chosen from typically a realtime operating system this runs from small oneperson operations consisting of a run loop and a timer to lynxos vxworks bertos threadx to windows ce or linux with patched kernel others include openwrt pikeos ecos fusion rtos nucleus rtos rtems integrity ucos qnx freebsd and ose code is typically written in c or c but various highlevel programming languages such as python and javascript are now also in common use to target microcontrollers and embedded systems ada is used in some military and aviation projects differences from application software most consumers are familiar with application software that provide functionality on a computer embedded software however is often less visible but no less complicated unlike application software embedded software has fixed hardware requirements and capabilities and addition of thirdparty 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 specific hardware 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 web applications are rarely used although xml files and other output may be passed to a computer for display file systems with folders are typically absent as are sql databases 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 incircuit emulator jtag or swd 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 16kb of flash and 4kb of ram with a cpu operating at 8mhz other systems can rival contemporary computers is available for eg arm cortexm4 cortexm7 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 microcontoller use eg 32bit armbased such as bbc microbit and 16bit pic microcontrollers communication protocols communications between processors and between one processor and other components are essential besides direct memory addressing common protocols include ic spi serial ports and usb communications protocols designed for use in embedded systems are available as closed source from companies including interniche technologies and cmx systems opensource protocols stem from uip lwip and others edward a lee embedded software advances in computers m zelkowitz editor 56 academic press london 2002 embedded system vteembedded systemsgeneral terms embedded software original equipment manufacturer oem embedded database embedded hypervisor consumer electronics microcontroller asic fpga soc memory footprint singleboard computer raspberry pi iot board support package cross compiler embedded os bootloader firmware and controls custom firmware rooting android ios jailbreaking playstation 3 jailbreak closed platform vendor lockin defective by design hacking of consumer electronics homebrew video games crippleware software libraries uclibc dietlibc embedded glibc musl development tools bitbake buildroot busybox yocto project almquist shell standalone shell openembedded operating systems linux on embedded systems linux for mobile devices lightweight linux distribution windows iot win ce realtime operating system programming languages ada assembly language capl embedded c misra c nesc embedded c embedded java lightweight browsers opensource computing hardware opensource robotics 