TMS320VC5502调试SDRAM时,

2019-08-05 15:55发布

TMS320VC5502调试SDRAM时, ,
两个问题, 求解
1,写一个字节,结果所以内存全部变掉;
2,0x1e0000到0x200000之间的内存变成----了 QQ Photo20140408161943.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
sxmilovebb
2019-08-06 13:36
zhangmangui 发表于 2014-4-9 21:42
这个就不好说了   在确认一下连到哪个区了
在CCS中读写是应该是字地址  而不是字节地址
你再试试吧 ...

谢谢你的提醒. 重新修改了GEL文件. 用的开发板的GEL是CCS3.3里面的GEL, 后来从网上找到SEED的, 参照修改了一下, 现在可以在仿真环境访问0X200000的空间了.

新问题, 程序放到NAND FLASH, 直接boot后做0X200000的读写测试, 却又不行了, 已经把gel的寄存器配置都改到程序里了.还不行??


  1. /*******************************************************************************/
  2. //
  3. //        Filename:        GEL file for SEED_DEC5502
  4. //
  5. //******************************************************************************/

  6. /*************************************************/
  7. /* EMIF REGISTERS                                */
  8. /*************************************************/
  9.         #define EMIF_GCTL1        0x800
  10.         #define EMIF_GCTL2        0x801
  11.         #define EMIF_CE11        0x802
  12.         #define EMIF_CE12        0x803
  13.         #define EMIF_CE01        0x804
  14.         #define EMIF_CE02        0x805
  15.         #define EMIF_CE21        0x808
  16.         #define EMIF_CE22        0x809
  17.         #define EMIF_CE31        0x80A
  18.         #define EMIF_CE32        0x80B
  19.         #define EMIF_SDCNT1        0x80C
  20.         #define EMIF_SDCNT2        0x80D
  21.         #define EMIF_SDREF1        0x80E
  22.         #define EMIF_SDREF2        0x80F
  23.         #define EMIF_SDEXT1        0x810
  24.         #define EMIF_SDEXT2        0x811
  25.         #define EMIF_CE1SECCTL1        0x822
  26.         #define EMIF_CE1SECCTL2        0x823
  27.         #define EMIF_CE0SECCTL1        0x824
  28.         #define EMIF_CE0SECCTL2        0x825
  29.         #define EMIF_CE2SECCTL1        0x828
  30.         #define EMIF_CE2SECCTL2        0x829
  31.         #define EMIF_CE3SECCTL1        0x82A
  32.         #define EMIF_CE3SECCTL2        0x82B
  33.         #define EMIF_CECTL1        0x840
  34.         #define EMIF_CECTL2        0x841
  35. /*************************************************/
  36. /* PLL REGISTERS                                 */
  37. /*************************************************/
  38.         #define PLLCSR        0x1C80
  39.     #define CK3SEL        0x1C82
  40.         #define PLLM        0x1C88
  41.         #define PLLDIV0        0x1C8A
  42.         #define PLLDIV1        0x1C8C
  43.         #define PLLDIV2        0x1C8E
  44.         #define PLLDIV3        0x1C90
  45.         #define OSCDIV1        0x1C92
  46.         #define WAKEUP        0x1C98
  47. /*************************************************/


  48. /* The Startup() function is executed when the GEL file is loaded. */

  49. StartUp()
  50. {
  51.         C5502_Init();                         /* 初始化板卡                                                        */

  52.         Init_CE23_SDRAM();                /* 初始化CE2,CE3空间的SDRAM                                */

  53.         GEL_TextOut("Gel StartUp Complete. ");
  54. }

  55. OnReset()
  56. {

  57.         Init_CE23_SDRAM();                /* 初始化CE2,CE3空间的SDRAM                                */
  58. }

  59. menuitem "C5502_Configuration";
  60. hotmenu CPU_Reset()
  61. {
  62.         GEL_Reset();                        /* 复位目标系统并重装监视器                                */
  63.         GEL_TextOut("CPU Reset Complete. ");
  64. }

  65. /* Memory map based on MP/MC value=0 (BOOTM[2:0]!=0).    */
  66. hotmenu C5502_Init()
  67. {
  68.         GEL_Reset();                        /* 复位目标系统并重装监视器                                */
  69.        
  70.         Init_PLL_byF();                        /* 将板卡主频设置为300Mhz                                */
  71.        
  72.         GEL_MapOn();                        /* 使能存储器映射                                                */
  73.         GEL_MapReset();                        /* 复位存储器映射,禁止读写所有空间                */
  74.        
  75. /*------------------------- Program Space------------------------------------ */
  76.         GEL_MapAdd(0x0000C0u,0,0x00FF40u,1,1);                /* DARAM */
  77.         GEL_MapAdd(0x010000u,0,0x7F0000u,1,1);                /* External CE0 */
  78.         //GEL_MapAdd(0x400000u,0,0x400000u,1,1);                /* External CE1 */
  79.         GEL_MapAdd(0x800000u,0,0x400000u,1,1);                /* External CE2 */

  80.         /* For MP/MC=0 (BOOTM[2:0] != 0) */
  81.         GEL_MapAdd(0xC00000u,0,0x3F8000u,1,1);                /* External CE3 */       
  82.         GEL_MapAdd(0xFF8000u,0,0x008000u,1,0);                /* PDROM        */

  83. /*------------------------- Data Space--------------------------------------- */
  84.        
  85.         GEL_MapAdd(0x000000u,1,0x00005Fu,1,1);        /* MMRs */
  86.         GEL_MapAdd(0x000060u,1,0x007FA0u,1,1);        /* DARAM */
  87.        
  88.         GEL_MapAdd(0x08000u,1,0x3F8000u,1,1);        /* External CE0 */
  89.         //GEL_MapAdd(0x200000u,1,0x200000u,1,1);        /* External CE1 */
  90.         GEL_MapAdd(0x400000u,1,0x200000u,1,1);        /* External CE2 */
  91.        
  92.         /* For MP/MC=0 (BOOTM[2:0] != 0)*/
  93.         GEL_MapAdd(0x600000u,1,0x1FC000u,1,1);        /* External CE3 */
  94.         GEL_MapAdd(0x7FC000u,1,0x004000u,1,0);        /* PDROM */
  95.        
  96. /*------------------------- IO Space------------------------------------------- */

  97.         GEL_MapAdd(0x0800u,2,0x0042u,1,1);         /* EMIF 1KW */
  98.         GEL_MapAdd(0x0C00u,2,0x00B0u,1,1);         /* DMA 1KW */
  99.         GEL_MapAdd(0x1000u,2,0x0020u,1,1);         /* TIMER#0 1KW */
  100.         GEL_MapAdd(0x1C80u,2,0x0019u,1,1);         /* PLL Control */
  101.         GEL_MapAdd(0x2400u,2,0x0014u,1,1);         /* TIMER#1 1KW */
  102.         GEL_MapAdd(0x1400u,2,0x0004u,1,1);         /* ICACHE 1KW */
  103.         GEL_MapAdd(0x1C00u,2,0x0400u,1,1);         /* CLKGEN 1KW */
  104.         GEL_MapAdd(0x2000u,2,0x0055u,1,1);        /* TRACE FIFO 1KW */
  105.         GEL_MapAdd(0x3400u,2,0x0002u,1,1);         /* GPIO 1KW */
  106.         GEL_MapAdd(0x3800u,2,0x0008u,1,1);         /* ID 1KW */
  107.         GEL_MapAdd(0x3C00u,2,0x000Fu,1,1);         /* I2C 1KW */
  108.         GEL_MapAdd(0x4000u,2,0x0014u,1,1);         /* TIMER#2 1KW */
  109.         GEL_MapAdd(0x4400u,2,0x0009u,1,1);         /* PGPIO 1KW */
  110.         GEL_MapAdd(0x6C00u,2,0x0002u,1,1);         /* XBSR 1KW */
  111.         GEL_MapAdd(0x7800u,2,0x0010u,1,1);  /* BIOS Timer 1KW */
  112.         GEL_MapAdd(0x8000u,2,0x0002u,1,1);         /* Timer Signal Selector 1KW */
  113.         GEL_MapAdd(0x8400u,2,0x0002u,1,1);         /* CLKOUT selector 1KW */
  114.         GEL_MapAdd(0x8800u,2,0x0400u,1,1);         /* IOMACRO 1KW */
  115.         GEL_MapAdd(0x8c00u,2,0x0002u,1,1);         /* CLKMOD0 1KW */
  116.         GEL_MapAdd(0x9000u,2,0x0400u,1,1);         /* Peri data Mux 1KW */
  117.         GEL_MapAdd(0x9C00u,2,0x000Du,1,1);         /* UART 1KW */
  118.         GEL_MapAdd(0xA000u,2,0x0028u,1,1);         /* UHPI 1KW */

  119.         EMIF_Init();

  120.         GEL_TextOut("C5502_Init Complete. ");
  121. }

  122. EMIF_Init()
  123. {
  124.         /* 配置EMIF寄存器  */
  125.         GEL_MemoryFill(0x6c00 ,2,1,0x0001);     /* Enable EMIF bus. */
  126.         GEL_MemoryFill(EMIF_GCTL1 ,2,1,0x0764);        /* EK1HZ=1, EK1EN=1 */
  127.         GEL_MemoryFill(EMIF_GCTL2 ,2,1,0x0003); /* ECLKOUT2=ECLKOUT1,ECLKOUT2 enabled */
  128. }




  129. hotmenu Init_CE23_SDRAM()
  130. {       
  131.         /* 首先配置EMIF */
  132.         EMIF_Init();
  133.    
  134.         /* 然后配置SDRAM空间 */
  135.         GEL_MemoryFill(EMIF_CE01 ,2,1,0xFF93);  /* 32-bit SDRAM in CE2 space. */
  136.         GEL_MemoryFill(EMIF_CE11 ,2,1,0xFF93);  /* 32-bit SDRAM in CE3 space. */
  137.         GEL_MemoryFill(EMIF_SDCNT1 ,2,1,0x6000);/* TRC=5, disable self-refresh mode */
  138.         GEL_MemoryFill(EMIF_SDCNT2 ,2,1,0x5715);/* 4 banks,11 row address, 8 column address, Refresh enabled */
  139.         GEL_MemoryFill(EMIF_SDREF1 ,2,1,0x061B);
  140.         GEL_MemoryFill(EMIF_SDREF2 ,2,1,0x0300);
  141.         GEL_MemoryFill(EMIF_SDEXT1 ,2,1,0xB488);
  142.         GEL_MemoryFill(EMIF_SDEXT2 ,2,1,0x0005);   
  143.         GEL_MemoryFill(EMIF_CECTL1 ,2,1,0x0001);   

  144.         GEL_MapAdd(0x008000u,1,0x3F8000u,1,1);        // External CE2 -- data space
  145.         GEL_MapAdd(0x010000u,0,0x7f0000u,1,1);        // External CE2 -- program space
  146.         //GEL_MapAdd(0x200000u,1,0x200000u,1,1);        // External CE3 -- data space
  147.         //GEL_MapAdd(0x400000u,0,0x400000u,1,1);        // External CE3 -- program space
  148.        
  149. }

  150. hotmenu Init_PLL_byF()
  151. {
  152.     GEL_MemoryFill(PLLCSR, 2, 1,0x0001);        /* PLL enabled */
  153.     GEL_MemoryFill(PLLM, 2, 1,0x000F);                /* PLL X15 */
  154. }

  155. hotmenu Init_PLL_byA()
  156. {
  157.     GEL_MemoryFill(PLLCSR, 2, 1,0x0001);        /* PLL enabled */
  158.     GEL_MemoryFill(PLLM, 2, 1,0x0008);                /* PLL X10 */
  159. }

  160. /*------------------------------------------------------------------------------------*/
  161. //        No        more
  162. /*-------------------------------------------------------------------------------------*/
复制代码

一周热门 更多>