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.

DDR3 的驱动问题

Other Parts Discussed in Thread: AM3358

   在调试335x的DDR3时,用的是CCS,非操作系统调试。

   按TI给的AM335x——StarterKit.gel,这个文件导入到CCS,debug的时候,DDR3可以驱动,读写正常。按.gel里的操作方式在非操作系统流程写DDR驱动的时候,

信息输出如下:

**** AM3358_SK Initialization is in progress ..........
**** AM335x ALL PLL Config for OPP == OPP100 is in progress .........
**** Going to Bypass...
**** Bypassed, changing values...
**** Locking ARM PLL
**** Core Bypassed
**** Now locking Core...
**** Core locked
**** DDR DPLL Bypassed
**** DDR DPLL Locked 纮鄝rogress ..........
**** DISP PLL Config is DONE ..........
**** AM335x ALL ADPLL Config for OPP == OPP100 is Done .........
**** AM335x DDR3 EMIF and PHY configuration is in progress...
EMIF PRCM is in progress .......
EMIF PRCM Done
DDR PHY Configuration in progress
Waiting for VTP Ready .......

就是一直处于等待VTP的状态。

  而且还有一个奇怪的问题,就是用CCS 进行debug的时候,在CCS里手动修改Control Module 里的vtp_ctrl的时候,可以启动VTP的。

但是在程序运行后,在main里让程序修改vtp_ctrl却没有反应,也是处于等待VTP的状态,或者说,就是一到程序里去开启VTP的时候,就不行了。

貌似在CCS调试时,程序要跳转到我的main函数里,CCS是先执行一段程序的,是CCS自带的boot.asm。会不会和这段汇编有关呢。这个问题还出现在USB里。CCS里手动修改Control Module里的usb_ctrl0的时候,是可以的,也就是usb的phy可以打开的。但是到了程序里,让程序段执行这个操作的时候,usb_ctrl0的值一直没有变化。也就是在程序里,貌似都无法对control module里很多寄存器写操作。

  而CM_WKUP_CONTROL_CLKCTRL是使能Control modbule的了。

 请问这类问题该如何处理呢。。

 1  刚进入CCSdebug时,vtp_ctrl的值

 

  2  修改enable, 使能VTP。(ready 信号有反应)

3. clrz 可以清零,并且 ready信号变0

4 。再把clrz 置1,ready信号有效,VTP成功开启。

以上是用CCS进入debug的时候,对VTP的操作。但是我按同样的方法,用main函数里去执行相同的操作的时候,VTP一直没有反应。在CCS的debug到运行我的main这段过程,就只是运行了CCS自带的 boot.asm。

 希望可以得到一些指导。

谢谢。

 

  • 你好!请问有无按如下步骤进行

    http://processors.wiki.ti.com/index.php/AM335x_EMIF_Configuration_tips#Control_Module_Registers

    或者有无试过通过gel里面的VTP_Enable()进行

  • 你好,

    寄存器的配置按上述说明配置

    通过.gel,是可以初始化DDR的,VTP_Enable也是可以用的。

    只是通过CCS仿真,下载程序独立运行后,VTP_Enable就不可以用了。

    后来测试过了,发现是使用CCS下载后,在运行main之前,执行了一段程序,在这里段程序里,改变了一些CPU系统的配置,导致在裸机程序下,DDR驱动不起来。 后来修改了启动代码,不通过CCS下载,而是通过串口下载程序,之前的初始化DDR就可以用了。