Section 24. Programming and Diagnostics HIGHLIGHTS This section of the manual contains the following topics: 24.1 24.2 24.3 24.4 24.5 24.6 Introduction .................................................................................................................. 24-2 In-Circuit Serial Programming™ (ICSP™)................................................................... 24-3 Enhanced ICSP ........................................................................................................... 24-6 JTAG Boundary Scan .................................................................................................. 24-7 Related Application Notes.......................................................................................... 24-16 Revision History ......................................................................................................... 24-17 24 Programming and Diagnostics © 2010 Microchip Technology Inc. DS70608B-page 24-1 dsPIC33E/PIC24E Family Reference Manual Note: This family reference manual section is meant to serve as a complement to device data sheets. Depending on the device variant, this manual section may not apply to all dsPIC33E/PIC24E devices. Please consult the note at the beginning of the “Special Features” chapter in the current device data sheet to check whether this document supports the device you are using. Device data sheets and family reference manual sections are available for download from the Microchip Worldwide Web site at: http://www.microchip.com 24.1 INTRODUCTION dsPIC33E/PIC24E devices provide a complete range of programming and diagnostic features that can increase the flexibility of any application using them. These features allow system designers to include: • Simplified field programmability using two-wire interfaces • Enhanced debugging capabilities • Boundary scan testing for device and board diagnostics dsPIC33E/PIC24E devices incorporate three different programming and diagnostic modalities that provide a range of functions useful to the application developer. They are summarized in Table 24-1. Table 24-1: Comparison of dsPIC33E/PIC24E Programming and Diagnostic Features Feature DS70608B-page 24-2 Interface Device Integration Functions In-Circuit Serial Programming™ (ICSP™) programming method PGCx and PGDx pins Integrated with device core Programming, debugging Enhanced ICSP programming method PGCx and PGDx pins Hardware integrated with device core; firmware-based control Programming Joint Test Action Group (JTAG) TDI, TDO, TMS and TCK pins Peripheral to device core; partly integrated with I/O logic Boundary Scan Testing (BST) diagnostics © 2010 Microchip Technology Inc. Section 24. Programming and Diagnostics 24.2 IN-CIRCUIT SERIAL PROGRAMMING™ (ICSP™) The In-Circuit Serial Programming (ICSP) programming capability is Microchip’s proprietary process for microcontroller programming in the target application. Originally introduced for 8-bit PIC16 devices, this method is used for virtually all Microchip microcontrollers. ICSP is the most direct method to program the device, whether the controller is embedded in a system or loaded into a device programmer. 24.2.1 ICSP Interface The ICSP method uses a two-pin communication interface. The Programming Data (PGD) pin functions as both an input and an output, allowing programming data to be read in and device information to be read out on command. The Programming Clock (PGC) pin clocks in data and controls the overall process. Most dsPIC33E/PIC24E devices have more than one pair of PGC and PGD pins; these are multiplexed with other I/O or peripheral functions as shown in Figure 24-1. Individual ICSP pin pairs are indicated by number (e.g., PGC1/PGD1, etc.) and are generically referred to as PGCx and PGDx. The multiple PGCx/PGDx pairs provide additional flexibility in system design by allowing you to incorporate ICSP on the pair of pins least constrained by the circuit design. All PGCx and PGDx pins are functionally tied together and behave identically. Any one pair can be used for successful device programming. The only limitation is that both pins from the same pair must be used. In addition to the PGCx and PGDx pins, ICSP requires that all voltage supply and ground pins on the device must be connected. The MCLR pin, which is used with PGCx to enter and control the programming process, must also be connected to the programming device. 24 Programming and Diagnostics © 2010 Microchip Technology Inc. DS70608B-page 24-3 dsPIC33E/PIC24E Family Reference Manual Example of Programming Pin Pairs on a dsPIC33E Device 144 143 142 141 140 139 138 137 136 135 134 133 132 131 130 129 128 127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 AN28/PWML3/RPE4 AN27/PWMH2/RPIE3 AN26/PWML2/CN67/RPE2 VSS RPG13 RPIG12 RPG14 AN25/PWMH1/RPIE1 AN24/PWML1/RPE0 PMPA7/RJ7 PMPA6/RJ6 PMPA5/RJ5 PMPA4/RJ4 AN23/RPIA7 AN22/RPIA6 RPG0 RPG1 RPF1 RPF0 VSS VDD VCAP C3INA/RPD7 C3INB/RPD6 RPD5 RPD4 PMPA3/RJ3 PMPA2/RJ2 PMPA1/RJ1 PMPA0/RJ0 RPID13 RPID12 VDD RPD3 RPD2 VCPCON/RPD1 Figure 24-1: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 dsPIC33EP512MU814 108 107 106 105 104 103 102 101 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 VSS PGEC1/SOSCO/C3INC/T1CK/RPIC14 PGED1/SOSCI/C3IND/RPIC13 INT0/RPD0 RH15 RH14 RH13 RH12 RPID11 ASCL1/RPID10 ASDA1/RPID9 RTCC/RPID8 RPIA15 RPIA14 PMPCS1/RK11 PMPCS2/RK12 VSS OSCO/CLKO/RC15 OSCIN/RPIC12 VDD TDO/RPIA5 TDI/RPIA4 ASDA2/RPIA3 ASCL2/RPIA2 RH11 RH10 RH9 RH8 DPLUS/RG2 DMINUS/RG3 VUSB VBUS RPF8 RPF2 USBID/RPF3 VSS PGEC2/AN6/RPIB6 PGED2/AN7/RPIB7 VREF-/RA9 VREF+/RA10 AVDD AVSS PMPD0/RH0 PMPD1/RH1 PMPD2/RH2 PMPD3/RH3 AN8/RPIB8 AN9/RPIB9 AN10/CVREF/RPIB10 AN11/RPIB11 VSS VDD PMPRD/RK15 PMPWR/RK14 PMPBE/RK13 TCK/RPIA1 RPF13 RPF12 AN12/RPIB12 AN13/RPIB13 AN14/RPIB14 AN15/RPIB15 VSS VDD PMPD4/RH4 PMPD5/RH5 PMPD6/RH6 PMPD7/RH7 RPID14 RPD15 SDA2/RPF4 SCL2/RPF5 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 RPG15 VDD AN29/PWMH3/RPE5 AN30/PWML4/RPIE6 AN31/PWMH4/RPIE7 PWML7/PMPA8/RJ8 PWMH7/PMPA9/RJ9 PMPA10/RJ10 PMPA11/RJ11 AN16/PWML5/RPIC1 AN17/PWMH5/RPIC2 AN18/PWML6/RPIC3 AN19/PWMH6/RPIC4 PMPA12/RJ12 PMPA13/RJ13 C1IND/RPG6 C1INC/RPIG7 C2IND/RPG8 MCLR C2INC/RPIG9 RJ14 RJ15 VSS VDD TMS/RPIA0 AN20/RPIE8 AN21/RPIE9 RK0 RK1 AN5/C1INA/VBUSST/RPIB5 AN4/C1INB/USBOE/RPIB4 AN3/C2INA/RPIB3 AN2/C2INB/RPIB2 PGEC3/AN1/RB1 PGED3/AN0/RB0 VSS Note: Programming pin pairs are shown in bold type. 24.2.2 ICSP Operation ICSP mode uses a combination of internal hardware and external control to program the target device. Programming data and instructions are provided on the PGD pin. A special set of 4-bit commands, combined with standard dsPIC33E/PIC24E instructions, controls the overall process of writing to the program memory. The PGD pin also returns data to the external programmer in response to queries. The programming process is controlled by manipulating the PGC and MCLR pins. Entry into and exit from ICSP mode involves applying (or removing) voltage to MCLR, while supplying a code sequence to PGD and a clock to PGC. Any one of the PGCx/PGDx pairs can be used for programming. During programming, the clock train on PGC is also used to indicate the difference between 4-bit commands, programming control commands, and payload data to be programmed. DS70608B-page 24-4 © 2010 Microchip Technology Inc. Section 24. Programming and Diagnostics The internal process is regulated by a state machine built into the dsPIC33E/PIC24E core logic; however, overall control of the process must be provided by the external programming tool. Microchip programming tools, such as the MPLAB® PM3 Universal Device Programmer (used with the MPLAB® IDE development software), include the necessary hardware and algorithms to manage the programming process for dsPIC33E/PIC24E devices. Users who are interested in a more detailed description, or who are considering designing their own programming interface for a dsPIC33E/PIC24E device, should refer to the “dsPIC33E/PIC24E Flash Programming Specification” (DS70619). 24.2.3 ICSP and In-Circuit Debugging The ICSP method also provides a hardware channel for in-circuit debugging, which allows external control of software debugging. Using the appropriate hardware interface and software environment, you can force the device to single-step through its code, track the actual content of multiple registers, and set software breakpoints. To use in-circuit debugging, an external system must load a debug executive program into the microcontroller. This task is handled automatically by many debugging tools, such as MPLAB REAL ICE™ and MPLAB ICD 3. For dsPIC33E/PIC24E devices, the program is loaded into the executive program memory in the configuration memory space. Although memory is implemented and code can be executed from these locations, the executive memory space is not available to the user application during normal operating modes. For details, refer to the “dsPIC33E/PIC24E Flash Programming Specification” (DS70619). Because of the memory location, use of the debug executive has no impact on the size of the application being examined. The executive memory space allows use of the entire program memory for program code, without needing to reserve space for application debugging. In addition, its use means that the program memory content in normal and debug states is identical, which helps to simplify troubleshooting. Depending on the particular dsPIC33E/PIC24E device, one or more ICSP ports can be used for programming. However, only one of these ICSP ports can be used for in-circuit debugging. Use the following process to select which part to activate for debugging via your MPLAB IDE setup: 1. 2. In MPLAB IDE, select the Configure > Configuration Bits menu to display the Configurations Bits window. In the Configuration Bits window, select the appropriate debug pair setting under the Comm Channel Select Category. Note: For details on the configuration memory space, refer to the “dsPIC33E/PIC24E Flash Programming Specification” (DS70619). • The ability to non-intrusively probe and/or modify internal registers and memory locations at run-time without halting the CPU execution • Up to six data sources can be monitored and streamed out to the host computer whenever they are modified without any impact on CPU operation. They can be examined at run-time either via the watch window or plotted graphically (MPLAB REAL ICE only). • Application input/output. The ability to exchange application data with the CPU without halting CPU execution and with minimum impact on the CPU. • The capability of the user’s application to stream out data to the host computer via a 16-word hardware FIFO (MPLAB REAL ICE only) • Up to six complex breakpoints that can be set up to monitor address and/or data and events • Advanced modes for breakpoints such as: Break on Address Greater Than or Equal to All of these capabilities use the same ICD interface pins (PGC and PGD), which are used for programming. No external components are needed. © 2010 Microchip Technology Inc. DS70608B-page 24-5 24 Programming and Diagnostics The dsPIC33E and PIC24E devices contain a new and improved Debug module that expands their debugging capabilities. Some of the new capabilities (provided with MPLAB X IDE in conjunction with MPLAB REAL ICE and MPLAB ICD 3) are: dsPIC33E/PIC24E Family Reference Manual 24.3 ENHANCED ICSP The Enhanced ICSP protocol is an extension of the ICSP method. Enhanced ICSP uses the same physical interface as the original, but changes the location and execution of programming control. ICSP mode uses a simple state machine to control each step of the programming process; however, the state machine is controlled by an external programmer. In contrast, Enhanced ICSP uses an on-board bootloader, known as the programming executive, to manage the programming process. While overall device programming is still overseen by an external programmer, the programming executive manages most of the things that must be directly controlled by the programmer in standard ICSP. The programming executive implements its own command set, wider in range than the original ICSP, that can directly erase, program, and verify the microcontroller’s program memory. This avoids the need to repeatedly run ICSP command sequences to perform simple tasks. As a result, Enhanced ICSP mode can program or reprogram a device more quickly than ICSP mode. Like the in-circuit debug executive, the programming executive does not reside in the user application program memory space. It is also loaded into the executive program memory. Since the debugger and Enhanced ICSP executives both use this memory space, in-circuit debugging is not available while Enhanced ICSP mode is being used for programming. The programming executive is not preprogrammed into dsPIC33E/PIC24E devices. If you need Enhanced ICSP, you must use standard ICSP to program the executive to the executive memory space. You can set this up directly in your software, or automatically using a compatible Microchip programming system. For additional information on Enhanced ICSP and the programming executive, refer to the “dsPIC33E/PIC24E Flash Programming Specification” (DS70619). DS70608B-page 24-6 © 2010 Microchip Technology Inc. Section 24. Programming and Diagnostics 24.4 JTAG BOUNDARY SCAN As the complexity and density of board designs increase, testing electrical connections between the components on fully-assembled circuit boards poses many challenges. To address these challenges, the Joint Test Action Group (JTAG) developed a method for boundary scan testing that was later standardized as IEEE 1149.1-2001, “IEEE Standard Test Access Port and Boundary Scan Architecture”. The JTAG boundary scan method adds a shift register stage adjacent to each of the component’s I/O pins, which permits signals at the component boundaries to be controlled and observed using a defined set of scan test principles. An external tester or controller provides instructions and reads the results serially. The external device also provides common clock and control signals. Depending on the implementation, access to all test signals is provided through a standardized 4-pin or 5-pin interface. In system level applications, individual JTAG-enabled components are connected through their individual testing interfaces (in addition to their more standard application-specific connections). Devices are connected in a series or daisy-chained fashion, with the test output of one device connected exclusively to the test input of the next device in the chain. Instructions in the JTAG boundary scan protocol allow the testing of any one device in the chain, or any combination of devices, without testing the entire chain. In this method, connections between components, as well as connections at the boundary of the application, can be tested. Figure 24-2 shows a typical application incorporating the JTAG boundary scan interface. In this example, a dsPIC33E/PIC24E device is daisy-chained to a second JTAG-compliant device. The Test Data Input (TDI) line from the external tester supplies data to the Test Data Input (TDI) pin of the first device in the chain (in this case, the DSC). The resulting test data for this two-device chain is provided from the Test Data Output (TDO) pin of the second device to the TDO line of the tester. Figure 24-2: dsPIC33E/PIC24E-Based JTAG-Compliant Application Showing Daisy Chaining of Components dsPIC33E/PIC24E-Based Application TMS TCK TDO TDI TMS TCK dsPIC33E/PIC24E (or other JTAG compliant device) Standard JTAG Connector TDI TDO TCK TMS TRST (optional) © 2010 Microchip Technology Inc. DS70608B-page 24-7 24 Programming and Diagnostics JTAG Controller TDO TDI dsPIC33E/PIC24E dsPIC33E/PIC24E Family Reference Manual In the dsPIC33E/PIC24E device family, the hardware for the JTAG boundary scan is implemented as a peripheral module (i.e., outside of the CPU core) with additional integrated logic in all I/O ports. The dsPIC33E/PIC24E family implements a 4-pin JTAG interface (see Table 24-2). Table 24-2: JTAG Pin Functions Interface Pin Test Clock Input (TCK) Function Provides the clock for test logic Test Mode Select Input (TMS) Used by the Test Access Port (TAP) to control test operations Test Data Input (TDI) Serial input for test instructions and data Test Data Output (TDO) Serial output for test instructions and data A logical block diagram of the JTAG module is shown in Figure 24-3, and consists of the following key elements: • • • • Figure 24-3: TAP Interface Pins (TDI, TMS, TCK and TDO) TAP Controller Instruction Shift Register and Instruction Register (IR) Data Registers JTAG Logical Block Diagram Instruction Shift Register TDO Selector (MUX) TDO TDI Capture-IR Shift-IR Update-IR TMS TAP Controller Output Data Sampling Register Instruction Register Instruction Decode Data Registers Capture-DR Shift-DR Update-DR TCK Bypass Register Device ID Register MCHP Command Shift Register To Internal Logic MCHP Command Register Data Selector (MUX) Boundary Scan Cell Registers MCHP Scan Data from Internal Logic DS70608B-page 24-8 © 2010 Microchip Technology Inc. Section 24. Programming and Diagnostics 24.4.1 Test Access Port (TAP) and TAP Controller The Test Access Port (TAP) on the dsPIC33E/PIC24E device family is a general purpose port that provides test access to many built-in support functions and test logic defined in IEEE Standard 1149.1. The TAP controller and the associated boundary scan pins are disabled by programming the JTAG Enable (JTAGEN) bit to ‘0’ in the FICD Configuration register. The TAP controller, by default, is enabled in the bit’s unprogrammed state. While enabled, the designated I/O pins become dedicated TAP pins. Use the following process to enable or disable the JTAG port via your MPLAB IDE setup: In the MPLAB IDE click Configure > Configuration Bits menu to display the Configuration Bits window. In the Configuration Bits window, select the Enable/Disable setting under the JTAG Port Enable Category. 1. 2. Note: For information on the FICD register, refer to the “dsPIC33E/PIC24E Flash Programming Specification” (DS70619). To minimize I/O loss due to JTAG scans, the optional TAP Reset (TRST) input pin, specified in the standard, is not implemented on dsPIC33E/PIC24E devices. For convenience, a “soft” TAP Reset is included in the TAP controller, using the TMS and TCK pins. To force a port Reset, apply a logic high to the TMS pin for at least 5 rising edges of TCK. Device Resets (including POR) do not automatically result in a TAP Reset. This must be done by the external JTAG controller using the soft TAP Reset. The TAP controller on the dsPIC33E/PIC24E family devices is a synchronous finite state machine that implements the standard 16 states for JTAG scans. Figure 24-4 shows all the module states of the TAP controller. All Boundary Scan Test (BST) instructions and test results are communicated through the TAP via the TDI pin in a serial format, Least Significant bit first. Figure 24-4: TAP Controller Module State Diagram Test-Logic Reset TMS = 0 Run-Test/Idle TMS = 1 TMS = 1 Select-DR-Scan TMS = 0 TMS = 0 TMS = 1 TMS = 1 Capture-DR Shift-IR TMS = 0 TMS = 1 TMS = 1 Exit 1-IR Pause-DR TMS = 0 Pause-IR TMS = 0 TMS = 1 TMS = 0 Exit 2-DR Exit 2-IR Update-IR Update-DR © 2010 Microchip Technology Inc. TMS = 0 TMS = 1 TMS = 1 TMS = 1 TMS = 1 TMS = 0 TMS = 0 TMS = 1 TMS = 0 TMS = 0 TMS = 1 TMS = 0 DS70608B-page 24-9 Programming and Diagnostics Shift-DR Exit 1-DR 24 Capture-IR TMS = 0 TMS = 0 TMS = 1 TMS = 1 Select-IR-Scan dsPIC33E/PIC24E Family Reference Manual By manipulating the state of TMS and the clock pulses on TCK, the TAP controller can be moved through all of the defined module states to capture, shift, and update various instruction and/or data registers. Figure 24-4 shows the state changes on TMS as the controller cycles through its state machine. Figure 24-5 shows the timing of TMS and TCK, while transitioning the controller through the appropriate module states for shifting in an instruction. In this example, the sequence demonstrates how a TAP controller reads an instruction. All TAP controller states are entered on the rising edge of the signal on the TCK pin. The TAP controller starts in the Test-Logic Reset state. Since the state of the TAP controller is dependent on the previous instruction, and therefore could be unknown, it is good programing practice to begin in the Test-Logic Reset state. When TMS is asserted low on the next rising edge of TCK, the TAP controller moves into the Run-Test/Idle state. On the next two rising edges of TCK, TMS is high, which moves the TAP controller to the Select-IR-Scan state. On the next two rising edges of TCK, TMS is held low, which moves the TAP controller into the Shift-IR state. An instruction is shifted in to the Instruction Shift register via the TDI on the next four rising edges of TCK. After the TAP controller enters this state, the TDO pin goes from a high-impedance state to active. The controller shifts out the initial state of the Instruction Register (IR) on the TDO pin, on the falling edges of TCK, and continues to shift out the contents of the IR while in the Shift-IR state. The TDO returns to the high-impedance state on the first falling edge of TCK upon exiting the shift state. On the next three rising edges of TCK, the TAP controller exits the Shift-IR state, updates the IR and then moves back to the Run-Test/Idle state. Data, or another instruction, can now be shifted in to the appropriate data or IR. Figure 24-5: TAP State Transitions for Shifting in an Instruction TCK TMS Instruction Data (LSB) TDI Run_Test Idle Select_IR_Scan Shift_IR Update_IR TAP State Test_Logic Reset Select_DR_Scan Exit_IR Capture_IR Run_Test Idle TDO 1 2 3 Note 1: TDO pin is always in a high-impedance state, until the first falling edge of TCK, in either the Shift_IR or Shift_DR states. 2: TDO is no longer high-impedance. The initial state of the Instruction Register (IR) is shifted out on the falling edge of TCK. 3: TDO returns to high-impedance again on the first falling edge of TCK in the Exit_IR state. DS70608B-page 24-10 © 2010 Microchip Technology Inc. Section 24. Programming and Diagnostics 24.4.2 JTAG Registers The JTAG module uses a number of registers of various sizes as part of its operation. None of the JTAG registers are located within the device data memory space. They cannot be directly accessed by the user application in normal operating modes. 24.4.2.1 INSTRUCTION SHIFT REGISTER AND INSTRUCTION REGISTER The 4-bit IR allows an instruction to be shifted into the device. The instruction selects the data register to access. The parallel output from the Instruction register is latched to protect from the transient data patterns that occur in its shift register stages as new instruction data is entered. The latched parallel output is controlled, so that it can change state only in the Update-IR and Test-Logic-Reset controller states. A list and description of implemented instructions is provided in 24.4.4 “JTAG Instructions”. 24.4.2.2 DATA REGISTERS The dsPIC33E/PIC24E device family supports the JTAG data registers listed in Table 24-3. Table 24-3: JTAG Data Registers Register Bypass Register Microchip Command Shift Register JTAG Device ID Register © 2010 Microchip Technology Inc. Provides a minimum-length serial path for the movement of test data between TDI and TDO. This path can be selected when no other test data register needs to be accessed during a board-level test operation. Use of the Bypass register in a component speeds access to test data registers in other components on a board-level test data path. This 8-bit shift register shifts in Microchip device-specific commands. The parallel output from the shift register is latched to protect from the transient data patterns that occur in its shift register stages as a new command is entered. This 32-bit device IR allows the manufacturer, part number, and variant of a component to be determined. The bit format of the dsPIC33E/PIC24E device consists of an 11-bit manufacturer ID assigned by the IEEE (0x29 for Microchip Technology), device part number, and device revision number. Refer to the “dsPIC33E/PIC24E Flash Programming Specification” (DS70619) or more information on the bit format. For example, the JTAG ID for a dsPIC33EP512MU814 device is: • Manufacturer ID = 0x29 • Part number = 0x1873 • Silicon revision = A0 • JTAG ID = 0x01873053 Consists of a number of cells combined to form a single shift-register-based path that is connected between TDI and TDO when an appropriate instruction is selected. DS70608B-page 24-11 24 Programming and Diagnostics Boundary Scan Register Function dsPIC33E/PIC24E Family Reference Manual 24.4.3 Boundary Scan Register The Boundary Scan Register (BSR) is a large shift register that consists of all the I/O Boundary Scan Cells daisy-chained together, as shown in Figure 24-6. Each I/O pin has one Boundary Scan Cell (BSC). Each BSC contains three BSC registers: an input cell register, an output cell register and a control cell register. When the SAMPLE/PRELOAD or EXTEST instructions are active, the BSR is placed between the TDI and TDO pins, with the TDI pin as the input and the TDO pin as the output. The size of the BSR depends on the number of I/O pins on the device. For example, the dsPIC33EP512MU814 has 122 I/O pins. Three BSC registers for each of the 122 I/Os yields a Boundary Scan register length of 366 bits. Information on the I/O port pin count for a specific device is found in the specific BSDL files. The Boundary Scan Cell is not used for power supply pins (VDD, VCAP, VSS, AVDD, AVSS). The pins that have the JTAG interconnect function and JTAG control are not part of the scan-chain and are not JTAG testable. Note: Figure 24-6: Daisy-Chained Boundary Scan Cell Registers on a dsPIC33E Digital Signal Controller BSC with Three Register Cells: I C O I/O Pin I C O O C I O C I I C O I C O dsPIC33E Internal Logic • Input Cell (I) • Control Cell (C) • Output Cell (O) I C O I O C I C O TAP Controller TDI DS70608B-page 24-12 TMS TCK TDO © 2010 Microchip Technology Inc. Section 24. Programming and Diagnostics 24.4.3.1 BOUNDARY SCAN CELL The Boundary Scan Cell (BSC) captures and overrides I/O input or output data values when JTAG is active. The BSC consists of three single-bit capture register cells and two single-bit holding register cells. The capture cells are daisy-chained to capture the port’s input, output and control (output-enable) data. The capture cells also pass JTAG data along to the Boundary Scan register. Command signals from the TAP controller determine if the JTAG data is captured, and how and when it is clocked out of the BSC. The first register either captures internal data sent to the output driver, or provides serially scanned-in data for the output driver. The second register captures internal output-enable control from the output driver, and also provides serially-scanned output-enable values. The third register captures the input data from the I/O’s input buffer. Figure 24-7 shows a typical BSC and its relationship to the I/O port. Figure 24-7: Boundary Scan Cell and Its Relationship to the I/O Port SDO From or To Device, I/O Circuitry, and/or Logic Core BSC Logic Pad Logic IN Port Data Input Input Buffer 0 D Q 1 OE 0 0 D Q D Q 0 Data Out Enable 1 1 0 OUT 1 0 0 D Q D Q 1 1 Port Data Output Output Buffer Pin 24 CAPTURE CLOCK (Capture Registers) Programming and Diagnostics SHIFT SDI UPDATE HIGHZ EXTEST CLOCK (Update Registers) Global JTAG Signals © 2010 Microchip Technology Inc. DS70608B-page 24-13 dsPIC33E/PIC24E Family Reference Manual 24.4.4 JTAG Instructions dsPIC33E/PIC24E devices support the mandatory instruction set specified by IEEE 1149.1, as well as several optional public instructions defined in the specification. These devices also implement Microchip-specific instructions. Table 24-4 describes these mandatory, optional, and Microchip-specific JTAG instructions. Table 24-4: JTAG Instructions JTAG Instruction Description Mandatory JTAG Instructions: BYPASS (0x0F) Bypasses a device in a test chain. In Bypass mode, a single shift register stage provides a minimum-length serial path between the TDI and TDO pins. SAMPLE/PRELOAD (0x01) Takes snapshots of the component’s input and output signals without interfering with the normal operation of the assembled board. The snapshot is taken on the rising edge of TCK in the Capture-DR controller state. The data can be viewed by shifting through the component’s TDO output. This instruction also allows the scanning of the BSR without interfering with normal operation of the on-chip system logic. For example, before the EXTEST instruction is selected, data can be loaded onto the latched parallel outputs using PRELOAD. As soon as the EXTEST instruction is transferred to the parallel output of the Instruction register, the preloaded data is driven through the system output pins. This ensures that known data, consistent at the board level, is driven immediately when the EXTEST instruction is entered. Without PRELOAD, indeterminate data would be driven until the first scan sequence had been completed. EXTEST (0x03) Allows testing of off-chip circuitry and board level interconnections. Data typically is loaded onto the latched parallel outputs of the Boundary Scan shift register stages by using the PRELOAD instruction before the EXTEST instruction is selected. BSR cells at output pins are used to apply test stimuli. Those at input pins are used to capture test results. Optional JTAG Instructions IDCODE (0x02) Selects a 32-bit identification register to be connected for serial access between TDI and TDO in the Shift-DR controller state. This instruction causes the 32-bit device identification word to be shifted out on the TDO pin. HIGHZ (0x04) Places the component in a state in which all of its system logic outputs are placed in an inactive drive state (e.g., high-impedance). In this state, an in-circuit test system drives the signals onto the connections normally driven by a component output without damaging the component. In the HIGHZ mode, the Bypass register is connected between TDI and TDO in the Shift-DR state. Microchip-specific JTAG Instructions MCHP_SCAN (0x07) Selects the internal Microchip-specific scan register to be connected for serial access between the TDI and TDO in the Shift-DR controller state. MCHP_CMD (0x08) Selects 8-bit Microchip Command shift register to be connected for serial access between the TDI and TDO in the Shift-DR controller state. This shift register supports up to 256 commands. The following command is available for the user; the rest are reserved: JTAG_MCLR (0x01): Performs a device Master Clear Reset while the JTAG interface is active; functionally equivalent to hardware MCLR. The TAP interface itself is not reset. DS70608B-page 24-14 © 2010 Microchip Technology Inc. Section 24. Programming and Diagnostics 24.4.5 Boundary Scan Testing Boundary Scan Testing (BST) is the method of controlling and observing the boundary pins of the JTAG-compliant device with software. BST can be used to test connectivity between devices by daisy-chaining JTAG compliant devices to form a single scan chain. Several scan chains can exist on a printed circuit board to form multiple scan chains. These multiple scan chains can then be driven simultaneously to test many components in parallel. Scan chains can contain both JTAG compliant devices and non-JTAG compliant devices. A key advantage of BST is that it can be implemented without physical test probes. All that is needed is a 4-wire or 5-wire interface and an appropriate test platform. Since JTAG boundary scan has been available for many years, many software tools exist for testing scan chains without the need for extensive physical probing. The main drawback to BST is that it can only evaluate digital signals and circuit continuity. It cannot measure input or output voltage levels or currents. 24.4.5.1 RELATED JTAG FILES To implement BST, all JTAG test tools require a Boundary Scan Description Language (BSDL) file. BSDL is a subset of VHSIC Hardware Description Language (VHDL), and is described as part of IEEE 1149.1. The device-specific BSDL file describes how the standard is implemented on a particular device and how it operates. The BSDL file for a particular device includes the following: • • • • • • • Pinout and package configuration for the particular device Physical location of the TAP pins Device ID register and the device ID Length of the IR Supported BST instructions and their binary codes Length and structure of the Boundary Scan register Boundary scan cell definition Device-specific BSDL files are available at Microchip’s web site, www.microchip.com. The name for each BSDL file is the device name and silicon revision. For example, dsPIC33EP512MU814.BSD is the BSDL file for the dsPIC33EP512MU814 device. 24 Programming and Diagnostics © 2010 Microchip Technology Inc. DS70608B-page 24-15 dsPIC33E/PIC24E Family Reference Manual 24.5 RELATED APPLICATION NOTES This section lists application notes that are related to this section of the manual. These application notes may not be written specifically for the dsPIC33E/PIC24E device family, but the concepts are pertinent and could be used with modification and possible limitations. The current application notes related to Programming and Diagnostics are: Title Application Note # No related application notes at this time. Note: DS70608B-page 24-16 N/A Visit the Microchip web site (www.microchip.com) for additional application notes and code examples for the dsPIC33E/PIC24E family of devices. © 2010 Microchip Technology Inc. Section 24. Programming and Diagnostics 24.6 REVISION HISTORY Revision A (August 2009) This is the initial release of the document. Revision B (December 2010) This revision includes the following updates: • Added a note at the beginning of the section, which provides information on complementary documentation • Updated the dsPIC33E references in the entire document as dsPIC33E/PIC24E • Updated the first paragraph in 24.2.1 “ICSP Interface” • Changed the name of pin 123 to VCAP (see Figure 24-1: “Example of Programming Pin Pairs on a dsPIC33E Device”) • Add information on the new and improved Debug module capabilities (see 24.2.3 “ICSP and In-Circuit Debugging”) • Removed the last sentence of the first paragraph and removed the fifth paragraph in 24.4 “JTAG Boundary Scan” • Updated the description for MCHP_CMD (0x08) in Table 24-4 • Removed 24.4.6 “JTAG Device Programming” • Updates to formatting and minor text changes have been incorporated throughout the document 24 Programming and Diagnostics © 2010 Microchip Technology Inc. DS70608B-page 24-17 dsPIC33E/PIC24E Family Reference Manual NOTES: DS70608B-page 24-18 © 2010 Microchip Technology Inc. Note the following details of the code protection feature on Microchip devices: • Microchip products meet the specification contained in their particular Microchip Data Sheet. • Microchip believes that its family of products is one of the most secure families of its kind on the market today, when used in the intended manner and under normal conditions. • There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our knowledge, require using the Microchip products in a manner outside the operating specifications contained in Microchip’s Data Sheets. Most likely, the person doing so is engaged in theft of intellectual property. • Microchip is willing to work with the customer who is concerned about the integrity of their code. • Neither Microchip nor any other semiconductor manufacturer can guarantee the security of their code. Code protection does not mean that we are guaranteeing the product as “unbreakable.” Code protection is constantly evolving. We at Microchip are committed to continuously improving the code protection features of our products. Attempts to break Microchip’s code protection feature may be a violation of the Digital Millennium Copyright Act. If such acts allow unauthorized access to your software or other copyrighted work, you may have a right to sue for relief under that Act. DS70608B24Information contained in this publication regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer’s risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights. Trademarks The Microchip name and logo, the Microchip logo, dsPIC, KEELOQ, KEELOQ logo, MPLAB, PIC, PICmicro, PICSTART, PIC32 logo, rfPIC and UNI/O are registered trademarks of Microchip Technology Incorporated in the U.S.A. and other countries. FilterLab, Hampshire, HI-TECH C, Linear Active Thermistor, MXDEV, MXLAB, SEEVAL and The Embedded Control Solutions Company are registered trademarks of Microchip Technology Incorporated in the U.S.A. Analog-for-the-Digital Age, Application Maestro, CodeGuard, dsPICDEM, dsPICDEM.net, dsPICworks, dsSPEAK, ECAN, ECONOMONITOR, FanSense, HI-TIDE, In-Circuit Serial Programming, ICSP, Mindi, MiWi, MPASM, MPLAB Certified logo, MPLIB, MPLINK, mTouch, Omniscient Code Generation, PICC, PICC-18, PICDEM, PICDEM.net, PICkit, PICtail, REAL ICE, rfLAB, Select Mode, Total Endurance, TSHARC, UniWinDriver, WiperLock and ZENA are trademarks of Microchip Technology Incorporated in the U.S.A. and other countries. SQTP is a service mark of Microchip Technology Incorporated in the U.S.A. All other trademarks mentioned herein are property of their respective companies. © 2010, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved. Printed on recycled paper. ISBN: 978-1-60932-761-3 Microchip received ISO/TS-16949:2002 certification for its worldwide headquarters, design and wafer fabrication facilities in Chandler and Tempe, Arizona; Gresham, Oregon and design centers in California and India. The Company’s quality system processes and procedures are for its PIC® MCUs and dsPIC® DSCs, KEELOQ® code hopping devices, Serial EEPROMs, microperipherals, nonvolatile memory and analog products. In addition, Microchip’s quality system for the design and manufacture of development systems is ISO 9001:2000 certified. © 2010 Microchip Technology Inc. DS70608B-page 24-19 Worldwide Sales and Service AMERICAS ASIA/PACIFIC ASIA/PACIFIC EUROPE Corporate Office 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 480-792-7200 Fax: 480-792-7277 Technical Support: http://support.microchip.com Web Address: www.microchip.com Asia Pacific Office Suites 3707-14, 37th Floor Tower 6, The Gateway Harbour City, Kowloon Hong Kong Tel: 852-2401-1200 Fax: 852-2401-3431 India - Bangalore Tel: 91-80-3090-4444 Fax: 91-80-3090-4123 India - New Delhi Tel: 91-11-4160-8631 Fax: 91-11-4160-8632 Austria - Wels Tel: 43-7242-2244-39 Fax: 43-7242-2244-393 Denmark - Copenhagen Tel: 45-4450-2828 Fax: 45-4485-2829 India - Pune Tel: 91-20-2566-1512 Fax: 91-20-2566-1513 France - Paris Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 Japan - Yokohama Tel: 81-45-471- 6166 Fax: 81-45-471-6122 Germany - Munich Tel: 49-89-627-144-0 Fax: 49-89-627-144-44 Atlanta Duluth, GA Tel: 678-957-9614 Fax: 678-957-1455 Boston Westborough, MA Tel: 774-760-0087 Fax: 774-760-0088 Chicago Itasca, IL Tel: 630-285-0071 Fax: 630-285-0075 Cleveland Independence, OH Tel: 216-447-0464 Fax: 216-447-0643 Dallas Addison, TX Tel: 972-818-7423 Fax: 972-818-2924 Detroit Farmington Hills, MI Tel: 248-538-2250 Fax: 248-538-2260 Kokomo Kokomo, IN Tel: 765-864-8360 Fax: 765-864-8387 Los Angeles Mission Viejo, CA Tel: 949-462-9523 Fax: 949-462-9608 Santa Clara Santa Clara, CA Tel: 408-961-6444 Fax: 408-961-6445 Toronto Mississauga, Ontario, Canada Tel: 905-673-0699 Fax: 905-673-6509 Australia - Sydney Tel: 61-2-9868-6733 Fax: 61-2-9868-6755 China - Beijing Tel: 86-10-8528-2100 Fax: 86-10-8528-2104 China - Chengdu Tel: 86-28-8665-5511 Fax: 86-28-8665-7889 Korea - Daegu Tel: 82-53-744-4301 Fax: 82-53-744-4302 China - Chongqing Tel: 86-23-8980-9588 Fax: 86-23-8980-9500 Korea - Seoul Tel: 82-2-554-7200 Fax: 82-2-558-5932 or 82-2-558-5934 China - Hong Kong SAR Tel: 852-2401-1200 Fax: 852-2401-3431 Malaysia - Kuala Lumpur Tel: 60-3-6201-9857 Fax: 60-3-6201-9859 China - Nanjing Tel: 86-25-8473-2460 Fax: 86-25-8473-2470 Malaysia - Penang Tel: 60-4-227-8870 Fax: 60-4-227-4068 China - Qingdao Tel: 86-532-8502-7355 Fax: 86-532-8502-7205 Philippines - Manila Tel: 63-2-634-9065 Fax: 63-2-634-9069 China - Shanghai Tel: 86-21-5407-5533 Fax: 86-21-5407-5066 Singapore Tel: 65-6334-8870 Fax: 65-6334-8850 China - Shenyang Tel: 86-24-2334-2829 Fax: 86-24-2334-2393 Taiwan - Hsin Chu Tel: 886-3-6578-300 Fax: 886-3-6578-370 China - Shenzhen Tel: 86-755-8203-2660 Fax: 86-755-8203-1760 Taiwan - Kaohsiung Tel: 886-7-213-7830 Fax: 886-7-330-9305 China - Wuhan Tel: 86-27-5980-5300 Fax: 86-27-5980-5118 Taiwan - Taipei Tel: 886-2-2500-6610 Fax: 886-2-2508-0102 China - Xian Tel: 86-29-8833-7252 Fax: 86-29-8833-7256 Thailand - Bangkok Tel: 66-2-694-1351 Fax: 66-2-694-1350 Italy - Milan Tel: 39-0331-742611 Fax: 39-0331-466781 Netherlands - Drunen Tel: 31-416-690399 Fax: 31-416-690340 Spain - Madrid Tel: 34-91-708-08-90 Fax: 34-91-708-08-91 UK - Wokingham Tel: 44-118-921-5869 Fax: 44-118-921-5820 China - Xiamen Tel: 86-592-2388138 Fax: 86-592-2388130 China - Zhuhai Tel: 86-756-3210040 Fax: 86-756-3210049 08/04/10 DS70608B-page 24-20 © 2010 Microchip Technology Inc.