TI中文支持网
TI专业的中文技术问题搜集分享网站

6748 ddr2 psc 出错

TMSC6748  DSP芯片,该芯片因为供应商原因,错误上成了E版本,但已成功解密并连接仿真器,现DDR初始化失败。

DDR错误如下:

static void DDRInit(void)函数中

   *******

    /* SyncReset the Clock to SDRAM */
    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_DDR2_MDDR,
                              0,PSC_MDSTAT_STATE_SYNCRST);
    /* Enable clock to SDRAM */
    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_DDR2_MDDR, 0,PSC_MDCTL_NEXT_ENABLE);

   *******

使能后仿真器会调,并报错,如果不进行同步复位,即第一句不执行,第二句可以正常运行,仿真器可以访问0xb0000000,即可以访问DDR控制器,但DDR数据操作仍然错误。

c6748芯片是加密E版本,是否可能解密不彻底?

仿真器加载时DDR初始化过不去,将gel中DDR相关内容去除,其内容与DDR初始化内容一致。

Daisy Du:

回复 Shine:

仿真器连接时,使用GEL文件,是按照您写的流程进行的,因为别的模块初始化都没问题。就DDR这个模块,而且DSP仿真能正常从串口打印信息。
有个问题:
1)MDCTLn的31位,我看手册写SATA模块需要强制(1)Note that the SATA module requires forced state transitions.并没有说DDR2需要置1呀,而且我也试过强制增加这个bit位,无效

2)我按您给的流程,用仿真器直接输入寄存器MDCTLn的NEXT位,值为 SyncReset (1), Disable (2h), Enable (3h),再输入PTCMD 的Go[0]位,等待PTSTAT的 GOSTAT[0]变为0, 别的模块(无论PSC0的UART0还是PSC1的UART1)都会很快GOSTAT[0]变为0,而DDR(PSC1的6)在输入 SyncReset (1)后,再输入PTCMD值1,读PTSTAT一直为1,它貌似Traction一直不成功的样子

3)因为同样的代码在另一个项目中没有问题(但其他项目DSP都是非加密的),所以感觉是硬件哪里的问题,但原理图是照抄,需要软件定位,不知如何下手

Daisy Du:

刚才尝试了,DDR模块(PSC1-6),对同步复位和使能,都对MDCTLn的31置1,成功了。
但我想问下这是E版本(加密)版本的特殊所在么?因为其他板卡都一样的硬件设计,不需要这个bit置位,DDR初始化也是对的
还想问下,E版本是有自己单独的手册么?

Shine:

回复 Daisy Du:

非加密版本的GEL文件里有对MDCTLn置1
/*Force module state without handshaking */
PSC1_LPSC_force(unsigned int LPSC_num) {*(unsigned int*) (PSC1_MDCTL+4*LPSC_num) = (*(unsigned int*) (PSC1_MDCTL+4*LPSC_num) | 0x80000000);

Shine:

回复 Shine:

E版本的user guide可以到下面的网站下载。
processors.wiki.ti.com/…/Basic_Secure_Boot_for_OMAP-L138_C6748

赞(0)
未经允许不得转载:TI中文支持网 » 6748 ddr2 psc 出错
分享到: 更多 (0)