Zoals te zien is in de titel moet ik voor school een opdracht doen waarbij ik register R0 van de ARM7TDMI-S processor uitlees via de TAP Controller (JTAG).
Plaatje van TAP Controller state machine
INTEST (1100):
The INTEST instruction places the selected scan chain in test mode:
The INTEST instruction connects the selected scan chain between DBGTDI and DBGTDO.
When the INTEST instruction is loaded into the instruction register, all the scan cells are placed in their test mode of operation.
In the CAPTURE-DR state, the value of the data applied from the core logic to the output scan cells, and the value of the data applied from the system logic to the input scan cells is captured.
In the SHIFT-DR state, the previously-captured test data is shifted out of the scan chain through the DBGTDO pin, while new test data is shifted in through the DBGTDI pin.
Single-step operation of the core is possible using the INTEST instruction.
EXTEST (0000)
The selected scan chain is placed in test mode by the EXTEST instruction. The EXTEST instruction connects the selected scan chain between TDI and TDO. When the instruction register is loaded with the EXTEST instruction, all of the scan cells are placed in their test mode of operation:
In the CAPTURE-DR state, inputs from the system logic and outputs from the output scan cells to the system are captured by the scan cells.
In the SHIFT-DR state, the previously captured test data is shifted out of the scan chain using TDO, while new test data is shifted in using the TDI input. This data is applied immediately to the system logic and system pins.
Nou heb ik op zich wel een goed idee van hoe dit moet maar ik weet niet goed het verschil tussen de publieke JTAG instructie INTEST en EXTEST.
Om een register uit te lezen moet ik de volgende stappen nemen:
Nadat ik een scanchain heb geselecteerd moet ik de public instructie INTEST of EXTEST selecteren.
Dit verbind de geselecteerde Scanchain tussen TDI en TDO.
Via INTEST of EXTEST moet ik dan 4 instructies in de ARM processor rammen.
Als laatste moet ik de data er weer uitklokken.
Ook met INTEST of EXTEST neem ik aan.
De vraag is dus welke moet ik hebben om de instructies in de ARM7TDMI te krijgen en welke heb ik nodig om uiteindelijk de data (de inhoud van R0) er weer uit te klokken.
Plaatje van TAP Controller state machine
INTEST (1100):
The INTEST instruction places the selected scan chain in test mode:
The INTEST instruction connects the selected scan chain between DBGTDI and DBGTDO.
When the INTEST instruction is loaded into the instruction register, all the scan cells are placed in their test mode of operation.
In the CAPTURE-DR state, the value of the data applied from the core logic to the output scan cells, and the value of the data applied from the system logic to the input scan cells is captured.
In the SHIFT-DR state, the previously-captured test data is shifted out of the scan chain through the DBGTDO pin, while new test data is shifted in through the DBGTDI pin.
Single-step operation of the core is possible using the INTEST instruction.
EXTEST (0000)
The selected scan chain is placed in test mode by the EXTEST instruction. The EXTEST instruction connects the selected scan chain between TDI and TDO. When the instruction register is loaded with the EXTEST instruction, all of the scan cells are placed in their test mode of operation:
In the CAPTURE-DR state, inputs from the system logic and outputs from the output scan cells to the system are captured by the scan cells.
In the SHIFT-DR state, the previously captured test data is shifted out of the scan chain using TDO, while new test data is shifted in using the TDI input. This data is applied immediately to the system logic and system pins.
Nou heb ik op zich wel een goed idee van hoe dit moet maar ik weet niet goed het verschil tussen de publieke JTAG instructie INTEST en EXTEST.
Om een register uit te lezen moet ik de volgende stappen nemen:
- Selecteer een scanchain.
- Selecteer public=eke instructie INTEST of EXTEST (JTAG Instructie)
- Duw instructie STR R[index], [R14] in de pipeline
- Duw 3x een NOP instructie in de pipeline om de voorgaande instructie verder de pipeline in te duwen.
- Lees uit wat er uit komt?
Nadat ik een scanchain heb geselecteerd moet ik de public instructie INTEST of EXTEST selecteren.
Dit verbind de geselecteerde Scanchain tussen TDI en TDO.
Via INTEST of EXTEST moet ik dan 4 instructies in de ARM processor rammen.
Als laatste moet ik de data er weer uitklokken.
Ook met INTEST of EXTEST neem ik aan.
De vraag is dus welke moet ik hebben om de instructies in de ARM7TDMI te krijgen en welke heb ik nodig om uiteindelijk de data (de inhoud van R0) er weer uit te klokken.