Knowledge

Embedded software

Source 📝

53: 187: 214:), 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 202:
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.
260:
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. These space requirements lead to more work being done in C or
237:
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.
1069: 481: 98:
of memory with the suitable level of processing complexity determined with a Probably Approximately Correct Computation framework (a methodology based on
665: 533: 138:, embedded software may use no operating system. When they do use one, a wide variety of operating systems can be chosen from, typically a 701: 64:
A precise and stable characteristic feature is that no or not all functions of embedded software are initiated/controlled via a human
618: 724: 1107: 309: 210:
at manufacturing time, and the device drivers are written for the various hardware devices. These device drivers, called BSP (
568: 491: 218:, and reading data sheets for components to determine usage of registers and communication system. Conversion between 17: 151: 1024: 852: 583: 340: 1138: 694: 769: 298: 159: 245:, which runs on a computer but produces executable code for the target device. Debugging requires use of an 1112: 37:, written to control machines or devices that are not typically thought of as computers, commonly known as 155: 331:
Communications between processors and between one processor and other components are essential. Besides
1059: 1029: 175: 139: 270: 45:
that it runs on and has time and memory constraints. This term is sometimes used interchangeably with
1143: 1014: 1006: 759: 687: 507: 274: 537: 1039: 1019: 143: 867: 436: 857: 789: 729: 227: 211: 65: 622: 599:. Internet of Things (WF-IoT), 2015 IEEE 2nd World Forum on. Milan: IEEE. pp. 239–244. 1117: 1051: 830: 739: 356: 199: 99: 257:
debuggers. Software developers often have access to the complete kernel (OS) source code.
8: 915: 847: 754: 320: 246: 191: 87:, for example. This software can be very simple, such as lighting controls running on an 42: 456: 774: 103: 1064: 986: 872: 749: 595:
Mazzei, Daniele; Montelisciani, Gabriele; Baldi, Giacomo; Fantoni, Gualtiero (2015).
564: 487: 375: 167: 131: 644: 102:). However, embedded software can become very sophisticated in applications such as 953: 862: 801: 779: 600: 363: 231: 38: 27:
Computer software written to control machines not typically thought of as computers
837: 825: 784: 710: 395: 115: 91: 84: 604: 305: – is however available expressly for microcontroller use, e.g. 1079: 961: 933: 882: 744: 415: 379: 332: 262: 242: 166:, are now also in common use to target microcontrollers and embedded systems. 52: 584:
http://ptolemy.eecs.berkeley.edu/publications/papers/02/embsoft/embsoftwre.pdf
1132: 1084: 996: 367: 294: 278: 254: 207: 981: 794: 290: 297:
Gen. 2) are not commonly used; while an implementation of the interpreted
126:
Unlike standard computers that generally use an operating systems such as
1094: 1034: 842: 371: 344: 302: 223: 1074: 900: 734: 186: 163: 971: 313: 282: 215: 171: 95: 80: 597:
Changing the programming paradigm for the embedded in the IoT domain
928: 820: 811: 679: 483:
Embedded Systems Design for High-Speed Data Acquisition and Control
352: 107: 57: 46: 34: 1089: 976: 966: 905: 892: 219: 111: 991: 923: 594: 348: 317: 306: 336: 71:
Manufacturers build embedded software into the electronics of
56:
A close-up of the SMSC LAN91C110 (SMSC 91x) chip, an embedded
511: 286: 266: 147: 135: 127: 88: 76: 943: 938: 877: 383: 250: 72: 181: 370:
from companies including InterNiche Technologies and
142:. Code for embedded software is typically written in 41:. It is typically specialized for the particular 1130: 178:is used in some military and aviation projects. 206:Embedded software needs to include all needed 170:are often used too, especially in booting and 695: 457:"Stroustrup on C++ for embedded (bottom p.2)" 362:Communications protocols designed for use in 277:(Java ME Embedded 8.3 is available for e.g. 265:, instead of C++. Interpreted languages like 534:"Embedded Systems Methods and Technologies" 702: 688: 335:, hardware level common protocols include 326: 68:, but through machine-interfaces instead. 480:Emilio, Maurizio Di Paolo (2014-09-01). 185: 51: 408: 241:Software development requires use of a 14: 1131: 558: 479: 414:For more details of MicroVGA see this 79:, appliances, toys, security systems, 683: 182:Differences from application software 83:, televisions and set-top boxes, and 709: 431:Edward A. Lee, "Embedded Software", 121: 24: 25: 1155: 619:"Stroustrup on embedded software" 561:Intelligence for Embedded Systems 249:, and debugging hardware such as 198:Most consumers are familiar with 152:high-level programming languages 1025:Light-weight Linux distribution 853:Hacking of consumer electronics 658: 637: 443:, Academic Press, London, 2002. 611: 588: 577: 552: 526: 500: 473: 449: 13: 1: 508:"I.C.S. on embedded software" 425: 301:3 language – 1113:List of open-source hardware 273:can use compiled BASIC) and 106:, optical network elements, 7: 605:10.1109/WF-IoT.2015.7389059 389: 285:microcontrollers and older 230:is useful as well as using 10: 1160: 1030:Real-time operating system 140:real-time operating system 1103: 1050: 1015:Linux on embedded systems 1005: 952: 914: 891: 810: 717: 670:Oracle Technology Network 645:"Example of embedded CPU" 1020:Linux for mobile devices 401: 333:direct memory addressing 868:PlayStation 3 Jailbreak 559:Alippi, Cesare (2014), 437:Marvin Victor Zelkowitz 327:Communication protocols 858:Homebrew (video games) 195: 75:, telephones, modems, 61: 1139:Computing terminology 1052:Programming languages 790:Single-board computer 730:Board support package 433:Advances in Computers 212:Board support package 189: 100:randomized algorithms 55: 1118:Open-source robotics 1108:Lightweight browsers 831:Proprietary firmware 740:Consumer electronics 378:protocols stem from 321:PIC microcontrollers 312:-based (such as BBC 200:application software 848:Defective by Design 755:Embedded hypervisor 247:in-circuit emulator 192:text user interface 916:Software libraries 666:"Java ME Embedded" 625:on 3 February 2013 540:on 29 October 2013 271:Parallax Propeller 196: 168:Assembly languages 62: 1126: 1125: 1065:Assembly language 1007:Operating systems 987:Stand-alone shell 954:Programming tools 873:Rooting (Android) 765:Embedded software 750:Embedded database 570:978-3-319-05278-6 493:978-3-319-06865-7 366:are available as 122:Operating systems 31:Embedded software 18:Embedded Software 16:(Redirected from 1151: 1144:Embedded systems 863:iOS jailbreaking 780:Memory footprint 711:Embedded systems 704: 697: 690: 681: 680: 674: 673: 662: 656: 655: 653: 651: 641: 635: 634: 632: 630: 621:. Archived from 615: 609: 608: 592: 586: 581: 575: 573: 556: 550: 549: 547: 545: 536:. Archived from 530: 524: 523: 521: 519: 514:on 22 March 2013 510:. Archived from 504: 498: 497: 477: 471: 470: 468: 466: 461: 453: 419: 412: 364:embedded systems 232:bit manipulation 190:Embedded system 39:embedded systems 21: 1159: 1158: 1154: 1153: 1152: 1150: 1149: 1148: 1129: 1128: 1127: 1122: 1099: 1046: 1001: 948: 910: 887: 838:Closed platform 826:Custom firmware 806: 785:Microcontroller 713: 708: 678: 677: 664: 663: 659: 649: 647: 643: 642: 638: 628: 626: 617: 616: 612: 593: 589: 582: 578: 571: 557: 553: 543: 541: 532: 531: 527: 517: 515: 506: 505: 501: 494: 478: 474: 464: 462: 459: 455: 454: 450: 428: 423: 422: 413: 409: 404: 396:Embedded system 392: 329: 184: 124: 116:process control 92:microcontroller 85:digital watches 28: 23: 22: 15: 12: 11: 5: 1157: 1147: 1146: 1141: 1124: 1123: 1121: 1120: 1115: 1110: 1104: 1101: 1100: 1098: 1097: 1092: 1087: 1082: 1077: 1072: 1067: 1062: 1056: 1054: 1048: 1047: 1045: 1044: 1043: 1042: 1032: 1027: 1022: 1017: 1011: 1009: 1003: 1002: 1000: 999: 994: 989: 984: 979: 974: 969: 964: 962:Almquist shell 958: 956: 950: 949: 947: 946: 941: 936: 934:Embedded GLIBC 931: 926: 920: 918: 912: 911: 909: 908: 903: 897: 895: 889: 888: 886: 885: 883:Vendor lock-in 880: 875: 870: 865: 860: 855: 850: 845: 840: 835: 834: 833: 828: 817: 815: 808: 807: 805: 804: 799: 798: 797: 787: 782: 777: 772: 767: 762: 757: 752: 747: 745:Cross compiler 742: 737: 732: 727: 721: 719: 715: 714: 707: 706: 699: 692: 684: 676: 675: 657: 636: 610: 587: 576: 569: 551: 525: 499: 492: 472: 447: 446: 445: 444: 427: 424: 421: 420: 406: 405: 403: 400: 399: 398: 391: 388: 386:, and others. 328: 325: 243:cross compiler 208:device drivers 194:using MicroVGA 183: 180: 150:, but various 123: 120: 26: 9: 6: 4: 3: 2: 1156: 1145: 1142: 1140: 1137: 1136: 1134: 1119: 1116: 1114: 1111: 1109: 1106: 1105: 1102: 1096: 1093: 1091: 1088: 1086: 1085:Embedded Java 1083: 1081: 1078: 1076: 1073: 1071: 1068: 1066: 1063: 1061: 1058: 1057: 1055: 1053: 1049: 1041: 1038: 1037: 1036: 1033: 1031: 1028: 1026: 1023: 1021: 1018: 1016: 1013: 1012: 1010: 1008: 1004: 998: 997:Yocto Project 995: 993: 990: 988: 985: 983: 980: 978: 975: 973: 970: 968: 965: 963: 960: 959: 957: 955: 951: 945: 942: 940: 937: 935: 932: 930: 927: 925: 922: 921: 919: 917: 913: 907: 904: 902: 899: 898: 896: 894: 890: 884: 881: 879: 876: 874: 871: 869: 866: 864: 861: 859: 856: 854: 851: 849: 846: 844: 841: 839: 836: 832: 829: 827: 824: 823: 822: 819: 818: 816: 813: 809: 803: 800: 796: 793: 792: 791: 788: 786: 783: 781: 778: 776: 773: 771: 768: 766: 763: 761: 758: 756: 753: 751: 748: 746: 743: 741: 738: 736: 733: 731: 728: 726: 723: 722: 720: 718:General terms 716: 712: 705: 700: 698: 693: 691: 686: 685: 682: 671: 667: 661: 646: 640: 624: 620: 614: 606: 602: 598: 591: 585: 580: 572: 566: 562: 555: 539: 535: 529: 513: 509: 503: 495: 489: 485: 484: 476: 458: 452: 448: 442: 438: 434: 430: 429: 417: 411: 407: 397: 394: 393: 387: 385: 381: 377: 373: 369: 368:closed source 365: 360: 358: 354: 350: 346: 342: 338: 334: 324: 322: 319: 315: 311: 308: 304: 300: 296: 295:Intel Galileo 292: 288: 284: 280: 279:ARM Cortex-M4 276: 272: 268: 264: 258: 256: 252: 248: 244: 239: 235: 233: 229: 225: 221: 217: 213: 209: 204: 201: 193: 188: 179: 177: 173: 169: 165: 161: 157: 153: 149: 145: 141: 137: 133: 129: 119: 117: 113: 109: 105: 101: 97: 93: 90: 86: 82: 78: 74: 69: 67: 59: 54: 50: 48: 44: 40: 36: 32: 19: 1080:Embedded C++ 982:OpenEmbedded 893:Boot loaders 814:and controls 795:Raspberry Pi 764: 669: 660: 648:. Retrieved 639: 627:. Retrieved 623:the original 613: 596: 590: 579: 563:, Springer, 560: 554: 542:. Retrieved 538:the original 528: 516:. Retrieved 512:the original 502: 486:. Springer. 482: 475: 463:. Retrieved 451: 440: 432: 410: 361: 345:serial ports 330: 291:Raspberry Pi 269:(while e.g. 263:embedded C++ 259: 240: 236: 205: 197: 125: 70: 63: 33:is computer 30: 29: 1095:MicroPython 1035:Windows IoT 843:Crippleware 760:Embedded OS 376:Open-source 372:CMX Systems 303:MicroPython 224:hexadecimal 94:with a few 1133:Categories 1075:Embedded C 735:Bootloader 650:9 December 629:9 December 544:9 December 465:9 December 439:, editor) 426:References 216:schematics 174:handling. 164:JavaScript 154:, such as 81:pacemakers 972:Buildroot 353:Ethernets 314:micro:bit 283:Cortex-M7 172:interrupt 118:systems. 108:airplanes 96:kilobytes 66:interface 929:dietlibc 821:Firmware 812:Firmware 390:See also 289:used in 112:missiles 58:Ethernet 47:firmware 43:hardware 35:software 1090:MISRA C 977:BusyBox 967:BitBake 906:Barebox 518:22 July 349:1-Wires 220:decimal 132:Windows 104:routers 1040:Win CE 992:Toybox 924:uClibc 901:U-Boot 567:  490:  355:, and 318:16-bit 316:) and 307:32-bit 299:Python 228:binary 160:Python 114:, and 77:robots 460:(PDF) 402:Notes 287:ARM11 267:BASIC 136:Linux 128:macOS 89:8-bit 1070:CAPL 944:musl 939:lwIP 878:UEFI 770:FPGA 725:ASIC 652:2012 631:2012 565:ISBN 546:2012 520:2013 488:ISBN 467:2012 384:lwip 293:and 275:Java 251:JTAG 226:and 162:and 156:Java 73:cars 60:chip 1060:Ada 802:SoC 775:IoT 601:doi 416:PDF 380:uIP 357:USB 341:SPI 337:I²C 310:ARM 255:SWD 253:or 176:Ada 148:C++ 146:or 134:or 1135:: 668:. 441:56 382:, 374:. 359:. 351:, 347:, 343:, 339:, 323:. 281:, 234:. 222:, 158:, 130:, 110:, 49:. 703:e 696:t 689:v 672:. 654:. 633:. 607:. 603:: 574:. 548:. 522:. 496:. 469:. 435:( 418:. 144:C 20:)

Index

Embedded Software
software
embedded systems
hardware
firmware

Ethernet
interface
cars
robots
pacemakers
digital watches
8-bit
microcontroller
kilobytes
randomized algorithms
routers
airplanes
missiles
process control
macOS
Windows
Linux
real-time operating system
C
C++
high-level programming languages
Java
Python
JavaScript

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.