VT1420.gel
上传用户:dahaojd
上传日期:2008-01-29
资源大小:14357k
文件大小:14k
源码类别:

DSP编程

开发平台:

C/C++

  1. /*--------------------------------------------------------------*/
  2. /* VT1420.gel                                                   */
  3. /* version xxxx                                                 */
  4. /*                                                              */
  5. /* This GEL file is designed to be used in conjunction with the */
  6. /* CCS 2.0 and the VT-142x TMS320C6416 DSP based PMC modules.   */
  7. /* Copied from the TI TEB_6416.gel.                             */
  8. /*                                                              */
  9. /* Things to do:                                                */
  10. /*     LED on/off func like LED_cycle()                         */
  11. /*     Memory/config detect: Read GPIO, test memory, determine  */
  12. /*                           Flash type (AMD vs SST) like       */
  13. /*                                     QuickTest()              */
  14. /*--------------------------------------------------------------*/
  15. /*--------------------------------------------------------------*/
  16. /* The StartUp() function is called each time CCS is started.   */
  17. /* Customize this function to perform desired initialization.   */
  18. /*--------------------------------------------------------------*/
  19. StartUp()
  20. {
  21. /*  setup_memory_map();  */
  22.   GEL_Reset();  
  23.   init_emif();
  24.   init_GPIO();
  25. /*--------------------------------------------------------------*/
  26. /* The setup_memory_map() function does not appear to work in   */
  27. /* the simulator.  It code be unnecessary since C64x only has   */
  28. /* one mapping (unlike other TI DSPs).                          */
  29. /*--------------------------------------------------------------*/
  30. setup_memory_map()
  31. {
  32.         GEL_MapOn();
  33.         GEL_MapReset();
  34.         GEL_MapAdd(0x00000000, 0, 0x00100000, 1, 1); /* Internal Memory       */
  35.         GEL_MapAdd(0x01800000, 0, 0x00000054, 1, 1); /* EMIFA CTL REGS        */
  36.         GEL_MapAdd(0x01840000, 0, 0x000082FC, 1, 1); /* INT MEM CTL REGS      */
  37.         GEL_MapAdd(0x018C0000, 0, 0x0000003C, 1, 1); /* MCBSP0 CTL REGS       */
  38.         GEL_MapAdd(0x01900000, 0, 0x0000003C, 1, 1); /* MCBSP1 CTL REGS       */
  39.         GEL_MapAdd(0x01940000, 0, 0x00000008, 1, 1); /* TIMER0 CTL REGS       */
  40.         GEL_MapAdd(0x01980000, 0, 0x00000008, 1, 1); /* TIMER1 CTL REGS       */
  41.         GEL_MapAdd(0x019C0000, 0, 0x00000008, 1, 1); /* INT CTL REGS          */
  42.         GEL_MapAdd(0x01A00000, 0, 0x0000FFFC, 1, 1); /* EDMA REGS AND PARAM   */
  43.         GEL_MapAdd(0x01A40000, 0, 0x0000003C, 1, 1); /* MCBSP2 CTL REGS       */
  44.         GEL_MapAdd(0x01A80000, 0, 0x00000054, 1, 1); /* EMIFB CTL REGS        */
  45.         GEL_MapAdd(0x01AC0000, 0, 0x00000008, 1, 1); /* TIMER2 CTL REGS       */
  46.         GEL_MapAdd(0x01B00000, 0, 0x00000024, 1, 1); /* GPIO REGS             */
  47.         GEL_MapAdd(0x02000000, 0, 0x00000030, 1, 1); /* QDMA REGS             */
  48.         GEL_MapAdd(0x30000000, 0, 0x04000000, 1, 1); /* MCBSP0 Data, EDMA map */
  49.         GEL_MapAdd(0x34000000, 0, 0x04000000, 1, 1); /* MCBSP1 Data, EDMA map */
  50.         GEL_MapAdd(0x38000000, 0, 0x04000000, 1, 1); /* MCBSP2 Data, EDMA map */
  51.         GEL_MapAdd(0x64000000, 0, 0x00040000, 1, 1); /* FLASH EMIF-B, CE1     */
  52.         GEL_MapAdd(0x80000000, 0, 0x01000000, 1, 1); /* 16MB SDRAM EMIF-A, CE0*/
  53. }
  54. /*--------------------------------------------------------------*/
  55. /* init_emif()                                                      */
  56. /*             EMIF settings depend on EMIF Clock freq and      */
  57. /*                     memory device specifics.                 */
  58. /*                                                              */
  59. /*             SDRAM devices: MT48LC2M32B2-7                    */
  60. /*                            2Mx32, 512Kx32x4 banks            */
  61. /*                            tRC(-7) = 70 nsec                 */
  62. /*                            tRP(-7) = 20 nsec                 */
  63. /*                            tRCD(-7) = 20 nsec                */
  64. /*                            tREF(-7) = 64 msec for 4,096 rows */
  65. /*                            tCL = 2 tcyc (min) for <=100MHz   */
  66. /*                            tRAS(-7) = 42(min)-120K(max)nsec  */
  67. /*                            tRRD(-7) = 14 nsec                */
  68. /*                            tWR(-7) = 1 tcyc + 7 nsec (17min) */
  69. /*                               min for the following=         */
  70. /*                                    tRC for same bank         */
  71. /*                                    tRRD for different banks  */
  72. /*                            tRD2RD(-7) = 1 tcyc (figure 8)    */
  73. /*                            tRD2DEAC(-7) = 2 tcyc (p 17)      */
  74. /*                            tRD2WR(-7) = 1 tcyc (fig 9)       */
  75. /*                            tR2WDQM(-7) = 2 tcyc (p 16)       */
  76. /*                            tWR2WR(-7) = 1 tcyc (p 19)        */
  77. /*                            tWR2DEAC(-7) = 2 tcyc (p 20)      */
  78. /*                            tWR2RD(-7) = 1 tcyc (p 20)        */
  79. /*                                                              */
  80. /*                                                              */
  81. /*                                                              */
  82. /*             EMIFA Clock: 100MHz  (10 nsec tcyc)              */ 
  83. /*                          33MHz DSP input clock               */
  84. /*                          CPU=400MHz (x12 multiplier)         */
  85. /*                          EMIFA clock boot settings: 01 CPU/4 */
  86. /*                            :AECLKIN_SELECT = CPU/4 = 100MHz  */
  87. /*                          Notes: VT-1420 uses ECLKOUT2        */
  88. /*                                 DSP EMIF timing is based on  */
  89. /*                                    ECLKOUT1 for tcyc         */
  90. /*                                                              */
  91. /*--------------------------------------------------------------*/
  92. init_emif()
  93. {
  94. #define EMIFA_GCTL       0x01800000
  95. #define EMIFA_CE1        0x01800004
  96. #define EMIFA_CE0        0x01800008
  97. #define EMIFA_CE2        0x01800010
  98. #define EMIFA_CE3        0x01800014
  99. #define EMIFA_SDRAMCTL   0x01800018
  100. #define EMIFA_SDRAMREF   0x0180001c
  101. #define EMIFA_SDRAMEXT   0x01800020
  102. #define EMIFA_CE1SECCTL  0x01800044
  103. #define EMIFA_CE0SECCTL  0x01800048
  104. #define EMIFA_CE2SECCTL  0x01800050
  105. #define EMIFA_CE3SECCTL  0x01800054
  106. #define EMIFB_GCTL       0x01A80000
  107. #define EMIFB_CE1        0x01A80004
  108. #define EMIFB_CE0        0x01A80008
  109. #define EMIFB_CE2        0x01A80010
  110. #define EMIFB_CE3        0x01A80014
  111. #define EMIFB_SDRAMCTL   0x01A80018
  112. #define EMIFB_SDRAMREF   0x01A8001c
  113. #define EMIFB_SDRAMEXT   0x01A80020
  114. #define EMIFB_CE1SECCTL  0x01A80044
  115. #define EMIFB_CE0SECCTL  0x01A80048
  116. #define EMIFB_CE2SECCTL  0x01A80050
  117. #define EMIFB_CE3SECCTL  0x01A80054
  118.         
  119.     /* EMIFA Control */
  120.         *(int *)EMIFA_GCTL     = 0x000120DC; /* Why did TEB board write a '1' to bit 12? */
  121.         
  122.         /*EMIFA CE0 SDRAM*/
  123.         *(int *)EMIFA_CE0      = 0xffffffdf;
  124.         *(int *)EMIFA_SDRAMCTL = 0x47116000; /* Pure coincedence that this matches the TEB */
  125.         *(int *)EMIFA_SDRAMREF = 0x000005DC; /* Use powerup default, more conservative than TEB */
  126.         *(int *)EMIFA_SDRAMEXT = 0x000504A8; /* TEB value of 0x00054549 is more conservative */
  127.                                              /* I thought it should be 0x000504A8 */
  128.         
  129.     /* EMIFB Control */
  130.         *(int *)EMIFB_GCTL     = 0x000120DC; 
  131.         
  132.         /*EMIFB CE1 FLASH, 8 Bit*/
  133.         *(int *)EMIFB_CE1      = 0xffffff03; /* Conservative #, Optimize speed by trying VT-1402 number 0x2372CD23 */
  134.         *(int *)EMIFA_SDRAMCTL = 0x47116000; /* Do this again to reset the SDRAM */
  135. }
  136.  
  137. /*--------------------------------------------------------------*/
  138. /* GPIO DEFINITIONS, 1=Enable, 1=Output DIR                     */
  139. /*--------------------------------------------------------------*/
  140. #define GPEN_REG       0x01B00000
  141. #define GPDIR_REG      0x01B00004
  142. #define GPVAL_REG      0x01B00008
  143. #define MS_FLASH       0x0001
  144. #define GREEN_LED      0x0002
  145. #define RED_LED        0x0004
  146. #define MCBSP2_EN      0x0008
  147. #define EXT_INT4       0x0010
  148. #define EXT_INT5       0x0020
  149. #define EXT_INT6       0x0040
  150. #define DSP_ID         0x0080
  151. #define Get_GPIO_En     (*(char *)GPEN_REG )
  152. #define Get_GPIO_Val    (*(char *)GPVAL_REG )
  153. #define Get_DSP_ID      ( (*(char *)GPVAL_REG & DSP_ID) >> 7 )
  154. #define Get_GREEN_LED   ( (*(char *)GPVAL_REG & GREEN_LED) >> 1 )
  155. #define Get_RED_LED     ( (*(char *)GPVAL_REG & RED_LED) >> 2 )
  156. /*--------------------------------------------------------------*/
  157. /* Timer GPIO DEFINITIONS, 1=Enable, 1=Output DIR               */
  158. /*--------------------------------------------------------------*/
  159. #define T0_CTL_REG       0x01940000
  160. #define T1_CTL_REG       0x01980000
  161. #define T1_CTL_REG       0x01AC0000
  162.  
  163. #define TIMER_CTL_DEF    0x00000000
  164. #define TIMER_DIN        0x0004
  165. #define TIMER_DOUT       0x0008
  166. #define Get_DSP_Cfg0    ( (*(char *)T0_CTL_REG & TIMER_DIN) >> 2 )
  167. #define Get_DSP_Cfg1    ( (*(char *)T1_CTL_REG & TIMER_DIN) >> 2 )
  168. /*--------------------------------------------------------------*/
  169. /* init_GPIO()                                                  */
  170. /*--------------------------------------------------------------*/
  171. init_GPIO()
  172. {
  173. /*    *(char *)GPEN_REG = Get_GPIO_En | (GREEN_LED | RED_LED | DSP_ID) ; */
  174.         *(char *)GPEN_REG = 0x0 | (GREEN_LED | RED_LED | DSP_ID) ; 
  175.         *(char *)GPDIR_REG = 0x0 | (GREEN_LED | RED_LED) ; 
  176. }
  177. /*--------------------------------------------------------------*/
  178. /* clear_memory_map()                                           */
  179. /*--------------------------------------------------------------*/
  180. clear_memory_map()
  181. {
  182.     GEL_MapOff();
  183. }
  184. /*--------------------------------------------------------------*/
  185. /* LED_cycle()                                                  */
  186. /*--------------------------------------------------------------*/
  187. LED_cycle()
  188. {
  189.   RED_LED_off();
  190.   GREEN_LED_off();
  191.   RED_LED_on();
  192.   GREEN_LED_on();
  193.   RED_LED_off();
  194. }  
  195. /*--------------------------------------------------------------*/
  196. /* RED_LED_on()   logic low puts the LED on                     */
  197. /*--------------------------------------------------------------*/
  198. RED_LED_on()
  199. {
  200.     *(char *)GPVAL_REG = Get_GPIO_Val & ~RED_LED        ;
  201. }  
  202. /*--------------------------------------------------------------*/
  203. /* RED_LED_off()                                                */
  204. /*--------------------------------------------------------------*/
  205. RED_LED_off()
  206. {
  207.     *(char *)GPVAL_REG = Get_GPIO_Val | RED_LED ;
  208. }  
  209. /*--------------------------------------------------------------*/
  210. /* GREEN_LED_on()                                               */
  211. /*--------------------------------------------------------------*/
  212. GREEN_LED_on()
  213. {
  214.     *(char *)GPVAL_REG = Get_GPIO_Val & ~ GREEN_LED     ;
  215. }  
  216. /*--------------------------------------------------------------*/
  217. /* GREEN_LED_off()                                               */
  218. /*--------------------------------------------------------------*/
  219. GREEN_LED_off()
  220. {
  221.     *(char *)GPVAL_REG = Get_GPIO_Val | GREEN_LED ;
  222. }  
  223. /*--------------------------------------------------------------*/
  224. /* OnReset()                                                    */
  225. /*--------------------------------------------------------------*/
  226. OnReset(int nErrorCode)
  227. {
  228.         init_GPIO();
  229.     LED_cycle();
  230.         
  231.         GEL_BreakPtReset();
  232.         FlushCache();
  233.         init_emif();
  234. }
  235. /*--------------------------------------------------------------*/
  236. /* OnPreFileLoaded()                                            */
  237. /* This function is called automatically when the 'Load Program'*/
  238. /* Menu item is selected.                                       */
  239. /*--------------------------------------------------------------*/
  240. OnPreFileLoaded()
  241. {
  242.         FlushCache();
  243. }
  244. /*--------------------------------------------------------------*/
  245. /* FlushCache()                                                 */
  246. /*--------------------------------------------------------------*/ 
  247. FlushCache()   
  248.         *(int *)0x01840000 = (*(int *)0x01840000 | 0x00000300);
  249.         *(int *)0x01845000 = 0x1;
  250. }   
  251. /*--------------------------------------------------------------*/
  252. /* RESET MENU                                                   */
  253. /*--------------------------------------------------------------*/ 
  254. menuitem "Resets";
  255. hotmenu Reset_BreakPts_and_EMIF()
  256. {
  257.         GEL_BreakPtReset();
  258.         GEL_Reset();
  259.         init_emif();
  260. hotmenu Flush_Cache() 
  261.         FlushCache();
  262. /*--------------------------------------------------------------*/
  263. /* MEMORY MAP MENU                                              */
  264. /*--------------------------------------------------------------*/ 
  265. menuitem "Memory Map";
  266. hotmenu SetMemoryMap()
  267. {
  268.         setup_memory_map();
  269. }
  270. hotmenu ClearMemoryMap()
  271. {
  272.         clear_memory_map();
  273. }
  274. /*--------------------------------------------------------------*/
  275. /* Quick Test MENU                                              */
  276. /*--------------------------------------------------------------*/ 
  277. menuitem "Check VT-1420";
  278. hotmenu QuickTest()
  279. {
  280.         LED_cycle();
  281.         LED_cycle();
  282.         LED_cycle();
  283.         GEL_OpenWindow("VT1420 Output", 0, 5);
  284.         GEL_TextOut(" DSP_ID (0 for DSP A, 1 for DSP B): %d n",
  285.                       "VT1420 Output",1,1,1,
  286.                       Get_DSP_ID);      
  287.         GEL_TextOut(" DSP_CFG0 (expect=0): %d n",
  288.                       "VT1420 Output",1,1,1,
  289.                       Get_DSP_Cfg0);    
  290.         GEL_TextOut(" DSP_CFG1 (expect=0): %d n",
  291.                       "VT1420 Output",1,1,1,
  292.                       Get_DSP_Cfg1);    
  293.         GEL_TextOut(" GREEN LED (0=ON, 1=OFF): %d n",
  294.                       "VT1420 Output",1,1,1,
  295.                       Get_GREEN_LED);   
  296.         GEL_TextOut(" RED LED (0=ON, 1=OFF): %d nn",
  297.                       "VT1420 Output",1,1,1,
  298.                       Get_RED_LED);     
  299. }
  300. hotmenu REDLED_ON()
  301. {
  302.   RED_LED_on();
  303. }
  304. hotmenu REDLED_OFF()
  305. {
  306.   RED_LED_off();
  307. }
  308. hotmenu GREENLED_ON()
  309. {
  310.   GREEN_LED_on();
  311. }
  312. hotmenu GREENLED_OFF()
  313. {
  314.   GREEN_LED_off();
  315. }
  316. hotmenu CYCLE_LEDS()
  317. {
  318.   LED_cycle();
  319. }