完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 一只耳朵怪 于 2018-6-21 08:45 编辑
问题背景: 参考AM3358的EVM(TMDSSK3358 )官方的开发板设计了一块新硬件系统,新设计的硬件系统只是外设裁剪了一些,内存以及电源管理芯片等都是保持和EVM官方开发板一致。 该硬件系统uboot已经验证通过(uboot2015.7),内核测试正常 问题:考虑成本,目前使用AM3352BZCZA60来代替AM3358,其他不变。然后使用串口加载编译好的uboot,发现加载SPL死机。后面按照下文修改uboot,重新加载SPL 问题分析: SPL软件流程--start.s 主要是CPU的中断设置,关闭MMU等--调用lowlevel_init.S 禁止看门狗 初始化相关的UART--crt0.S调用_main函数该文件调用一个重要的函数board_init_f函数:1.board_early_init_f();//初始化时钟树 PLL 主要设置了MPU的频率为300MHZ设置内核频率输出200MHZ/250MHZ设置DDR的输出时钟为303MHZ,注意DDR PLL 的输入参考时钟源来至外部晶振时钟树的关系 ---|OSC|外部24MHZ --- | |------------------------------------------------ | | | --------- -------- ---------|DPLL_CORE| |DPLL_MPU| | DPLL_DDR| --------- -------- ---------2.sdram_init(); //初始化 DDR,这个函数初始化SDRAM注意:初始化SDRAM完成之后,才会通过函数am335x_get_efuse_mpu_max_freq(cdev)来读取 efuse_sma 寄存器的低 13 位来判别芯片 MPU 的最大频率 Fmax,。接着初始化 PMIC,使得芯片工作电压满足最高频率 。 最后设置 Core 频率=1G 和 Mpu 最大频率 Fmax,am3352返回最大的频率为600MHZ,从上述描述可以知道,SDRAM和MPU之间的没有关系以及时钟之间也没有关系,因为MPU一开始都是设置为300MHZ的频率,设置为最高的工作频率是在SDRAM后面开始设置的调试的时候:在sdram_init后面加入内存检查函数 uint *start_addr = (uint *)0x80000000; uint *src_start_addr = (uint *)0x80000000; int i; uint tmpdata; for(i = 0; i < 10; i++) [ *(start_addr++) = i; ] for(i=0; i < 10; i ++) [ tmpdata = *(src_start_addr ++); if(tmpdata != i) [ debug_voip(100);//指示灯闪烁 快 (错误状态) ] ] while(1) //停止在这里 debug_voip(3000);//指示灯闪烁 慢将上面的SPL程序烧录到老版本的硬件板子,程序运行正常(不会进入到快闪烁指示),然后将程序烧录到新的硬件中,进入错误状态总结:因为内存电路包括内存芯片这一块完全相同,电源都测试过,都正常,并且程序都只运行到SDRAM初始化阶段,理论上烧录同一块SPL代码,都会进入到正常状态请教的问题:AM3352和AM3358是否完全兼容???上面的问题分析是否有误???DDR无法初始化是否和我换了MPU有关??? |
|
相关推荐
1个回答
|
|
AM3352和AM3358是完全兼容的,所以如果是正确的DDR3的配置,同样的SPL是应该可以保证全启动起来的。
看你的描述,应该还是挂在DDR上面了,建议先确认一下对于DDR3的时钟配置和参数配置之类的信息是否都是正常配置成功了,一定要通过回读寄存器值的方式来查验。如果确认时钟方面配置一切正常了,对于DDR3问题的排查,建议分以下几步走: 1. 首先确认你的硬件设计,在先后的两板上,是否有差异,同时,确认一下,DDR3的型号,还有layout,以及外部VTT的使用是否都一致。 2. 根据DDR3的型号,和当前板子的layout走线长度,来对当前的办卡进行配置。注意:及时使用了同样的DDR3型号,板子层数不同,layout有差异,都是会对最终配置产生影响的,所以不要怕麻烦,先配置好EMIF的timing参数,SDRAMCONFIG参数,还有配置好PHY的初始值。 3. 最重要的一步!一定要做software leveling,获得可以让DDR3稳定工作的最优解。 至此,你拿到的这个配置,可以说才是完整的DDR3配置参数。然后更新到你的SPL中,应该就不会再次卡在这里了。 另外,MPU频率的改变和DDR3部分频率的改变是没有直接关系的,因为DDR3的时钟树和MPU时钟树是分开的。 此外,建议确认一下CORE的频率,这个部分经常被人忽略,也有些案例是在CORE频率设置上出现了问题的。 |
|
|
|
只有小组成员才能发言,加入小组>>
340 浏览 1 评论
533 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
777 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
653 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1132 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
64浏览 29评论
170浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
255浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
205浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
60浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 04:28 , Processed in 1.262833 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号