9f6c0f467f3ca8f262e2354458744b0ec68287d3
[goodfet] / firmware / include / command.h
1 /*! \file command.h
2   \author Travis Goodspeed
3   \brief Command codes and buffers.
4 */
5
6 //! Global data buffer.
7
8 #ifndef CMDDATALEN
9 #define CMDDATALEN 0x200
10 #endif
11
12 extern unsigned char cmddata[CMDDATALEN];
13 extern unsigned char silent;
14
15 #define cmddataword ((unsigned int*) cmddata)
16 #define cmddatalong ((unsigned long*) cmddata)
17 #define memorybyte ((unsigned char*) 0)
18 #define memoryword ((unsigned int*) 0)
19
20 // Global Commands
21 #define READ  0x00
22 #define WRITE 0x01
23 #define PEEK  0x02
24 #define POKE  0x03
25 #define SETUP 0x10
26 #define START 0x20
27 #define STOP  0x21
28 #define NOK   0x7E
29 #define OK    0x7F
30
31 #define DEBUGSTR 0xFF
32
33 // Monitor Commands
34 #define MONITOR_CHANGE_BAUD 0x80
35 #define MONITOR_RAM_PATTERN 0x90
36 #define MONITOR_RAM_DEPTH 0x91
37
38 #define MONITOR_DIR 0xA0
39 #define MONITOR_OUT 0xA1
40 #define MONITOR_IN  0xA2
41
42 #define MONITOR_SILENT 0xB0
43
44 #define MONITOR_READBUF 0xC0
45 #define MONITOR_WRITEBUF 0xC1
46 #define MONITOR_SIZEBUF 0xC2
47
48
49 //CHIPCON commands
50 #define CC_CHIP_ERASE 0x80
51 #define CC_WR_CONFIG 0x81
52 #define CC_RD_CONFIG 0x82
53 #define CC_GET_PC 0x83
54 #define CC_READ_STATUS 0x84
55 #define CC_SET_HW_BRKPNT 0x85
56 #define CC_HALT 0x86
57 #define CC_RESUME 0x87
58 #define CC_DEBUG_INSTR 0x88
59 #define CC_STEP_INSTR 0x89
60 #define CC_STEP_REPLACE 0x8a
61 #define CC_GET_CHIP_ID 0x8b
62 //CHIPCON macros
63 #define CC_READ_CODE_MEMORY 0x90
64 #define CC_READ_XDATA_MEMORY 0x91
65 #define CC_WRITE_XDATA_MEMORY 0x92
66 #define CC_SET_PC 0x93
67 #define CC_CLOCK_INIT 0x94
68 #define CC_WRITE_FLASH_PAGE 0x95
69 #define CC_READ_FLASH_PAGE 0x96
70 #define CC_MASS_ERASE_FLASH 0x97
71 #define CC_PROGRAM_FLASH 0x98
72
73 //JTAG commands
74 #define JTAG_IR_SHIFT 0x80
75 #define JTAG_DR_SHIFT 0x81
76 #define JTAG_DR_SHIFT20 0x91
77
78 //SPI commands
79 #define SPI_JEDEC 0x80
80 #define SPI_ERASE 0x81
81
82 //OCT commands
83 #define OCT_CMP 0x90
84 #define OCT_RES 0x91
85
86 //JTAG430 commands
87 #define JTAG430_HALTCPU 0xA0
88 #define JTAG430_RELEASECPU 0xA1
89 #define JTAG430_SETINSTRFETCH 0xC1
90 #define JTAG430_SETPC 0xC2
91 #define JTAG430_WRITEMEM 0xE0
92 #define JTAG430_WRITEFLASH 0xE1
93 #define JTAG430_READMEM 0xE2
94 #define JTAG430_ERASEFLASH 0xE3
95 #define JTAG430_ERASECHECK 0xE4
96 #define JTAG430_VERIFYMEM 0xE5
97 #define JTAG430_BLOWFUSE 0xE6
98 #define JTAG430_ISFUSEBLOWN 0xE7
99 #define JTAG430_COREIP_ID 0xF0
100 #define JTAG430_DEVICE_ID 0xF1
101
102 //! Handle a plugin, weak-linked to error.
103 extern int pluginhandle(unsigned char app,
104                         unsigned char verb,
105                         unsigned int len)
106   __attribute__ ((weak));
107
108
109 //! Handle a command.  Defined in goodfet.c
110 void handle(unsigned char app,
111             unsigned char verb,
112             unsigned long len);
113 //! Transmit a header.
114 void txhead(unsigned char app,
115             unsigned char verb,
116             unsigned long len);
117 //! Transmit data.
118 void txdata(unsigned char app,
119             unsigned char verb,
120             unsigned long len);
121 //! Transmit a string.
122 void txstring(unsigned char app,
123               unsigned char verb,
124               const char *str);
125
126 //! Receive a long.
127 unsigned long rxlong();
128 //! Receive a word.
129 unsigned int rxword();
130
131 //! Transmit a long.
132 void txlong(unsigned long l);
133 //! Transmit a word.
134 void txword(unsigned int l);
135
136 //! Transmit a debug string.
137 void debugstr(const char *str);
138
139 //! Delay for a count.
140 void delay(unsigned int count);
141 //! MSDelay
142 void msdelay(unsigned int ms);
143
144
145 void monitorhandle(unsigned char, unsigned char, unsigned long);
146 void spihandle(unsigned char, unsigned char, unsigned long);
147 void i2chandle(unsigned char, unsigned char, unsigned long);
148 void cchandle(unsigned char, unsigned char, unsigned long);
149 void jtaghandle(unsigned char, unsigned char, unsigned long);
150 void jtag430handle(unsigned char, unsigned char, unsigned long);
151 void jtag430x2handle(unsigned char app, unsigned char verb,
152                      unsigned long len);
153