jt_arm_chain_support.c File Reference

#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#include "dbg_msg.h"
#include "jt_arm.h"
#include "jt_instr.h"

Functions


Detailed Description

ARM7TDMI / ARM9TDMI Interface (support functions)


Function Documentation

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

Parameters:
chain ARM-scan chain number
Returns:
-

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)

Parameters:
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
Returns:
32 bits read out data (result of a previous instruction)

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)

Parameters:
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
Returns:
32 bits read out data (result of a previous instruction)

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   ) 

This file is part of the documentation for JTAG-GDB Server for ARM .

Generated on Mon Feb 15 21:23:21 2010 by doxygen 1.6.2.