接上回.在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 later used.
*
* TODO: perhaps reset the watchdog in the initcall function after each call?
*/
init_fnc_t<