Knowledge

In-circuit emulation

Source 📝

345:(JTAG), uses the provision of an additional debugging interface to the live hardware, in the production system. It provides the same features as in-circuit debugging, such as inspection of internal state or variables and may have the ability to set checkpoints, breakpoints and watchpoints. The difference is that this is provided by additional silicon within the production processor, rather than swapping the processor for an off-board debugging emulator. For this reason, some of the functions of the ICE is changed by the specifications of the processor. An additional JTAG interface is added to the controller board, and this is required on every production system, but as this only requires a few signal pins the extra cost is minimal. JTAG interfaces were originally developed for, and are still useful for, end of production testing. 469:"User bus cycle status signals, S1# and S0# support the user's bus and ICE bus cycle status signals, ICES1# and ICES0# support the ICE bus. … The ICE bus is used only for Data Read, Code Read, Halt, Shutdown, and Memory Write cycles. … microprocessor is forced to compatible mode at reset, … it cannot be switched back to compatible mode except by reset (or ICE breakpoint), … ICE must be given special attention since it is the only case in which a switch of the master microprocessor from protection mode to compatibility mode can occur (except for reset). … ICE software begins execution following an ICE breakpoint in compatibility mode and then switches to protection mode for the bulk of its operations." 300:(BDM) to debug the software of an embedded system. These systems often use a standard version of the CPU chip, and can simply attach to a debug port on a production system. They are sometimes called in-circuit debuggers or ICDs, to distinguish the fact that they do not replicate the functionality of the CPU, but instead control an already existing, standard CPU. Since the CPU need not be replaced, they can operate on production units where the CPU is soldered in and cannot be replaced. On x86 Pentiums, a special 'probe mode' is used by ICEs to aid in debugging. 29: 148:. It operates by using a processor with the additional ability to support debugging operations, as well as to carry out the main function of the system. Particularly for older systems, with limited processors, this usually involved replacing the processor temporarily with a hardware emulator: a more powerful although more expensive version. It was historically in the form of 249:(MMU) to catch memory access errors. Without an ICE, the development of embedded systems can be extremely difficult, because there is usually no way to tell what went wrong. With an ICE, the programmer can usually test pieces of code, then isolate the fault to a particular section of code, and then inspect the failing code and rewrite it to solve the problem. 464: 272:
Virtually all embedded systems have a hardware element and a software element, which are separate but tightly interdependent. The ICE allows the software element to be run and tested on the hardware on which it is to run, but still allows programmer conveniences to help isolate faulty code, such as
263:
use resources provided on the manufactured version of the microcontroller for device programming, emulating, and debugging features, instead of needing another special emulation-version (that is, bond-out) of the target microcontroller. Even though it is a cost-effective method, since the ICE unit
214:
chip would normally be placed. Most modern systems use the target system's CPU directly, with special JTAG-based debug access. Emulating the processor, or direct JTAG access to it, lets the ICE do anything that the processor can do, but under the control of a software developer.
163:
hardware with standard production chips. Using standard chips instead of custom bond-out versions makes the technology ubiquitous and low cost, and eliminates most differences between the development and runtime environments. In this common case, the
303:
In the context of embedded systems, the ICE is not emulating hardware. Rather, it is providing direct debug access to the actual CPU. The system under test is under full control, allowing the developer to load, debug and test code directly.
264:
only manages the emulation instead of actually emulating the target microcontroller, trade-offs must be made to keep prices low at manufacture time, yet provide enough emulation features for the (relatively few) emulation applications.
256:, memory display and monitoring, and input/output control. Beyond this, the ICE can be programmed to look for any range of matching criteria to pause at, in an attempt to identify the origin of a failure. 318:
The programmer usually edits and compiles the embedded system's code on the host system, as well. The host system will have special compilers that produce executable code for the embedded system, termed
459:, Louie, Glenn; Retter, Rafi & Shaanan, Neve et al., "Interface between a Microprocessor and a Coprocessor", issued 1985-10-15, assigned to 187:
and other user interfaces that are present on computers. These shortcomings make in-circuit software debugging tools essential for many common development tasks.
195:
An in-circuit emulator (ICE) provides a window into the embedded system. The programmer uses the emulator to load programs into the embedded system, run them,
234:
with a graphical windowing interface that communicates through a JTAG adapter (emulator) to an embedded target system which has no graphical user interface.
420: 296:
mounts within the embedded system. Recent ICEs enable programmers to access the on-chip debug circuit that is integrated into the CPU via JTAG or
152:
which has many internal signals brought out for the purpose of debugging. These signals provide information about the state of the processor.
361:) and two alternative pairs of output pins to select operations via the ICE-bus instead of user memory. On the 80286 two instructions ( 514: 93: 65: 46: 72: 1238: 230:
for the programmer to investigate and control the embedded system. For example, it is routine to have a source code level
1233: 79: 916: 112: 456: 394: 1220: 1136: 389: 371:) exist to dump/restore the complete CPU state to memory offset 0x800, along with a single-byte override prefix ( 297: 61: 210:(CPU) of the embedded system's computer. Traditionally it had a plug that inserts into the socket where the CPU 1250: 1130: 507: 50: 1187: 357:, five additional pins were available on the processor: one input pin to externally force an ICE breakpoint, ( 307:
Most host systems are ordinary commercial computers unrelated to the CPU used for development. For example, a
1271: 1228: 284:
Most ICEs consist of an adaptor unit that sits between the ICE host computer and the system to be tested. A
615: 537: 868: 934: 1142: 1297: 1047: 660: 542: 500: 338:
is an alternative to in-circuit emulation. It uses a different approach to address a similar goal.
1243: 86: 1276: 1152: 1005: 575: 384: 289: 207: 39: 1147: 1124: 246: 1118: 1112: 971: 560: 324: 759: 595: 580: 196: 176: 442: 8: 774: 715: 1302: 1022: 211: 149: 585: 552: 487: 482: 460: 223: 219: 160: 175:
Embedded systems present special problems for programmers because they usually lack
1168: 1067: 1037: 898: 838: 834: 821: 312: 242: 180: 1266: 1199: 1075: 911: 698: 693: 688: 675: 624: 570: 523: 293: 260: 145: 1085: 993: 730: 708: 645: 320: 227: 1291: 703: 683: 1080: 1057: 1032: 998: 951: 944: 919: 883: 809: 752: 742: 655: 961: 906: 888: 853: 848: 843: 804: 779: 226:(PC) to the embedded system. The terminal or PC provides an interactive 966: 829: 799: 747: 725: 720: 632: 565: 285: 253: 237:
Notably, when their program fails, most embedded systems simply become
184: 1179: 1052: 978: 863: 858: 794: 769: 590: 354: 288:
and cable assembly connects the adaptor to a socket where the actual
172:, sometimes confusingly so, because emulation is no longer involved. 665: 28: 789: 492: 281:(which lets programmers run programs step-by-step to find errors). 231: 169: 141: 1010: 929: 399: 367: 241:. Embedded systems often lack basic functions to detect signs of 238: 199:
slowly, and view and change data used by the system's software.
159:-based hardware debuggers which provide equivalent access using 1027: 1015: 637: 600: 988: 956: 939: 924: 650: 308: 137: 1173: 1042: 983: 878: 784: 764: 156: 311:
PC might be used to develop software for a system using a
873: 737: 605: 277:(which shows a program as it was originally written) and 455: 252:
In usage, an ICE provides the programmer with execution
488:
How to choose an in-circuit emulator By Jonathan Hector
353:To support in-circuit emulator (ICE) debugging on 53:. Unsourced material may be challenged and removed. 206:gets its name because it emulates (imitates) the 1289: 449: 508: 375:) to enable ICE-mode to access user-memory. 421:"Debugging with Cortex-M3 Microcontrollers" 341:On-chip debugging, often loosely termed as 515: 501: 315:chip, a processor that cannot run Linux. 113:Learn how and when to remove this message 483:Jack Ganssle's Beginner's Corner article 1290: 496: 132:) is the use of a hardware device or 522: 418: 330: 51:adding citations to reliable sources 22: 155:More recently the term also covers 13: 14: 1314: 1137:High voltage parallel programming 476: 443:"Overview of Pentium Probe Mode" 419:Keil, Reinhard (July 22, 2008). 395:Hardware-assisted virtualization 27: 1221:List of common microcontrollers 1131:High-voltage serial programming 390:Background debug mode interface 298:background debug mode interface 38:needs additional citations for 1251:List of Wi-Fi microcontrollers 435: 412: 18:Debugging for embedded systems 1: 1272:Programmable logic controller 1113:In-circuit serial programming 405: 267: 538:Single-board microcontroller 7: 1125:Program and Debug Interface 378: 190: 10: 1319: 1259: 1213: 1161: 1105: 1098: 1066: 897: 820: 674: 623: 614: 551: 543:Special function register 530: 348: 1277:List of microprocessors 1174:Joint Test Action Group 385:Joint Test Action Group 343:Joint Test Action Group 290:central processing unit 208:central processing unit 275:source-level debugging 247:memory management unit 62:"In-circuit emulation" 1119:In-system programming 457:US patent 4547849 1188:In-circuit debugging 126:In-circuit emulation 47:improve this article 1244:Renesas Electronics 1194:In-circuit emulator 166:in-circuit emulator 134:in-circuit emulator 423:. www.embedded.com 212:integrated circuit 150:bond-out processor 1285: 1284: 1209: 1208: 1094: 1093: 775:PIC10/12/16/17/18 461:Intel Corporation 336:On-chip debugging 331:On-chip debugging 224:personal computer 220:computer terminal 197:step through them 161:on-chip debugging 123: 122: 115: 97: 1310: 1298:Embedded systems 1225:By manufacturer 1169:Nexus (standard) 1103: 1102: 621: 620: 524:Microcontrollers 517: 510: 503: 494: 493: 470: 468: 467: 463: 453: 447: 446: 439: 433: 432: 430: 428: 416: 374: 370: 364: 360: 313:Freescale 68HC11 261:microcontrollers 243:software failure 118: 111: 107: 104: 98: 96: 55: 31: 23: 1318: 1317: 1313: 1312: 1311: 1309: 1308: 1307: 1288: 1287: 1286: 1281: 1267:Embedded system 1255: 1205: 1200:In-target probe 1157: 1090: 1062: 893: 816: 670: 610: 547: 526: 521: 479: 474: 473: 465: 454: 450: 441: 440: 436: 426: 424: 417: 413: 408: 381: 372: 366: 362: 358: 351: 333: 321:cross compilers 294:microcontroller 279:single-stepping 270: 193: 146:embedded system 119: 108: 102: 99: 56: 54: 44: 32: 19: 12: 11: 5: 1316: 1306: 1305: 1300: 1283: 1282: 1280: 1279: 1274: 1269: 1263: 1261: 1257: 1256: 1254: 1253: 1248: 1247: 1246: 1241: 1236: 1231: 1223: 1217: 1215: 1211: 1210: 1207: 1206: 1204: 1203: 1197: 1191: 1185: 1184: 1183: 1171: 1165: 1163: 1159: 1158: 1156: 1155: 1150: 1145: 1140: 1134: 1128: 1122: 1116: 1109: 1107: 1100: 1096: 1095: 1092: 1091: 1089: 1088: 1083: 1078: 1072: 1070: 1064: 1063: 1061: 1060: 1055: 1050: 1045: 1040: 1035: 1030: 1025: 1020: 1019: 1018: 1008: 1003: 1002: 1001: 991: 986: 981: 976: 975: 974: 964: 959: 954: 949: 948: 947: 942: 937: 932: 927: 914: 909: 903: 901: 895: 894: 892: 891: 886: 881: 876: 871: 866: 861: 856: 851: 846: 841: 832: 826: 824: 818: 817: 815: 814: 813: 812: 807: 802: 792: 787: 782: 777: 772: 767: 762: 757: 756: 755: 745: 740: 735: 734: 733: 728: 723: 713: 712: 711: 706: 701: 696: 691: 680: 678: 672: 671: 669: 668: 663: 658: 653: 648: 643: 640: 635: 629: 627: 618: 612: 611: 609: 608: 603: 598: 593: 588: 583: 578: 573: 568: 563: 557: 555: 549: 548: 546: 545: 540: 534: 532: 528: 527: 520: 519: 512: 505: 497: 491: 490: 485: 478: 477:External links 475: 472: 471: 448: 434: 410: 409: 407: 404: 403: 402: 397: 392: 387: 380: 377: 350: 347: 332: 329: 269: 266: 228:user interface 218:ICEs attach a 192: 189: 121: 120: 35: 33: 26: 17: 9: 6: 4: 3: 2: 1315: 1304: 1301: 1299: 1296: 1295: 1293: 1278: 1275: 1273: 1270: 1268: 1265: 1264: 1262: 1258: 1252: 1249: 1245: 1242: 1240: 1237: 1235: 1234:NXP/Freescale 1232: 1230: 1227: 1226: 1224: 1222: 1219: 1218: 1216: 1212: 1201: 1198: 1195: 1192: 1189: 1186: 1181: 1178: 1177: 1175: 1172: 1170: 1167: 1166: 1164: 1160: 1154: 1151: 1149: 1146: 1144: 1141: 1138: 1135: 1132: 1129: 1126: 1123: 1120: 1117: 1114: 1111: 1110: 1108: 1104: 1101: 1097: 1087: 1084: 1082: 1079: 1077: 1074: 1073: 1071: 1069: 1065: 1059: 1056: 1054: 1051: 1049: 1046: 1044: 1041: 1039: 1036: 1034: 1031: 1029: 1026: 1024: 1021: 1017: 1014: 1013: 1012: 1009: 1007: 1004: 1000: 997: 996: 995: 992: 990: 987: 985: 982: 980: 977: 973: 970: 969: 968: 965: 963: 960: 958: 955: 953: 950: 946: 943: 941: 938: 936: 933: 931: 928: 926: 923: 922: 921: 918: 915: 913: 910: 908: 905: 904: 902: 900: 896: 890: 887: 885: 882: 880: 877: 875: 872: 870: 867: 865: 862: 860: 857: 855: 852: 850: 847: 845: 842: 840: 836: 833: 831: 828: 827: 825: 823: 819: 811: 808: 806: 803: 801: 798: 797: 796: 793: 791: 788: 786: 783: 781: 778: 776: 773: 771: 768: 766: 763: 761: 758: 754: 751: 750: 749: 746: 744: 741: 739: 736: 732: 729: 727: 724: 722: 719: 718: 717: 714: 710: 707: 705: 702: 700: 697: 695: 692: 690: 687: 686: 685: 682: 681: 679: 677: 673: 667: 664: 662: 659: 657: 654: 652: 649: 647: 644: 641: 639: 636: 634: 631: 630: 628: 626: 622: 619: 617: 613: 607: 604: 602: 599: 597: 594: 592: 589: 587: 584: 582: 579: 577: 574: 572: 569: 567: 564: 562: 559: 558: 556: 554: 553:Architectures 550: 544: 541: 539: 536: 535: 533: 529: 525: 518: 513: 511: 506: 504: 499: 498: 495: 489: 486: 484: 481: 480: 462: 458: 452: 444: 438: 422: 415: 411: 401: 398: 396: 393: 391: 388: 386: 383: 382: 376: 369: 356: 346: 344: 339: 337: 328: 326: 322: 316: 314: 310: 305: 301: 299: 295: 291: 287: 282: 280: 276: 265: 262: 257: 255: 250: 248: 244: 240: 235: 233: 229: 225: 221: 216: 213: 209: 205: 200: 198: 188: 186: 182: 178: 173: 171: 167: 162: 158: 153: 151: 147: 143: 139: 135: 131: 127: 117: 114: 106: 95: 92: 88: 85: 81: 78: 74: 71: 67: 64: –  63: 59: 58:Find sources: 52: 48: 42: 41: 36:This article 34: 30: 25: 24: 21: 16: 1193: 1081:ARM Cortex-R 952:ARM Cortex-R 451: 437: 425:. Retrieved 414: 352: 342: 340: 335: 334: 317: 306: 302: 283: 278: 274: 271: 259:Most modern 258: 251: 245:, such as a 236: 217: 203: 201: 194: 174: 165: 154: 133: 129: 125: 124: 109: 100: 90: 83: 76: 69: 57: 45:Please help 40:verification 37: 20: 15: 1106:Programming 869:PIC24/dsPIC 805:Rabbit 2000 616:Word length 254:breakpoints 185:disk drives 1292:Categories 1143:Bootloader 1099:Interfaces 406:References 325:assemblers 286:pin header 268:Advantages 168:term is a 73:newspapers 1303:Debugging 1180:debugWIRE 1162:Debugging 1086:PowerPC64 1023:Propeller 731:MELPS 740 355:Intel 286 323:or cross 292:(CPU) or 177:keyboards 1260:See also 1239:Infineon 1033:TLCS-900 999:ColdFire 920:Cortex-M 884:TLCS-900 810:TLCS-870 379:See also 232:debugger 204:emulator 191:Function 181:monitors 170:misnomer 142:software 136:used to 103:May 2008 1182:(Atmel) 1176:(JTAG) 1038:TriCore 1011:PowerPC 907:Am29000 780:ST6/ST7 661:TMS1000 656:TLCS-47 427:May 25, 400:SoftICE 239:bricked 87:scholar 1139:(HVPP) 1133:(HVSP) 1115:(ICSP) 1068:64-bit 1058:Z80000 1053:Xtensa 1028:SuperH 1016:MPC5xx 899:32-bit 864:MSP430 854:CR16/C 835:68HC12 830:65C816 822:16-bit 726:65C265 721:65C134 699:68HC11 694:68HC08 689:68HC05 666:μCOM-4 638:COP400 633:Am2900 601:RISC-V 591:MPS430 466:  359:ICEBP# 144:of an 89:  82:  75:  68:  60:  1229:Intel 1214:Lists 1202:(ITP) 1196:(ICE) 1190:(ICD) 1153:aWire 1127:(PDI) 1121:(ISP) 1006:PIC32 994:68000 989:MN103 957:AVR32 940:STM32 925:EFM32 889:Z8000 844:80186 753:XC800 676:8-bit 651:S1C6x 646:PPS-4 642:MARC4 625:4-bit 561:68000 368:0F 05 363:0F 04 349:Intel 309:Linux 138:debug 94:JSTOR 80:books 1043:V850 984:M32R 979:H8SX 972:FR-V 879:RL78 849:C166 800:eZ80 785:STM8 765:COP8 748:8051 743:8048 716:6502 709:RS08 684:6800 586:MIPS 566:8051 531:Main 429:2013 157:JTAG 140:the 66:news 1148:ROM 1076:ARC 962:CRX 945:XMC 935:SAM 930:LPC 917:ARM 912:ARC 874:R8C 859:H8S 795:Z80 760:AVR 738:78K 704:S08 606:x86 596:PIC 581:AVR 576:ARM 571:ARC 222:or 202:An 130:ICE 49:by 1294:: 1048:RX 967:FR 839:16 790:Z8 770:H8 373:F1 365:, 327:. 183:, 179:, 837:/ 516:e 509:t 502:v 445:. 431:. 128:( 116:) 110:( 105:) 101:( 91:· 84:· 77:· 70:· 43:.

Index


verification
improve this article
adding citations to reliable sources
"In-circuit emulation"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
debug
software
embedded system
bond-out processor
JTAG
on-chip debugging
misnomer
keyboards
monitors
disk drives
step through them
central processing unit
integrated circuit
computer terminal
personal computer
user interface
debugger
bricked
software failure

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