Zircon 引导映像 (ZBI) 是否对 Zircon 内核中的引导必不可少?

问题描述

Zircon 内核的 kernel entrypoint 调用 platform_early_init(),它从 .S 文件获取 zbi_paddr,然后传递给 pdev_init

void* zbi_vaddr = paddr_to_physmap(zbi_paddr);
zbi_header_t* header = (zbi_header_t*)zbi_vaddr;
ramdisk_base = header;
zbi_root = reinterpret_cast<zbi_header_t*>(ramdisk_base);
pdev_init(zbi_root);

其中 pdev_init 负责启动 uart 等驱动程序。

它看起来像通过 pdev_run_hooks 的驱动程序(在同一个文件上),它遍历 zbi 文件并找到每个驱动程序信息。

所以看起来ZBI对于启动是必不可少的?

我问是因为我编译了锆石内核并得到了

lz@vm:~/fuchsia/out/default/kernel_arm64$ ls gen
image.build-id.stamp kernel.zbi toolchain.ninja zircon.elf.build-id.stamp zircon.elf.map image image.map
obj zircon.elf zircon.elf-gdb.py

如你所见,它产生一个 zircon.elf,理论上可以运行,但我认为 ZBI 信息对于启动至关重要,否则它会恐慌。我说得对吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...