TMS320VC5502调试SDRAM时,

2019-08-05 15:55发布

TMS320VC5502调试SDRAM时, ,
两个问题, 求解
1,写一个字节,结果所以内存全部变掉;
2,0x1e0000到0x200000之间的内存变成----了 QQ Photo20140408161943.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
sxmilovebb
1楼-- · 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. /*-------------------------------------------------------------------------------------*/
复制代码

zhangmangui
2楼-- · 2019-08-06 18:39
sxmilovebb 发表于 2014-4-10 16:37
谢谢你的提醒. 重新修改了GEL文件. 用的开发板的GEL是CCS3.3里面的GEL, 后来从网上找到SEED的, 参照修改 ...

其实GEL就是配合CCS在仿真的时候可以读写而已
你是怎么测试的?擦出烧写成功了么    完了之后同样用CCS读取看看
还有如果是启动不了   就确认一下GPIO的选择是否正确   
sxmilovebb
3楼-- · 2019-08-06 23:59
zhangmangui 发表于 2014-4-10 21:40
其实GEL就是配合CCS在仿真的时候可以读写而已
你是怎么测试的?擦出烧写成功了么    完了之后同样用CCS读 ...

1,
GEL仅仅配合ccs使用, 我测试了, 明明8Mbytes的sdram, 修改gel变成使用所有CE空间, 访问0X700000的地址, 已经远远超出8M了吧? 竟然都成功了.
然后把gel文件里对寄存器配置的拷贝到程序里. 结果, 还是不对.
总结一下, GEL和ccs就是骗子团伙....

2,
应该擦出成功了.
写后读, 然后数据比较,  出错则闪led, 正常则灭led.
BOOT1.BIN 是0X200000以内的数据(1000个),  结果, 灯灭.
BOOT2.BIN 是0x200000以后的数据(1000个), 结果, 闪灯.

3,



一周热门 更多>