updated command line 802.15.4 checksum calculator and added serClose to GoodFET to...
[goodfet] / firmware / include / jtagarm7.h
index dad30bc..41ba258 100644 (file)
@@ -2,66 +2,39 @@
   \brief JTAG handler functions for the ARM7TDMI family of processors
 */
 
   \brief JTAG handler functions for the ARM7TDMI family of processors
 */
 
-#include "jtag.h"
+#ifndef JTAGARM7_H
+#define JTAGARM7_H
 
 
+#include "app.h"
+
+#define JTAGARM7 0x13
 
 #define JTAGSTATE_ARM 0         // bit 4 on dbg status reg is low
 #define JTAGSTATE_THUMB 1
 
 
 #define JTAGSTATE_ARM 0         // bit 4 on dbg status reg is low
 #define JTAGSTATE_THUMB 1
 
-#define ARMTCKTOCK  CLRTCK; PLEDOUT^=PLEDPIN; SETTCK; PLEDOUT^=PLEDPIN;
-// ASSUME RUN-TEST/IDLE STATE
-#define SHIFT_IR    SETTMS;TCKTOCK;TCKTOCK;CLRTMS;TCKTOCK;TCKTOCK;
-#define SHIFT_DR    SETTMS;TCKTOCK;CLRTMS;TCKTOCK;TCKTOCK;
-
-
-
-unsigned char current_chain;
-unsigned char current_dbgstate = -1;
-//unsigned char last_halt_debug_state = -1;
-//unsigned long last_halt_pc = -1;
-
-
-//void jtag_goto_shift_ir();
-//void jtag_goto_shift_dr();
-//void jtag_reset_to_runtest_idle();
-//void jtag_arm_tcktock();
-
-
-// JTAGARM7TDMI Commands
-
-//! Write data to address.
-unsigned long jtagarm7tdmi_writemem(unsigned long adr, unsigned long data);
-//! Read data from address
-unsigned long jtagarm7tdmi_readmem(unsigned long adr);
-
-//! Halt the CPU
-unsigned long jtagarm7tdmi_haltcpu();
-//! Release the CPU
-unsigned long jtagarm7tdmi_releasecpu();
-
-//! Set the program counter.
-void jtagarm7tdmi_setpc(unsigned long adr);
-
-//! Write data to address.
-unsigned long jtagarm7tdmi_writeflash(unsigned long adr, unsigned long data);
-
+// JTAG TAP states
+#define Exit2_DR 0x0
+#define Exit_DR 0x1
+#define Shift_DR 0x2
+#define Pause_DR 0x3
+#define Select_IR 0x4
+#define Update_DR 0x5
+#define Capture_DR 0x6
+#define Select_DR 0x7
+#define Exit2_IR 0x8
+#define Exit_IR 0x9
+#define Shift_IR 0xa
+#define Pause_IR 0xb
+#define RunTest_Idle 0xc
+#define Update_IR 0xd
+#define Capture_IR 0xe
+#define Test_Reset 0xf
+
+// JTAGARM7 Commands
 
 //! Start JTAG
 void jtagarm7tdmi_start(void);
 
 //! Start JTAG
 void jtagarm7tdmi_start(void);
-//! Reset TAP State Machine
-void jtagarm7tdmi_resettap();
-
-//! ARM-specific JTAG bit-transfer
-unsigned long jtagarmtransn(unsigned long word, unsigned char bitcount, unsigned char lsb, unsigned char end, unsigned char retidle);
-
-//! Grab debug register - Expect chain 2 to be selected
-unsigned long jtagarm7tdmi_get_dbgstate() ;
-//! Grab the core ID.
-unsigned long jtagarm7tdmi_idcode();
-//!  Connect Bypass Register to TDO/TDI
-unsigned char jtagarm7tdmi_bypass();
-//!  Connect the appropriate scan chain to TDO/TDI
-unsigned long jtagarm7tdmi_scan_intest(int n);
+
 //!  Set a 32-bit ARM register
 void jtagarm7tdmi_set_register(unsigned long reg, unsigned long val);
 //!  Get a 32-bit ARM register
 //!  Set a 32-bit ARM register
 void jtagarm7tdmi_set_register(unsigned long reg, unsigned long val);
 //!  Get a 32-bit ARM register
