#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#include "dbg_msg.h"
#include "jt_arm.h"
#include "jt_instr.h"
ARM7TDMI / ARM9TDMI Interface (support functions)
void jtag_arm_set_chain | ( | int | chain | ) |
support function to set the JTAG scan chain
scan chain 0 (113 bits) - Macrocell Scan Test
scan chain 1 ( 33 bits) - Debug - at ARM7TDMI
scan chain 1 ( 67 bits) - Debug - at ARM9TDMI
scan chain 2 ( 38 bits) - Embedded ICE logic
note:
scan chain 3 number of bits are processor dependent
chain | ARM-scan chain number |
References DBG_LEVEL_JTAG_ICERT_LOW, error_exit_code, IF_DBG, instr_scan_n, jtag_exchange_data(), jtag_send_instr(), jtag_supp_int2bitstr_MSB_First(), NON, and scan_chain.
Referenced by jt_amdflashProgByte_faster(), jt_amdflashProgHalfword_faster(), jt_amdflashProgWord_faster(), jtag_arm720_CP15DataExchange(), jtag_arm720_CP15InstrReg(), jtag_arm920_CP15_CleanDcache(), jtag_arm920_CP15_DrainWriteBuffer(), jtag_arm920_CP15_InvalidateICache(), jtag_arm920_CP15_InvalidateTLB(), jtag_arm920_CP15_ReadDTTB(), jtag_arm920_CP15_ReadITTB(), jtag_arm920_CP15Interpret(), jtag_arm920_CP15PhysRegRead(), jtag_arm920_CP15PhysRegWrite(), jtag_arm926_CP15RegRead(), jtag_arm926_CP15RegWrite(), jtag_arm966_CP15RegRead(), jtag_arm966_CP15RegWrite(), jtag_arm_chain1_sysspeed_restart(), jtag_arm_IceRT_RegRead(), jtag_arm_IceRT_RegRead_Once(), jtag_arm_IceRT_RegWrite(), jtag_arm_IceRT_RegWrite_getPrevData(), jtag_arm_PrepareExitDebug(), jtag_arm_ReadByte(), jtag_arm_ReadCpuRegs(), jtag_arm_ReadHalfword(), jtag_arm_ReadWord(), jtag_arm_ReadWordMemory(), jtag_arm_ResynchStep(), jtag_arm_RunProgram(), jtag_arm_Step(), jtag_arm_WriteByte(), jtag_arm_WriteCpuRegs(), jtag_arm_WriteHalfword(), jtag_arm_WriteMemoryBuf(), and jtag_arm_WriteWord().
unsigned int jtag_arm7_mov_chain1_data | ( | int | break_bit, | |
int * | old_break, | |||
int | data, | |||
int | read_prev_data | |||
) |
function to send instruction data and the breakpoint bit via scan chain 1 to the CPU
NOTE: Scan chain 1 bit order is (from DIN to DOUT): D0..D31, BREAKPT
break_bit = DEBUG_SPEED (=0) ; clear BREAKPT , go to Run/Idle break_bit = SYSTEM_SPEED (=1) ; set BREAKPT , go to Run/Idle break_bit = DEBUG_REPEAT_SPEED (=2) ; clear BREAKPT , go to Run/Idle (twice) break_bit = RESTART_SPEED (=4) ; clear BREAKPT, prepare to leave debug mode and prepare restart
The previous BREAKPT value is stored to old_break (useful to know the reason we entered DEBUG)
break_bit | additional command bit set if SYSTEM_SPEED | |
old_break | indicator if entered by BREAK- or WATCHPOINT | |
data | 32 bit data to write | |
read_prev_data | WRITE_ONLY = 0; or READ_WRITE = 1 |
References DEBUG_REPEAT_SPEED, INTEST, jtag_eos(), jtag_exchange_data(), jtag_supp_bitstr2int_LSB_First(), jtag_supp_int2bitstr_LSB_First(), transaction::parameter, RESTART_SPEED, scan_chain, SYSTEM_SPEED, transactionActivate(), transactionCreate(), transactionErase(), transactionExecute(), transactionGet(), transactionPenting(), and transaction::uplevel.
Referenced by jt_amdflashProgByte_faster(), jt_amdflashProgHalfword_faster(), jt_amdflashProgWord_faster(), jtag_arm7_PrepareExitDebug(), jtag_arm7_ReadByte(), jtag_arm7_ReadCpuRegs(), jtag_arm7_ReadHalfword(), jtag_arm7_ReadWord(), jtag_arm7_ReadWordMemory(), jtag_arm7_ResynchStep(), jtag_arm7_RunProgram(), jtag_arm7_Step(), jtag_arm7_WriteByte(), jtag_arm7_WriteCpuRegs(), jtag_arm7_WriteHalfword(), jtag_arm7_WriteMemoryBuf(), and jtag_arm7_WriteWord().
unsigned int jtag_arm9_mov_chain1_data | ( | int | sysspeed_bit, | |
int * | old_sysspeed, | |||
int | data_val, | |||
int | cmd_val, | |||
int | read_prev_data | |||
) |
function to send instruction, data and the sysspeed bit via scan chain 1 to the CPU
NOTE: Scan chain 1 bit order is (from DIN to DOUT): Dat_0..Dat_31,DDEN,WPT,SYSSPEED,Instr_31..Instr_0
break_bit = DEBUG_SPEED (=0) ; clear BREAKPT , go to Run/Idle break_bit = SYSTEM_SPEED (=1) ; set BREAKPT , go to Run/Idle break_bit = DEBUG_REPEAT_SPEED (=2) ; clear BREAKPT , go to Run/Idle (twice) break_bit = RESTART_SPEED (=4) ; clear BREAKPT, prepare to leave debug mode and prepare restart
The previous BREAKPT value is stored to old_sysspeed (useful to know the reason we entered DEBUG)
sysspeed_bit | additional command bit set if SYSTEM_SPEED | |
old_sysspeed | indicator if entered by BREAK- or WATCHPOINT (SYSSPEED @ Bit0) | |
data_val | 32 bit data to write | |
cmd_val | 32 bit command data to write | |
read_prev_data | WRITE_ONLY = 0; or READ_WRITE = 1 |
References DATA_SPEED, DEBUG_REPEAT_SPEED, INTEST, jtag_eos(), jtag_exchange_data(), jtag_supp_bitstr2int_LSB_First(), jtag_supp_bitstr2int_MSB_First(), jtag_supp_int2bitstr_LSB_First(), jtag_supp_int2bitstr_MSB_First(), transaction::parameter, RESTART_SPEED, scan_chain, SYSTEM_SPEED, transactionActivate(), transactionCreate(), transactionErase(), transactionExecute(), transactionGet(), transactionPenting(), and transaction::uplevel.
Referenced by jtag_arm920_CP15_CleanDcache(), jtag_arm920_CP15_DrainWriteBuffer(), jtag_arm920_CP15_InvalidateICache(), jtag_arm920_CP15_InvalidateTLB(), jtag_arm920_CP15_ReadDTTB(), jtag_arm920_CP15_ReadITTB(), jtag_arm9_PrepareExitDebug(), jtag_arm9_ReadByte(), jtag_arm9_ReadCpuRegs(), jtag_arm9_ReadHalfword(), jtag_arm9_ReadWord(), jtag_arm9_ReadWordMemory(), jtag_arm9_ResynchStep(), jtag_arm9_RunProgram(), jtag_arm9_Step(), jtag_arm9_WriteByte(), jtag_arm9_WriteCpuRegs(), jtag_arm9_WriteHalfword(), jtag_arm9_WriteMemoryBuf(), and jtag_arm9_WriteWord().
void jtag_arm_chain1_sysspeed_restart | ( | void | ) |
Perform a single system speed access.
Enter the RESTART instruction in the TAP controller.
Wait to get ready.
Go back to INTEST.
- |
References DBG_LEVEL_GDB_ARM_ERROR, DBG_LEVEL_JTAG_ICERT_LOW, dbgPrintf(), ICERT_REG_DEBUG_STATUS, instr_intest, instr_restart, INTEST, jtag_arm_IceRT_RegRead(), jtag_arm_set_chain(), jtag_eos(), jtag_linger(), jtag_send_instr(), and scan_chain.
Referenced by jt_amdflashProgByte_faster(), jt_amdflashProgHalfword_faster(), jt_amdflashProgWord_faster(), jtag_arm7_ReadByte(), jtag_arm7_ReadCpuRegs(), jtag_arm7_ReadHalfword(), jtag_arm7_ReadWord(), jtag_arm7_ReadWordMemory(), jtag_arm7_WriteByte(), jtag_arm7_WriteHalfword(), jtag_arm7_WriteMemoryBuf(), jtag_arm7_WriteWord(), jtag_arm920_CP15_CleanDcache(), jtag_arm920_CP15_DrainWriteBuffer(), jtag_arm920_CP15_InvalidateICache(), jtag_arm920_CP15_InvalidateTLB(), jtag_arm920_CP15_ReadDTTB(), jtag_arm920_CP15_ReadITTB(), jtag_arm9_ReadByte(), jtag_arm9_ReadCpuRegs(), jtag_arm9_ReadHalfword(), jtag_arm9_ReadWord(), jtag_arm9_ReadWordMemory(), jtag_arm9_ResynchStep(), jtag_arm9_WriteByte(), jtag_arm9_WriteHalfword(), jtag_arm9_WriteMemoryBuf(), jtag_arm9_WriteWord(), and jtag_arm_ResynchStep().