打印

TMS320VC5502调试SDRAM时,

[复制链接]
1654|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
zhangmangui| | 2014-4-8 22:05 | 只看该作者
是仿真器不稳定  掉了吧
你多试试几次看看

使用特权

评论回复
板凳
zhangmangui| | 2014-4-8 22:05 | 只看该作者
是仿真器不稳定  掉了吧
你多试试几次看看

使用特权

评论回复
地板
zhangmangui| | 2014-4-8 22:06 | 只看该作者
还有看看有没有添加GEL文件

使用特权

评论回复
5
sxmilovebb|  楼主 | 2014-4-9 09:18 | 只看该作者
zhangmangui 发表于 2014-4-8 22:05
是仿真器不稳定  掉了吧
你多试试几次看看

重新上电很多次, 每次都这样.

使用特权

评论回复
6
sxmilovebb|  楼主 | 2014-4-9 09:24 | 只看该作者
zhangmangui 发表于 2014-4-8 22:06
还有看看有没有添加GEL文件

CCS3.3 没特意加载过GEL.  刚刚试了一下,




C5502_Init Complete.
Gel StartUp Complete.



最后结果一样.  没有改善.

使用特权

评论回复
7
zhangmangui| | 2014-4-9 21:42 | 只看该作者
sxmilovebb 发表于 2014-4-9 09:24
CCS3.3 没特意加载过GEL.  刚刚试了一下,

这个就不好说了   在确认一下连到哪个区了
在CCS中读写是应该是字地址  而不是字节地址
你再试试吧

使用特权

评论回复
8
sxmilovebb|  楼主 | 2014-4-10 16:37 | 只看该作者
zhangmangui 发表于 2014-4-9 21:42
这个就不好说了   在确认一下连到哪个区了
在CCS中读写是应该是字地址  而不是字节地址
你再试试吧 ...

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

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


/*******************************************************************************/
//
//        Filename:        GEL file for SEED_DEC5502
//
//******************************************************************************/

/*************************************************/
/* EMIF REGISTERS                                */
/*************************************************/
        #define EMIF_GCTL1        0x800
        #define EMIF_GCTL2        0x801
        #define EMIF_CE11        0x802
        #define EMIF_CE12        0x803
        #define EMIF_CE01        0x804
        #define EMIF_CE02        0x805
        #define EMIF_CE21        0x808
        #define EMIF_CE22        0x809
        #define EMIF_CE31        0x80A
        #define EMIF_CE32        0x80B
        #define EMIF_SDCNT1        0x80C
        #define EMIF_SDCNT2        0x80D
        #define EMIF_SDREF1        0x80E
        #define EMIF_SDREF2        0x80F
        #define EMIF_SDEXT1        0x810
        #define EMIF_SDEXT2        0x811
        #define EMIF_CE1SECCTL1        0x822
        #define EMIF_CE1SECCTL2        0x823
        #define EMIF_CE0SECCTL1        0x824
        #define EMIF_CE0SECCTL2        0x825
        #define EMIF_CE2SECCTL1        0x828
        #define EMIF_CE2SECCTL2        0x829
        #define EMIF_CE3SECCTL1        0x82A
        #define EMIF_CE3SECCTL2        0x82B
        #define EMIF_CECTL1        0x840
        #define EMIF_CECTL2        0x841
/*************************************************/
/* PLL REGISTERS                                 */
/*************************************************/
        #define PLLCSR        0x1C80
    #define CK3SEL        0x1C82
        #define PLLM        0x1C88
        #define PLLDIV0        0x1C8A
        #define PLLDIV1        0x1C8C
        #define PLLDIV2        0x1C8E
        #define PLLDIV3        0x1C90
        #define OSCDIV1        0x1C92
        #define WAKEUP        0x1C98
/*************************************************/


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

StartUp()
{
        C5502_Init();                         /* 初始化板卡                                                        */

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

        GEL_TextOut("Gel StartUp Complete.\n");
}