@@ -129,7 +102,6 @@ The least significant bit of the instruction register is scanned in and scanned
 
 
 //JTAGARM7TDMI commands
 
 
 //JTAGARM7TDMI commands
-#define JTAGARM7_RESETTARGET                0x86
 #define JTAGARM7_GET_REGISTER               0x87
 #define JTAGARM7_SET_REGISTER               0x88
 #define JTAGARM7_DEBUG_INSTR                0x89
 #define JTAGARM7_GET_REGISTER               0x87
 #define JTAGARM7_SET_REGISTER               0x88
 #define JTAGARM7_DEBUG_INSTR                0x89
@@ -150,7 +122,7 @@ The least significant bit of the instruction register is scanned in and scanned
 #define ARM_INSTR_BX_R0             0xe12fff10L
 #define ARM_INSTR_STR_Rx_r14        0xe58f0000L // from atmel docs
 #define ARM_READ_REG                ARM_INSTR_STR_Rx_r14
 #define ARM_INSTR_BX_R0             0xe12fff10L
 #define ARM_INSTR_STR_Rx_r14        0xe58f0000L // from atmel docs
 #define ARM_READ_REG                ARM_INSTR_STR_Rx_r14
-#define ARM_INSTR_LDR_Rx_r14        0xe59f0000L // from atmel docs
+#define ARM_INSTR_LDR_Rx_r14        0xe5900000L // NOT from atmel docs (e59e0000L is from atmel docs)
 #define ARM_WRITE_REG               ARM_INSTR_LDR_Rx_r14
 #define ARM_INSTR_LDR_R1_r0_4       0xe4901004L
 #define ARM_READ_MEM                ARM_INSTR_LDR_R1_r0_4
 #define ARM_WRITE_REG               ARM_INSTR_LDR_Rx_r14
 #define ARM_INSTR_LDR_R1_r0_4       0xe4901004L
 #define ARM_READ_MEM                ARM_INSTR_LDR_R1_r0_4
@@ -171,8 +143,12 @@ The least significant bit of the instruction register is scanned in and scanned
 #define THUMB_READ_REG              THUMB_INSTR_STR_R0_r0
 #define THUMB_INSTR_MOV_R0_PC       0x46b846b8L
 #define THUMB_INSTR_MOV_PC_R0       0x46474647L
 #define THUMB_READ_REG              THUMB_INSTR_STR_R0_r0
 #define THUMB_INSTR_MOV_R0_PC       0x46b846b8L
 #define THUMB_INSTR_MOV_PC_R0       0x46474647L
+#define THUMB_INSTR_MOV_HiLo        0x46404640L
+#define THUMB_INSTR_MOV_LoHi        0x46804680L
 #define THUMB_INSTR_BX_PC           0x47784778L
 #define THUMB_INSTR_NOP             0x1c001c00L
 #define THUMB_INSTR_BX_PC           0x47784778L
 #define THUMB_INSTR_NOP             0x1c001c00L
+#define THUMB_SWAP_HiLo             0
+#define THUMB_SWAP_LoHi             1
 #define ARM_REG_PC                  15
 
 #define JTAG_ARM7TDMI_DBG_DBGACK    1
 #define ARM_REG_PC                  15
 
 #define JTAG_ARM7TDMI_DBG_DBGACK    1
@@ -181,3 +157,7 @@ The least significant bit of the instruction register is scanned in and scanned
 #define JTAG_ARM7TDMI_DBG_cgenL     8
 #define JTAG_ARM7TDMI_DBG_TBIT      16
 
 #define JTAG_ARM7TDMI_DBG_cgenL     8
 #define JTAG_ARM7TDMI_DBG_TBIT      16
 
+extern app_t const jtagarm7_app;
+
+#endif // JTAGARM7_H
+