TI中文支持网
TI专业的中文技术问题搜集分享网站

AM4378 uboot 调试

我使用ti-processor-sdk-linux-am437x-evm-03.00.00.04包里的uboot,修改了read_eeprom函数后,放在sd卡里,可以启动,但是观察串口输出,发现上电后等了3,4秒后才会有串口输出U-Boot SPL 版本号,日期等,之后uboot可以正常运行。为什么会需要这么长时间,这时第一个问题。

第二个问题,我使用CCS调试uboot可以单步调试,为什么加不了硬件断点。

HG:

既然是放在sd卡里,那么肯定有个搬移运行的过程,需要时间。

另外串口打印大量信息本身也较慢。

可以单步调试自然是可以打断点的。

可能你的target配置文件不对。

yuanyuan liu1:

回复 HG:

我这是上电后等待3,4秒   串口才打印第一个信息。

首先串口打印的第一个信息发生在spl_board_init()函数中。此时还没有load image,不存在搬移运行的问题吧,跟打印大量信息慢也没关系吧,我关心的是上电后程序为什么花了3,4才执行到spl_board_init(打印第一个信息的地方)。

第二个问题可能是target配置文件不对具体是指什么,哪里不对,该怎么修改,源码配置文件我并没有修改。

Yaoming Qin:

回复 yuanyuan liu1:

关于启动慢的问题,您可以查下启动循序,如果前面有usb启动或者网口启动,其查询的时间比较长,所以花时间,可以调整启动循序看看

yuanyuan liu1:

回复 Yaoming Qin:

查到了是执行

mem_malloc_init(CONFIG_SYS_SPL_MALLOC_START, CONFIG_SYS_SPL_MALLOC_SIZE);

这个函数用了6秒,初始化了一片内存区域,CONFIG_SYS_SPL_MALLOC_SIZE (16 << 20)  那这个内存区域的大小是根据什么计算出来的,这个函数占用的时间太长了。

Yaoming Qin:

回复 yuanyuan liu1:

这个内存应该是存放uboot.img的,不过这部分一般不会用这么长时间的,因为所有平台的都会用到这个函数,其他的都不慢的。

请问您是怎么确定是这个函数占用的时间长的

yuanyuan liu1:

回复 Yaoming Qin:

我把spl_board_init();移到了void board_init_r(gd_t *dummy1, ulong dummy2)这个函数的最前面,串口就先被初始化了然后上电后很快就有了打印信息u-boot spl 2016.05

using memory 0x80a80000-0x81a80000 for malloc();

然后等了6秒,才有下一条打印信息。                 using memory 0x80a80000-0x81a80000 for malloc();这个信息就是在mem_malloc_init这个函数里面打印的。

Steven Liu1:

回复 yuanyuan liu1:

个人建议,你还是先核对一下,当前的DDR的参数相关配置,确认当前的DDR配置是正确的,时序也是优化的后,再做一轮测试,看看这里的malloc是不是还需要这么久的时间。

http://processors.wiki.ti.com/index.php/AM437x_DDR_Configuration_and_Programming_Guide

赞(0)
未经允许不得转载:TI中文支持网 » AM4378 uboot 调试
分享到: 更多 (0)