Barebox 如何为 Beaglebone Black 启动?

Posted

技术标签:

【中文标题】Barebox 如何为 Beaglebone Black 启动?【英文标题】:How the Barebox boots up for Beaglebone Black? 【发布时间】:2017-02-26 06:49:27 【问题描述】:

我想知道 Barebox for Beaglebone Black 的分步启动顺序。 哪个函数将首先执行它如何将控制权移交给内核?

【问题讨论】:

【参考方案1】:

我建议你先检查一下presentation。第 3 页和第 4 页显示了图片中的启动顺序。

如果您想获得 Beaglebone 板的裸机二进制文件,您将启用“CONFIG_MACH_BEAGLEBONE”。

在文件“images/Makefile.am33xx”中,您可以找到该配置选项 (SDRAM) 的名为“start_am33xx_beaglebone_sdram”的入口函数

pblx-$(CONFIG_MACH_BEAGLEBONE) += start_am33xx_beaglebone_sdram
FILE_barebox-am33xx-beaglebone.img = start_am33xx_beaglebone_sdram.pblx
am33xx-barebox-$(CONFIG_MACH_BEAGLEBONE) += barebox-am33xx-beaglebone.img

这个入口函数是“arch/arm/boards/beaglebone/lowlevel.c”文件中定义的“第一步”(低级硬件初始化)。

那么调用链就像'barebox_arm_entry' ('arch/arm/include/asm/barebox-arm.h') -> 'barebox_*_pbl_start' ('arch/arm/cpu/entry.c') - > ...

然后initcalls会被调用

#define core_initcall(fn)       __define_initcall("1",fn,1)
#define postcore_initcall(fn)       __define_initcall("2",fn,2)
#define console_initcall(fn)        __define_initcall("3",fn,3)
#define postconsole_initcall(fn)    __define_initcall("4",fn,4)
#define mem_initcall(fn)        __define_initcall("5",fn,5)
#define mmu_initcall(fn)        __define_initcall("6",fn,6)
#define postmmu_initcall(fn)        __define_initcall("7",fn,7)
#define coredevice_initcall(fn)     __define_initcall("8",fn,8)
#define fs_initcall(fn)         __define_initcall("9",fn,9)
#define device_initcall(fn)     __define_initcall("10",fn,10)
#define crypto_initcall(fn)     __define_initcall("11",fn,11)
#define of_populate_initcall(fn)    __define_initcall("12",fn,12)
#define late_initcall(fn)       __define_initcall("13",fn,13)
#define environment_initcall(fn)    __define_initcall("14",fn,14)
#define postenvironment_initcall(fn)    __define_initcall("15",fn,15)

见these definitions。

最后(环境)初始化调用将加载环境并运行“初始化”脚本。使用 boot/bootm/..barebox 命令,您可以加载“zImage”、“dtb”、“initrd”并为 Linux 内核传递命令行参数。

【讨论】:

以上是关于Barebox 如何为 Beaglebone Black 启动?的主要内容,如果未能解决你的问题,请参考以下文章

如何防止Beaglebone外围引脚的劫持

Beaglebone Black教程Beaglebone Black的引脚分配

BeagleBone Black教程之BeagleBone Black设备的连接

Beaglebone Black扩展板开发(零):缘起

BeagleBone -> HTML -> C++ 通信

Beaglebone 上的 OpenCV 编译错误