soc fpga开发日记之:preloader spl探秘

  • coyoo
  • LV4工程师
  • |      2014-05-20 13:48:44
  • 浏览量 895
  • 回复:8
有了前一天装载u-boot-spl.axf并进行调试的基础,可以追求一些自由:如果把u-boot-spl中初始化代码直接加到裸程序中不就可以减少一些调试上的环节,明了底层操作的细节就会有知情权,不再会被工具左右。
装载以后,我们是用run启动运行的,我们知道u-boot-spl被装载到0xffff0000的片内ram中,而run隐含了启动地址,为什么不可以直接在某个入口直接启动呢? 我经常不按常规出牌,在装载以后,cpu进入stopped状态,直接修改程序指针PC为:0XFFFF0000,呵呵,很奇妙的芝麻开门,调试指针指向了start.S。
调试窗口中自动打开了start.S:
.globl _start
_start: b reset  ...
这就对了,这里就是万里长征的起点。按F6(step),就可以开始了第一条汇编就是b reset,ok,有兴趣的可逐条解读汇编代码,也可以F6信马由缰的浏览下去,好在汇编代码不多,一直到board_init_f,这是一个C函数(arch/arm/lib/spl.c)。在board_init_f中调用board_init_r函数。
board_init_r(comm/spl/spl.c)中是spl中至关重要的工作,可畏步步惊心,是系统启动的核心。。。。。。
比较重要的调用有:timer_init();
spl_board_init();
spl_board_init中完成了包括ddr3内存在内的外设的初始化。

如果需要,我们可以对spl展开详尽的分析。。。。。。
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:8
mingming 2014-09-24
顶起,,,
0   回复
举报
发布
laoyaomao 2014-06-24
来逛逛,顺便蹭点知识
0   回复
举报
发布
coyoo 2014-05-26
多谢!
0   回复
举报
发布
lilei 2014-05-26
顶起。。。
0   回复
举报
发布
coyoo 2014-05-23
0   回复
举报
发布
wengqiang 2014-05-23
必须顶~
0   回复
举报
发布
coyoo 2014-05-20
thanks!
0   回复
举报
发布
冰山一角 2014-05-20
顶起。。。
0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子