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:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.