-/*! \file jtag.h
+/*! \file jtag430.h
\author Travis Goodspeed
\brief JTAG handler functions.
-
-FIXME: Remove these when proven compiling
-#include <signal.h>
-#include <io.h>
-#include <iomacros.h>
*/
+#ifndef JTAG430_H
+#define JTAG430_H
+#include "app.h"
#include "jtag.h"
+#define JTAG430 0x16
+
extern unsigned int drwidth;
#define MSP430MODE 0
// JTAG430 Commands
-//! Start JTAG, unique to the '430.
+//! Start JTAG, unique to the '430. Deprecated.
void jtag430_start();
+//! Same thing, but also for '430X2.
+unsigned char jtag430x2_start();
//! Reset the TAP state machine, check the fuse.
void jtag430_resettap();
void jtag430_setpc(unsigned int adr);
//! Write data to address.
void jtag430_writeflash(unsigned int adr, unsigned int data);
+//! Shift an address width of data
+uint32_t jtag430_shift_addr( uint32_t addr );
//16-bit MSP430 JTAG commands, bit-swapped
#define JTAG430_RELEASECPU 0xA1
#define JTAG430_SETINSTRFETCH 0xC1
#define JTAG430_SETPC 0xC2
+#define JTAG430_SETREG 0xD2
+#define JTAG430_GETREG 0xD3
+
#define JTAG430_WRITEMEM 0xE0
#define JTAG430_WRITEFLASH 0xE1
#define JTAG430_READMEM 0xE2
#define JTAG430_VERIFYMEM 0xE5
#define JTAG430_BLOWFUSE 0xE6
#define JTAG430_ISFUSEBLOWN 0xE7
+#define JTAG430_ERASEINFO 0xE8
#define JTAG430_COREIP_ID 0xF0
#define JTAG430_DEVICE_ID 0xF1
+
+extern app_t const jtag430_app;
+
+#endif // JTAG430_H