为什么 ARM SoC 看起来很难用内核处理?

为什么 ARM SoC 看起来很难用内核处理?

例如,当我在 x64 系统上安装了一些 Linux 发行版时,我几乎可以拔下存储驱动器并将其放入另一台 x64 计算机中,安装一些 HL 驱动程序(例如图形驱动程序),并且它很可能会毫无麻烦地运行。

当谈到 ARM 系统,尤其是 ARM SoC 时,就像任何类型的智能手机一样,情况则完全不同。每个智能手机都有不同版本的相同操作系统(例如 OEM Android 发行版)。

我的问题是:这是为什么?

据我了解,与具有标准化架构的 PC 不同,SoC 芯片和架构有很多很多。但是考虑到设备树,我问自己为什么没有办法将设备树(作为硬件描述)与某些 ROM 芯片上的引导加载程序一起放置,并独立于任何硬件规格构建 Linux 操作系统,至少在一些明确的限制。

答案1

我问自己,为什么没有办法将设备树(作为硬件描述)与引导加载程序放在某个 ROM 芯片上,并独立于任何硬件规格(至少在某些定义的限制内)构建 Linux 操作系统。

答:便宜。没有人愿意为 ROM 芯片付费。 SoC 中有一个启动 ROM,但设备树根据 SoC 所在的电路而变化,所以这不好。您需要一个单独的“BIOS 芯片”(例如 x86 主板)才能实现此功能。

您可以通过将大多数 ARM 板启动的 SD 卡视为 BIOS 芯片来使其工作;只需将 U-Boot 和设备树放在上面,然后让 U-Boot 从 USB 驱动器加载内核即可。然后 USB 驱动器就可以(相当)从 ARM 板移植到 ARM 板。

在优化方面,虽然您可以针对 ARM 一般进行编译,但针对特定处理器确实值得(比在 x86_64 上更有效)。

相关内容