0

在 u-boot-2017.05-rc3\arch\arm\cpu\armv8\lowlevel_init.S

lowlevel_init() 调用函数 s_init()

但我在项目中找不到 s_init() 函数的实现

我有“grep -nirs s_init”。在所有项目中,但没有关于 armv8 的 s_init 实现。

这里有一些代码: /* * 调用非常早期的 init 函数。这应该只做*绝对最低限度的开始。它不应该: * * - 设置 DRAM * - 使用 global_data * - 清除 BSS * - 尝试启动控制台 * * 对于带有 SPL 的板,这应该是空的,因为 SPL 可以执行所有 * 在 SPL board_init_f() 中的这个初始化在此之后立即调用 * 的函数。*/ bl s_init

4

1 回答 1

1

对于 ARMv7,s_init() 的弱实现存在于 arch/arm/cpu/armv7/lowlevel_init.S

.pushsection .text.s_init, "ax"
WEAK(s_init)
        bx      lr
ENDPROC(s_init)
.popsection

几个板重新实现了这个功能。

arch/arm/cpu/armv8/Makefile 有这一行:

obj-$(CONFIG_ARCH_SUNXI) += lowlevel_init.o

所以这个模块是专门为 SUNXI 板子构建的。s_init() 在 arch/arm/mach-sunxi/board.c 中实现。

于 2019-08-14T21:00:47.720 回答