Kernel
為什麼 ARM SoC 看起來很難用核心處理?
例如,當我在 x64 系統上安裝了一些 Linux 發行版時,我幾乎可以拔下我的儲存驅動器,將其放入另一台 x64 機器,安裝一些 HL 驅動程序,如圖形驅動程序,它很可能會毫不費力地執行。
對於 ARM 系統,尤其是 ARM SoC,就像任何類型的智能手機一樣,情況完全不同。每個單獨的智能手機都有不同版本的相同作業系統(例如 OEM Android 發行版)。
我的問題是:為什麼會這樣?
據我了解,與具有標準化架構的 PC 不同,有很多很多的 SoC 晶片和架構。但是考慮到設備樹,我問自己為什麼沒有辦法將設備樹作為硬體描述與引導載入程序一起放在某些 ROM 晶片上,並獨立於任何硬體規範建構 Linux 作業系統,至少在一些明確的限制。
我問自己為什麼沒有辦法將設備樹作為硬體描述與引導載入程序一起放在某個 ROM 晶片上,並獨立於任何硬體規範建構 Linux 作業系統,至少在某些定義的限制內。
答:便宜。沒有人願意為 ROM 晶片付費。SoC 中有一個引導 ROM,但設備樹根據 SoC 所在的電路而有所不同,所以這不好。您需要一個單獨的“BIOS 晶片”,如 x86 板必須使這項工作。
您可以通過將大多數 ARM 板啟動的 SD 卡視為 BIOS 晶片來使其工作。只需將 U-Boot 和設備樹放在上面,然後讓 U-Boot 從 USB 驅動器載入核心。然後 USB 驅動器將(相當)從 ARM 板移植到 ARM 板。
在優化方面,雖然您可以為 ARM 進行一般編譯,但以特定處理器為目標確實是值得的(比 x86_64 上要多得多)。