接上回.在borad_init_f函数执行完成,C语言环境就算完全建立起来了.下面就完全是C的代码了.
返回crt0.S , 执行board_init_r(common/board_r.c), 完成board_init_f没有完成的初始化工作,通过调用initcall_run_list来完成,这里注意的参数是一系列的函数集合.

我们回去看这个参数init_sequence_r (common/board_r.c) ,init_sequence_r是一个数组,也就是函数初始化序列,为了兼容多款板子,里面包含了大量的条件编译函数.

/*
* Over time we hope to remove these functions with code fragments and
* stub funtcions, and instead call the relevant function directly.
*
* We also hope to remove most of the driver-related init and do it if/when
* the driver is
本文详细介绍了uboot启动过程中的board_init_r函数,该函数在C环境建立后继续完成系统初始化。通过调用initcall_run_list执行一系列初始化任务,这些任务定义在init_sequence_r数组中,根据不同的板子进行条件编译。阅读本文,你将更深入地了解uboot的启动流程。
订阅专栏 解锁全文
815

被折叠的 条评论
为什么被折叠?



