在调试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 DoneDDR PHY Configuration in progressWaiting 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。
希望可以得到一些指导。
谢谢。
Gary Wu:
你好!请问有无按如下步骤进行
http://processors.wiki.ti.com/index.php/AM335x_EMIF_Configuration_tips#Control_Module_Registers
或者有无试过通过gel里面的VTP_Enable()进行