我计划为基于 ARM Cortex A78 的系统启动 Linux。
我对此也有一些疑问。
1. 我应该选择哪个内核版本?
我在 root/arch/arm64/include/cputype.h 中检查了 5.4.112、5.10.30、5.11.14、5.12-rc7 内核的 ARM_CPU_PART_CORTEX_A78,但不匹配。
你能推荐一个支持 Cortex-A78 的内核版本吗?或者
您能否建议任何可以将 Cortex-A78 支持添加到内核的补丁?
2. 我的目标平台/机器是一个模拟器,只有一个 ARM Cortex A78 内核和一个 DDR RAM。目前没有其他外围设备。
这台机器的最小内核配置应该是什么?
在配置内核时,defconfig 中的哪些选项可以选择为“否”,以保证所选的最小配置肯定会在上述平台中启动 Linux?
3. 我应该使用未压缩的图像还是压缩图像?
请注意,我计划将编译后的 Linux 映像的二进制文件放入 RAM 中,在 A78 将在重置时跳转的位置。如果需要,我们还将为 A78 开发基本引导代码,这将允许处理器跳转到 RAM 中的 Linux 映像位置。
我知道在嵌入式设备上启动 Linux 需要更多的软件组件,例如 bood 代码、FSBL、uboot 等。
但是,我只是想尝试一下,这就是为什么我想为 ARM Cortex-A78 和 A DDR RAM 编译尽可能小的 Linux系统,并希望看到与 Linux 运行相同的系统。
除了上述问题的答案,您的建议将不胜感激。
如果我在任何时候不清楚,请随时通知我。
谢谢和问候,
Maunik Patel
您不需要任何特定的 Linux 内核版本。现代 ARM CPU 通过 ID 寄存器报告其支持的功能 - 内核不需要您正在使用的确切处理器的特定知识。尽可能选择最新的内核。
运行 Linux 的唯一真正要求是中断控制器 - Cortex-A78 旨在与一个符合 ARM 的 GICv4 规范的控制器一起工作 - 和一个计时器(包含在 A78 中)。但是您将需要某种方式与系统交互 - UART 上的串行控制台就是这样做的方式。
如果您完全绕过 EL3,并编写一个放入 EL2 并在那里运行内核的包装器,那么您可能不需要单独的控制台来实现安全世界。再说一次,UART 很便宜,所以无论如何都可以添加一个备用的。但是,一旦您正在考虑运行多个内核,您就需要一个 PSCI 实现。届时,您不妨引入 Trusted Firmware-A 作为您的 EL3 固件。
然后,您需要一个描述 DRAM、CPU、UART、GIC 和通用计时器的设备树。(以及任何 PSCI 挂钩。)
64 位 ARM 不支持像 32 位 ARM 那样的独立可执行自解压 zImage。除非您开始担心存储空间,否则压缩内核没有任何价值。