起因:公司的产品使用的内存(DDR3)更新。
使用CPU:AM3352
使用内存:K4B4G1646D(原内存K4B4G1646B)
内存大小:512M
情况:
1。通过xls内存计算工具获取了需要的参数。具体有:
//******************************************************************
//EMIF parameters
//******************************************************************
#define ALLOPP_DDR3_READ_LATENCY 0x06 //RD_Latency = (CL + 2) – 1
#define ALLOPP_DDR3_SDRAM_TIMING1 0x088CF564 #define ALLOPP_DDR3_SDRAM_TIMING2 0x36D47FE3 #define ALLOPP_DDR3_SDRAM_TIMING3 0x501F8D0F
#define ALLOPP_DDR3_SDRAM_CONFIG 0x61C44B32
#define ALLOPP_DDR3_REF_CTRL 0x0000093B //303 * 7.8us = 0x93B
#define ALLOPP_DDR3_ZQ_CONFIG 0x50074BE4
2。通过以上参数,修改GEL,在CCS上用XDS100V2能顺利测试通过,并通过RATIO工具获取的值计算出了最优值。
3。按最优值和以上参数修改ddr_defs.h的对应参数。
4。编译用于SD卡烧写的u-boot。复制MLO和u-boot.img到Linux的编译目录下,执行build.sh制作了SD卡。
5。用SD卡烧写板子。
6。停在了Starting kernel中。如下图
7。用这个SD卡烧写旧的板(内存是旧的)是可以成功的。
8。另外:新的板还换了emmc,除此之外没有别的了。
请教大神提供一些思路。
Steven Liu1:
我们有个主题帖就是讨论这种案例,可以参考一下:http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/51326.aspx
PS:你使用了AM335x的内部RTC了吗?如果没有的话,建议你参考这个帖子里面的内容做相应修改,我遇到较多的case都是因为这个问题。
yanqing liu1:
回复 Steven Liu1:
你好:
1。我们的AM335x是使用了RTC的,所以你说的关掉RTC的可能对我们不适用。我们还看了其它帖子,有说电压问题的,我们也测试了,电压是没问题了。这让我们现在非常头疼。
2。我还想问一个:AM335x 可以跑三星的K4B4G1646D-BCK0吗? DDR3-1600的。我们主频降到600去使用。不知道有没有问题。
Steven Liu1:
回复 yanqing liu1:
是降到400MHz吧?335对于DDR3目前支持的频率点是303MHz和400MHz。
对于那个停在starting kernel的问题,你现在是直接使用SD卡启动码?还是emmc?
我的建议是你先用sd卡boot。换了DDR3,只是修改了uboot,kernel里面应该没怎么动吧?用新的MLO,u-boot.img,和老的kernel,fs启动一下看看,是否能启动成功?
yanqing liu1:
回复 Steven Liu1:
是降到303MHz。
我们使用SD卡启动,用了新的MLO、u-booting和老的kernel。仍然无法启动。还是停在starting kernel …
我跟了一下代码,走到了kernel_entry()这个函数就没了动静。
在SD卡u-boot启动时,如果删掉script.img从而进入命令行。在命令行输入dcache on 的话,就会死机。
zhifu chen:
回复 Steven Liu1:
那个文章对于3.14.43内核无该设置项,怎么办呢,System Type –> TI OMAP Implementations –> Low-level debug console