This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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初始化内容一致。

  • 请问是参照C:\ti\ccsv7\ccs_base\emulation\boards\evmc6748\gel吗?每设置一种state的步骤如下
    The procedure for module state transitions is:
    1. Wait for the GOSTAT[x] bit in PTSTAT to clear to 0. You must wait for any previously initiated transitions to finish before initiating a new transition.
    2. Set the NEXT bit in MDCTLn to SwRstDisable (0), SyncReset (1), Disable (2h), Enable (3h), Auto Sleep (4h) or Auto Wake (5h).
    NOTE: You may set transitions in multiple NEXT bits in MDCTLn in this step. Transitions do not actually take place until you set the GO[x] bit in PTCMD in a later step.
    3. Set the GO[x] bit in PTCMD to 1 to initiate the transition(s).
    4. Wait for the GOSTAT[x] bit in PTSTAT to clear to 0. The modules are safely in the new states only after the GOSTAT[x] bit in PTSTAT is cleared to 0.

    另外,在初始化时要先把MDCTLn的31置1
  • 仿真器连接时,使用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都是非加密的),所以感觉是硬件哪里的问题,但原理图是照抄,需要软件定位,不知如何下手
  • 在初始化时要先把MDCTLn的31置1,加密版本,DDR访问成功了
    我刚才把GEL文件修改了,成功了,难道是加密版本E和非加密的差异?因为非加密版本确实不需要MDCTLn的31置1
  • 刚才尝试了,DDR模块(PSC1-6),对同步复位和使能,都对MDCTLn的31置1,成功了。
    但我想问下这是E版本(加密)版本的特殊所在么?因为其他板卡都一样的硬件设计,不需要这个bit置位,DDR初始化也是对的
    还想问下,E版本是有自己单独的手册么?
  • 非加密版本的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);
  • E版本的user guide可以到下面的网站下载。
    processors.wiki.ti.com/.../Basic_Secure_Boot_for_OMAP-L138_C6748