OnReset()
{

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

menuitem "C5502_Configuration";
hotmenu CPU_Reset()
{
        GEL_Reset();                        /* 复位目标系统并重装监视器                                */
        GEL_TextOut("CPU Reset Complete.\n");
}

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

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

/*------------------------- Data Space--------------------------------------- */
       
        GEL_MapAdd(0x000000u,1,0x00005Fu,1,1);        /* MMRs */
        GEL_MapAdd(0x000060u,1,0x007FA0u,1,1);        /* DARAM */
       
        GEL_MapAdd(0x08000u,1,0x3F8000u,1,1);        /* External CE0 */
        //GEL_MapAdd(0x200000u,1,0x200000u,1,1);        /* External CE1 */
        GEL_MapAdd(0x400000u,1,0x200000u,1,1);        /* External CE2 */
       
        /* For MP/MC=0 (BOOTM[2:0] != 0)*/
        GEL_MapAdd(0x600000u,1,0x1FC000u,1,1);        /* External CE3 */
        GEL_MapAdd(0x7FC000u,1,0x004000u,1,0);        /* PDROM */
       
/*------------------------- IO Space------------------------------------------- */

        GEL_MapAdd(0x0800u,2,0x0042u,1,1);         /* EMIF 1KW */
        GEL_MapAdd(0x0C00u,2,0x00B0u,1,1);         /* DMA 1KW */
        GEL_MapAdd(0x1000u,2,0x0020u,1,1);         /* TIMER#0 1KW */
        GEL_MapAdd(0x1C80u,2,0x0019u,1,1);         /* PLL Control */
        GEL_MapAdd(0x2400u,2,0x0014u,1,1);         /* TIMER#1 1KW */
        GEL_MapAdd(0x1400u,2,0x0004u,1,1);         /* ICACHE 1KW */
        GEL_MapAdd(0x1C00u,2,0x0400u,1,1);         /* CLKGEN 1KW */
        GEL_MapAdd(0x2000u,2,0x0055u,1,1);        /* TRACE FIFO 1KW */
        GEL_MapAdd(0x3400u,2,0x0002u,1,1);         /* GPIO 1KW */
        GEL_MapAdd(0x3800u,2,0x0008u,1,1);         /* ID 1KW */
        GEL_MapAdd(0x3C00u,2,0x000Fu,1,1);         /* I2C 1KW */
        GEL_MapAdd(0x4000u,2,0x0014u,1,1);         /* TIMER#2 1KW */
        GEL_MapAdd(0x4400u,2,0x0009u,1,1);         /* PGPIO 1KW */
        GEL_MapAdd(0x6C00u,2,0x0002u,1,1);         /* XBSR 1KW */
        GEL_MapAdd(0x7800u,2,0x0010u,1,1);  /* BIOS Timer 1KW */
        GEL_MapAdd(0x8000u,2,0x0002u,1,1);         /* Timer Signal Selector 1KW */
        GEL_MapAdd(0x8400u,2,0x0002u,1,1);         /* CLKOUT selector 1KW */
        GEL_MapAdd(0x8800u,2,0x0400u,1,1);         /* IOMACRO 1KW */
        GEL_MapAdd(0x8c00u,2,0x0002u,1,1);         /* CLKMOD0 1KW */
        GEL_MapAdd(0x9000u,2,0x0400u,1,1);         /* Peri data Mux 1KW */
        GEL_MapAdd(0x9C00u,2,0x000Du,1,1);         /* UART 1KW */
        GEL_MapAdd(0xA000u,2,0x0028u,1,1);         /* UHPI 1KW */

        EMIF_Init();

        GEL_TextOut("C5502_Init Complete.\n");
}

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




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

        GEL_MapAdd(0x008000u,1,0x3F8000u,1,1);        // External CE2 -- data space
        GEL_MapAdd(0x010000u,0,0x7f0000u,1,1);        // External CE2 -- program space
        //GEL_MapAdd(0x200000u,1,0x200000u,1,1);        // External CE3 -- data space
        //GEL_MapAdd(0x400000u,0,0x400000u,1,1);        // External CE3 -- program space
       
}

hotmenu Init_PLL_byF()
{
    GEL_MemoryFill(PLLCSR, 2, 1,0x0001);        /* PLL enabled */
    GEL_MemoryFill(PLLM, 2, 1,0x000F);                /* PLL X15 */
}

hotmenu Init_PLL_byA()
{
    GEL_MemoryFill(PLLCSR, 2, 1,0x0001);        /* PLL enabled */
    GEL_MemoryFill(PLLM, 2, 1,0x0008);                /* PLL X10 */
}

/*------------------------------------------------------------------------------------*/
//        No        more
/*-------------------------------------------------------------------------------------*/


使用特权

评论回复
9
zhangmangui| | 2014-4-10 21:40 | 只看该作者
sxmilovebb 发表于 2014-4-10 16:37
谢谢你的提醒. 重新修改了GEL文件. 用的开发板的GEL是CCS3.3里面的GEL, 后来从网上找到SEED的, 参照修改 ...

其实GEL就是配合CCS在仿真的时候可以读写而已
你是怎么测试的?擦出烧写成功了么    完了之后同样用CCS读取看看
还有如果是启动不了   就确认一下GPIO的选择是否正确   

使用特权

评论回复
10
sxmilovebb|  楼主 | 2014-4-11 10:10 | 只看该作者
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,



使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

9

帖子

1

粉丝