SourcePoint AMD Help

Table of Contents

Which Processor Is Which

Introduction

SourcePoint orders processors from last to first on the JTAG chain. This follows the order in which the JTAG device ID is shifted out. That is, since the last processor on the JTAG chain outputs its data first, it is considered the first, or P0 processor. The next-to-last processor shifts out its data next and is considered the P1 processor, and so on.

What Does "Last on the Chain, First on the Chain" Mean?

The JTAG chain is a serial data flow from the emulator, through each processor, then back to the emulator (See Figure 1, below). As data is shifted out of the emulator, existing data that are in the processors are shifted back to the emulator. When the data goes back into the emulator, it goes into a buffer, filling the buffer from top to bottom.

Figure 1

As an example, one of the first operations the emulator performs is getting device IDs from all the processors in the JTAG chain (the serial circuit created by connecting all processor together as in the diagram). Nearly all ARM processors have the capability to return a device ID. In their initial state, processors have a 32-bit register that contains the device ID and is attached between TDI and TDO. By shifting the data through the circuit, the device ID for the last processor (P0 in the diagram) is shifted out first and onto the top of the buffer inside the emulator. (The first device ID has been shifted out from the last processor in the circuit, the device ID for the next-to-last processor has been shifted into the last processor and more shifting needs to be done to shift it through and into the emulator into the next available space in the buffer.) At that point, the emulator have the device ID for the last processor first, followed by the next-to-last processor. That is why SourcePoint orders the processors from last to first on the chain.

How Is This Related to the PROCESSORCONTROL Variable in SourcePoint?

The PROCESSORCONTROL variable contains a mask of which processors SourcePoint should control. The mask is actually a bit pattern representing the processors that are on the JTAG chain, the least significant bit representing P0, the next significant bit representing P1, and so on. If a particular bit is 1, then SourcePoint is to control that processor. If 0, then SourcePoint is to ignore that processor. By default, PROCESSORCONTROL has "on" all the bits that correspond to the number of processors. That is to say, if there are two processors in the chain, similar to the diagram above, then PROCESSORCONTROL is 0x03 by default. If there were four processors in the chain, then PROCESSORCONTROL would be 0x0f by default.

By setting off the bits for the corresponding processor, you can make SourcePoint ignore certain processors. For example, in the diagram above, if you only want to control P1, then you can set PROCESSORCONTROL=0x02. Likewise, if you only want to control P0, then you can set PROCESSORCONTROL=0x01.

Using another example where four processor are on the JTAG chain, they are labeled P0, P1, P2 and P3. Similar to the previous two processor examples above, P0 is still be the last one in the chain, P1 is the next to last, P2 the next to next-to-last (or the second) and P3 would be the first in the chain. ย Then, for example, if you wanted only to control P3, you would set PROCESSORCONTROL=0x08. Using the mask, you can control any combination of processors. In the case of, say, four processors in the chain, then to control P0 and P2, you could set PROCESSORCONTROL=0x05.

What Does It Mean to Control More Than One Processor?

When you click on the Go button (or use the Go command) in SourcePoint, all processors that SourcePoint is to control are started. When you click on the Stop button (or use the Halt command), all processors that SourcePoint is to control are stopped. However, the single step command will only single step a single processor.