ARM SoC가 커널로 처리하기 어려운 이유는 무엇입니까?

ARM SoC가 커널로 처리하기 어려운 이유는 무엇입니까?

예를 들어 x64 시스템에 Linux 배포판을 설치한 경우 스토리지 드라이브를 분리하여 다른 x64 시스템에 넣고 그래픽 드라이버와 같은 몇 가지 HL 드라이버를 설치하면 문제 없이 실행될 가능성이 높습니다.

ARM 시스템, 특히 모든 종류의 스마트폰과 같은 ARM SoC의 경우 완전히 다른 그림이 있습니다. 모든 단일 스마트폰에는 동일한 OS(예: OEM Android 배포판)의 다른 빌드가 있습니다.

내 질문은: 왜 그렇죠?

표준화된 아키텍처를 갖춘 PC와 달리 SoC 칩과 아키텍처가 엄청나게 많다는 것을 이해합니다. 그러나 장치 트리를 염두에 두고 나는 왜 장치 트리를 일부 ROM 칩의 부트로더와 함께 하드웨어 설명으로 배치하고 적어도 하드웨어 사양과 상관없이 Linux OS를 독립적으로 구축할 수 있는 방법이 없는지 스스로에게 묻습니다. 일부 정의된 한계.

답변1

나는 하드웨어 설명으로서 장치 트리를 일부 ROM 칩의 부트로더와 함께 배치하고 적어도 정의된 제한 내에서 모든 하드웨어 사양과 독립적으로 Linux OS를 구축할 수 있는 방법이 없는 이유를 스스로에게 묻습니다.

답: 저렴함. 누구도 ROM 칩에 대한 비용을 지불하고 싶어하지 않습니다. SoC에는 부트 ROM이 있지만 장치 트리는 SoC가 있는 회로에 따라 다르기 때문에 좋지 않습니다. 이 작업을 수행하려면 x86 보드와 같은 별도의 "BIOS 칩"이 필요합니다.

대부분의 ARM 보드가 부팅하는 SD 카드를 BIOS 칩으로 처리하여 작동하게 할 수 있습니다. U-Boot와 장치 트리를 그 위에 놓고 U-Boot가 USB 드라이브에서 커널을 로드하도록 하세요. 그러면 USB 드라이브는 ARM 보드에서 ARM 보드로 (상당히) 이식 가능합니다.

최적화 측면에서 일반적으로 ARM용으로 컴파일할 수 있지만 특정 프로세서를 대상으로 하는 것이 실제로 이익이 됩니다(x86_64보다 훨씬 더 그렇습니다).

관련 정보