[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.
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.
Software development requires use of a cross compiler, which runs on a computer but produces executable code for the target device.
Besides direct memory addressing, hardware level common protocols include I²C, SPI, serial ports, 1-Wires, Ethernets, and USB.