hi:
我们有一块板子,上电后无法开机,查看串口信息发现卡死在MLO。下面的打印信息的任意位置都有可能卡住不动了。
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.
hi:
我们有一块板子,上电后无法开机,查看串口信息发现卡死在MLO。下面的打印信息的任意位置都有可能卡住不动了。
以上种种迹象,建议你先确认一下当前对于DDR的配置是否正确。
如果DDR的配置流程中有问题,带来了DDR的不稳定情况,是有可能出现以上你说的问题的。
目前用的是DDR2还是DDR3,走过DDR相关的配置流程没呢?
建议参考这个帖子的2楼:2. DDR2/3的配置详解(带视频)
http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/113233.aspx
E2E上有个帖子跟你的问题类似,可以参考一下。
https://e2e.ti.com/support/embedded/linux/f/354/p/443087/1593904
刘工你好:
我就是根据上述帖子的方式来配置DDR的。
另外,DDR不稳定会出现在MLO中,但是当进入到uboot之后,DDR就会稳定了?会有这种现象吗?
咱们抛开开头我无法进入uboot的情况,单说我最后测试的那种截图,到底什么原因导致了测试DDR会出现那种现象?
进入系统后,我用memtester -p 0x82000000 10 1 这个命令测试0x82000000这个地址附近的ddr,但是测试结果显示全部OK。
DDR如果有问题,所有和DDR相关的存储操作都可能受到影响。uboot是运行在DDR上的,当然也会受到其影响。
比较简单的测试方法就是,你可以load MLO在两个地址上,比0x81000000, 0x82000000,然后通过md 命令直接打印对应地址的值,比对MLO在这两个地址上是否有差异,正常的话应该是不会有差异的。
你说的上电无法开机的情况,是只在WARM reset的情况下出现?还是说,每次硬件下电上电的情况下也会有?
关系到一个DDR_RESETn时序的问题。
刘工:
地址0x81000000-0x81ffffff这个地址的DDR上,通过load mmc 0 0x81000000 MLO这种方法,load到DDR0x81000000-0x81ffffff范围内的地址上,通过cmp比较2个地址的内容,可以发现DDR的内容是一样的。而load mmc 0 0x82000000 MLO,load到DDR 的0x82000000以上的任意地址,通过cmp比较,会发现DDR内的内容不一样。
如果是时序啥的有问题,不应该是0x81000000-0x81ffffff范围的DDR能正常访问,但是0x82000000以上的DDR不能正常访问吧?
感觉好像有些类似flash的错块一样。
AM335X 的bootloader启动阶段分成3段,MLO在第二个阶段,这里面好像都是一些硬件初始化的东西,所以感觉硬件坏了。
不是的,硬件初始化应该没问题(ddr不知道有没有问题),因为我在_main函数中修改栈指针sp指向cpu的sdram的地址的话,MLO启动没问题,但是如果sp指针指向0x82000000的话,则开机无法启动。但是如果ddr有问题的话,我在文件系统里用memtester 测试,又没出现问题。