s3c4510.h
上传用户:fsjiahua
上传日期:2013-03-07
资源大小:89k
文件大小:11k
源码类别:

并口编程

开发平台:

Visual C++

  1. //JFLASH V1.0
  2. #define S3C4510_CHAIN_LENGTH 257
  3. // define I/O functions
  4. #ifdef PLATFORM_WINNT
  5. #include "dlportio.h"
  6. #define OUTB(x,y) DlPortWritePortUchar(x,y)
  7. #define INB(x) DlPortReadPortUchar(x)
  8. #else
  9. #include <conio.h>
  10. #define OUTB(x,y) _outp(x,y)
  11. #define INB(x) _inp(x)
  12. #endif
  13. // 修改映射
  14. /*
  15. #define UARXD1_IN           0
  16. #define nUADSR0_OUT         1
  17. #define UATXD0_OUT          2
  18. #define nUADTR0_IN          3
  19. #define UARXD0_IN           4
  20. #define SDA_OUT             5   // OPEN DRAIN OUTPUT
  21. #define SDA_IN              6
  22. #define SCL_OUT             7
  23. #define SCL_IN              8
  24. #define P17_ENB             9   // *
  25. #define P17_OUT             10
  26. #define P17_IN              11
  27. #define P16_ENB             12  // *
  28. #define P16_OUT             13
  29. #define P16_IN              14
  30. #define P15_ENB             15  // *
  31. #define P15_OUT             16
  32. #define P15_IN              17
  33. #define P14_ENB             18  // *
  34. #define P14_OUT             19
  35. #define P14_IN              20
  36. #define P13_ENB             21  // *
  37. #define P13_OUT             22
  38. #define P13_IN              23
  39. #define P12_ENB             24  // *
  40. #define P12_OUT             25
  41. #define P12_IN              26
  42. #define P11_ENB             27  // *
  43. #define P11_OUT             28
  44. #define P11_IN              29
  45. #define P10_ENB             30  // *
  46. #define P10_OUT             31
  47. #define P10_IN              32
  48. #define P9_ENB              33  // *
  49. #define P9_OUT              34
  50. #define P9_IN               35
  51. #define P8_ENB              36  // *
  52. #define P8_OUT              37
  53. #define P8_IN               38
  54. #define P7_ENB              39  // *
  55. #define P7_OUT              40
  56. #define P7_IN               41
  57. #define P6_ENB              42  // *
  58. #define P6_OUT              43
  59. #define P6_IN               44
  60. #define P5_ENB              45  // *
  61. #define P5_OUT              46
  62. #define P5_IN               47
  63. #define P4_ENB              48  // *
  64. #define P4_OUT              49
  65. #define P4_IN               50
  66. #define P3_ENB              51  // *
  67. #define P3_OUT              52
  68. #define P3_IN               53
  69. #define P2_ENB              54  // *
  70. #define P2_OUT              55
  71. #define P2_IN               56
  72. #define P1_ENB              57  // *
  73. #define P1_OUT              58
  74. #define P1_IN               59
  75. #define P0_ENB              60  // *
  76. #define P0_OUT              61
  77. #define P0_IN               62
  78. */
  79. #define D31_OUT_ENB         182
  80. #define D31_OUT             181
  81. #define D31_IN              183
  82. #define D30_OUT_ENB         179
  83. #define D30_OUT             178
  84. #define D30_IN              180
  85. #define D29_OUT_ENB         176
  86. #define D29_OUT             175
  87. #define D29_IN              177
  88. #define D28_OUT_ENB         173
  89. #define D28_OUT             172
  90. #define D28_IN              174
  91. #define D27_OUT_ENB         170
  92. #define D27_OUT             169
  93. #define D27_IN              171
  94. #define D26_OUT_ENB         167
  95. #define D26_OUT             166
  96. #define D26_IN              168
  97. #define D25_OUT_ENB         164
  98. #define D25_OUT             163
  99. #define D25_IN              165
  100. #define D24_OUT_ENB         161
  101. #define D24_OUT             160
  102. #define D24_IN              162
  103. #define D23_OUT_ENB         158
  104. #define D23_OUT             157
  105. #define D23_IN              159
  106. #define D22_OUT_ENB         155
  107. #define D22_OUT             154
  108. #define D22_IN              156
  109. #define D21_OUT_ENB         152
  110. #define D21_OUT             151
  111. #define D21_IN              153
  112. #define D20_OUT_ENB         149
  113. #define D20_OUT             148
  114. #define D20_IN              150
  115. #define D19_OUT_ENB         146
  116. #define D19_OUT             145
  117. #define D19_IN              147
  118. #define D18_OUT_ENB         143
  119. #define D18_OUT             142
  120. #define D18_IN              144
  121. #define D17_OUT_ENB         140
  122. #define D17_OUT             139
  123. #define D17_IN              141
  124. #define D16_OUT_ENB         137
  125. #define D16_OUT             136
  126. #define D16_IN              138
  127. #define D15_8_OUT_ENB       134
  128. #define D15_OUT             133
  129. #define D15_IN              135
  130. #define D14_OUT             131
  131. #define D14_IN              132
  132. #define D13_OUT             129
  133. #define D13_IN              130
  134. #define D12_OUT             127
  135. #define D12_IN              128
  136. #define D11_OUT             125
  137. #define D11_IN              126
  138. #define D10_OUT             123
  139. #define D10_IN              124
  140. #define D9_OUT              121
  141. #define D9_IN               122
  142. #define D8_OUT              119
  143. #define D8_IN               120
  144. #define D7_0_OUT_ENB         117
  145. #define D7_OUT              116
  146. #define D7_IN               118
  147. #define D6_OUT              114
  148. #define D6_IN               115
  149. #define D5_OUT              112
  150. #define D5_IN               113
  151. #define D4_OUT              110
  152. #define D4_IN               111
  153. #define D3_OUT              108
  154. #define D3_IN               109
  155. #define D2_OUT              106
  156. #define D2_IN               107
  157. #define D1_OUT              104
  158. #define D1_IN               105
  159. #define D0_OUT              102
  160. #define D0_IN               103
  161. //#define D_OUT_ENB           200     // *???
  162. #define A24_OUT_ENB           101
  163. #define A24_OUT             100
  164. #define A23_OUT_ENB           99
  165. #define A23_OUT             98
  166. #define A22_OUT_ENB           97
  167. #define A22_OUT             96
  168. #define A21_OUT_ENB           95
  169. #define A21_OUT             94
  170. #define A20_OUT_ENB           83
  171. #define A20_OUT             92
  172. #define A19_OUT_ENB           81
  173. #define A19_OUT             90
  174. #define A18_OUT_ENB           89
  175. #define A18_OUT             88
  176. #define A17_OUT_ENB           87
  177. #define A17_OUT             86
  178. #define A16_OUT_ENB           85
  179. #define A16_OUT             84
  180. #define A15_1_OUT_ENB           83
  181. #define A15_OUT             82
  182. #define A14_OUT             81
  183. #define A13_OUT             80
  184. #define A12_OUT             79
  185. #define A11_OUT             78
  186. #define A10_OUT             77
  187. #define A9_OUT              76
  188. #define A8_OUT              75
  189. #define A7_OUT              74
  190. #define A6_OUT              73
  191. #define A5_OUT              72
  192. #define A4_OUT              71
  193. #define A3_OUT              70
  194. #define A2_OUT              69
  195. #define A1_OUT              68
  196. #define A0_OUT_ENB           67
  197. #define A0_OUT              66
  198. /*
  199. #define ExtMACK_OUT         150
  200. #define ExtMREQ_IN          151
  201. */
  202. #define nWBE_DWE_OE_CS0_OUT_ENB          58
  203. #define nWBE_3_OUT          52
  204. #define nWBE_2_OUT          54
  205. #define nWBE_1_OUT          56
  206. #define nWBE_0_OUT          57
  207. #define nGCS_6_OUT          38
  208. #define nDWE_OUT            50
  209. /*
  210. #define nCAS_3_OUT          59
  211. #define nCAS_2_OUT          61
  212. #define nCAS_1_OUT          63
  213. #define nCAS_0_OUT          64
  214. #define nRAS_3_OUT          161
  215. #define nRAS_2_OUT          162
  216. #define nRAS_1_OUT          163
  217. #define nRAS_0_OUT          164
  218. */
  219. #define nRCS_5_OUT          39
  220. #define nRCS_4_OUT          41
  221. #define nRCS_3_OUT          43
  222. #define nRCS_2_OUT          45
  223. #define nRCS_1_OUT          47
  224.   /*
  225. #define CLKSEL_IN           170
  226. #define nRESET_IN           171
  227. #define MCLK_IN             172
  228. #define MCLKO_OUT           173
  229. #define CLKOEN_IN           174
  230. */
  231. #define nRCS_0_OUT          49
  232. //#define B0SIZE_1_IN         176
  233. //#define B0SIZE_0_IN         177
  234. #define nOE_OUT             51
  235. /*
  236. #define nEWAIT_IN           179
  237. #define nECS_3_OUT          180
  238. #define nECS_2_OUT          181
  239. #define nECS_1_OUT          182
  240. #define nECS_0_OUT          183
  241. #define DIS_BUS             184     // *
  242. #define UCLK_IN             185
  243. #define TMODE_IN            186
  244. #define MDC_OUT             187
  245. #define LITTLE_IN           188
  246. #define MDIO_OE             189
  247. #define MDIO_OUT            190
  248. #define MDIO_IN             191
  249. #define TX_EN_TXEN_10M_OUT  192
  250. #define TX_CLK_TXCLK_10M_OUT    193
  251. #define TX_ERR_PCOMP_10M_OUT    194
  252. #define TXD3_OUT            195
  253. #define TXD2_OUT            196
  254. #define TXD1_LOOP10_OUT     197
  255. #define TXD0_TXD_10M_OUT    198
  256. #define COL_COL_10M_IN      199
  257. #define RX_CLK_RXCLK_10M_IN 200
  258. #define RX_ERR_IN           201
  259. #define RXD3_IN             202
  260. #define RXD2_IN             203
  261. #define RXD1_IN             204
  262. #define RXD0_RXD_10M_IN     205
  263. #define RX_DV_LINK10_IN     206
  264. #define CRS_CRS_10M_IN      207
  265. #define TXCBEN              208     // *
  266. #define TXCB_OUT            209
  267. #define TXCB_IN             210
  268. #define nSYNCB_OUT          211
  269. #define RXCB_IN             212
  270. #define nDCDB_IN            213
  271. #define nCTSB_IN            214
  272. #define TXDB_OUT            215
  273. #define nRTSB_OUT           216
  274. #define RXDB_IN             217
  275. #define nDTRB_OUT           218
  276. #define TXCAEN              219     // *
  277. #define TXCA_OUT            220
  278. #define TXCA_IN             221
  279. #define nSYNCA_OUT          222
  280. #define RXCA_IN             223
  281. #define nDCDA_IN            224
  282. #define nCTSA_IN            225
  283. #define TXDA_OUT            226
  284. #define nRTSA_OUT           227
  285. #define RXDA_IN             228
  286. #define nDTRA_OUT           229
  287. #define nUADSR1_OUT         230
  288. #define UATXD1_OUT          231
  289. #define nUADTR1_IN          232
  290. */
  291. #define TRST    0x01
  292. #define LPT1 0x3bc // hardware base address for parallel port
  293. #define LPT2 0x378 // the search order is LPT1 then 2 then 3
  294. #define LPT3 0x278 // first valid address found is used (re-order if needed for multiple ports)
  295. #define READ  0 // Flags used to modify the S3C4510 JTAG chain data depending on
  296. #define WRITE 1 // the access mode of the Flash Memory
  297. #define SETUP 2
  298. #define HOLD  3
  299. #define RS    4
  300. #define NONE  5
  301. #define IP    0 // Flag used when accessing the parallel port
  302. #define RP    1 // RP = 'read port', IP = 'ignore port', using IP will speed access
  303. #define S3C4510ID   "**** 1111000011110000 11110000111 1" // JTAG ID-codes for the S3C4510
  304.                  // "0001 1111000011110000 11110000111 1"
  305. void error_out(char *error_string);
  306. unsigned short test_port(void);
  307. int  putp(int tdi, int tms, int rp);
  308. void reset_jtag(void);
  309. void test_logic_reset(void);
  310. int  check_id(char *device_id);
  311. void id_command(void);
  312. void bypass_all(void);
  313. void extest(void);
  314. void write_rom(DWORD address, unsigned char data);
  315. unsigned char read_rom(DWORD address);
  316. void write_rom2(DWORD address, WORD data);
  317. WORD read_rom2(DWORD address);
  318. DWORD access_rom(int rw, DWORD address, DWORD data, int rp);
  319. DWORD access_bus(int rw, DWORD address, DWORD data, int rp);
  320. DWORD access_bus2(int rw, DWORD address, DWORD data, int rp);
  321. DWORD s3c4510_bus(int cs, int rw, DWORD address, DWORD data, int rp);
  322. DWORD s3c4510_bus2(int cs, int rw, DWORD address, DWORD data, int rp);