0

我正在阅读 Zircon 源代码:https ://fuchsia.googlesource.com/fuchsia/+/master/我正在尝试查找内核映像的链接方式。也就是start函数放在哪里?

例如,在 raspberry pi 上,kernel.img 启动函数放置在0x80000如下链接脚本中:https ://github.com/bztsrc/raspi3-tutorial/blob/master/01_bareminimum/link.ld

有板目录:https ://fuchsia.googlesource.com/fuchsia/+/master/boards/对某些板有一些依赖关系。它添加了一些需要的驱动程序。但是,我找不到每个板发生链接的任何地方。

如果我想支持一个新的董事会怎么办?假设我想将 Zircon 移植到树莓派上,所以我需要将 start.S,特别是start它上面的函数,从 .s 开始0x80000。我将如何指示 Zircon 构建系统执行此操作?

4

1 回答 1

1

有几个层次需要理解,其中一些有点不同。

这是您可能正在寻找的链接器脚本,但它并不能说明整个故事:https ://cs.opensource.google/fuchsia/fuchsia/+/master:zircon/kernel/phys/zbi_executable.gni

ZBI 中包含的内核映像在此处生成,具体取决于配置: https ://cs.opensource.google/fuchsia/fuchsia/+/master:zircon/kernel/BUILD.gn;l=465

还有引导垫片,用于将各种世界连接到 ZBI,一些用于 arm64 的在这里:https ://cs.opensource.google/fuchsia/fuchsia/+/master:zircon/kernel/target/arm64/boot -垫片/

这些还具有您可能正在寻找的各种构建参数: https ://cs.opensource.google/fuchsia/fuchsia/+/master:zircon/kernel/target/arm64/boot-shim/BUILD.gn;l= 37

Multiboot 在 Linux 世界中很常见,而这个 x64 的 shim 正是这样处理的: https ://cs.opensource.google/fuchsia/fuchsia/+/master:zircon/kernel/target/pc/multiboot/

具有最少 dtb 交互的示例引导 shim 配置如下:https://cs.opensource.google/fuchsia/fuchsia/+/master:zircon/kernel/target/arm64/board/msm8998/boot-shim-config.h; bpv=0

于 2021-03-29T04:01:32.900 回答