U boot U型靴。这一切从哪里开始?

U boot U型靴。这一切从哪里开始?,u-boot,U Boot,这里是新手问题 我正在查看一个u-boot板文件,其中包含许多函数。 比如,线路板\u mmc\u init()、enet\u线路板\u init()、设置\u splash\u img()、等 这些函数中的大多数都不是从boardfile中调用的。他们从别的地方接到电话。但我不知道在哪里 在Linux内核boardfiles中有一个机器结构。在那里,我们可能有.init\u machine=myboard\u init.然后myboard\u init(void)将调用其他函数,这些函数将依次

这里是新手问题

我正在查看一个u-boot板文件,其中包含许多函数。
比如,<代码>线路板\u mmc\u init()、enet\u线路板\u init()、设置\u splash\u img()、等

这些函数中的大多数都不是从boardfile中调用的。他们从别的地方接到电话。但我不知道在哪里

在Linux内核boardfiles中有一个机器结构。在那里,我们可能有
.init\u machine=myboard\u init.
然后
myboard\u init(void)
将调用其他函数,这些函数将依次调用其他函数。我觉得这种风格很容易阅读

我的问题是,;
u-boot
是否具有与
.init\u机器等效的功能?
在哪里可以查看所有“启动”的位置?谁调用u-boot
板文件中所有松散的函数?


-Andy在u-boot-2013.04上,从drivers/mmc/mmc.c调用board_mmc_init,函数mmc_initialize(…)

要找到这一点,“grep-r”(递归)是您的朋友

“我应该从哪里看一切‘开始’?”


不确定,但查找条目(_start)行。

首先,uboot将从指定CPU的start.S开始,如下所示:

它会做一些事情,比如“异常向量”设置、缓存设置等

然后它会跳到 做一些c运行时设置

然后它会回到开始。S,在一些其他的东西之后,你可以参考评论, 它将跳转到低级别的初始化

然后。。它将进入soc(在ARM中非常常见)初始化,如下所示:

soc初始化完成后,它将转到某个与soc初始化相关的板, 在board init中,它将调用一些外围设备/驱动程序init


希望这会给你的uboot进程带来一些冲击。

我有一个raspberry pi板,它带有bcm283x broadcom体系结构和arm1176 arm内核。 因此start.S位于arch/arm/cpu/arm1176/start.S中。这将初始化关键寄存器并禁用mmu。 接下来,它将执行lowlevel_init,然后分支到_main,该main是在arch/arm/lib/crt0.S中的raspberry pi的情况下定义的
这将初始化堆栈指针和全局数据,并调用board_init_f来初始化系统RAM(DRAM)以执行u-boot代码。它应该使用全局数据指针来执行。

Uboot不是一个静态程序,不像linux内核那样。因此,您可能需要仔细观察Makefile和链接脚本。