Por que os SoCs ARM aparentemente são difíceis de manipular com o Kernel?

1

Quando eu tenho alguma distribuição Linux instalada em um sistema x64, por exemplo, posso praticamente desconectar minha unidade de armazenamento e colocá-la em outra máquina x64, instalar alguns drivers HL, como o driver gráfico e provavelmente rodar sem qualquer problemas.

Quando se trata de sistemas ARM, especialmente SoCs ARM, como smartphones de qualquer tipo, há um quadro completamente diferente. Há uma versão diferente do mesmo sistema operacional (por exemplo, uma distro OEM Android) para cada smartphone individualmente.

Minha pergunta é: por que isso acontece?

Eu entendo que, ao contrário dos PCs com a arquitetura padronizada, há muitos e muitos chips e arquiteturas SoC. Mas com a árvore de dispositivos em mente, eu me pergunto por que não há uma maneira de colocar a árvore de dispositivos, como a descrição do hardware, junto com o bootloader em algum chip ROM e construir o sistema operacional Linux independentemente de qualquer especificação de hardware, pelo menos dentro alguns limites definidos.

    
por flxh 18.12.2016 / 23:14

1 resposta

2

I ask myself why there isn't a way to put the device tree, as the hardware description, together with the bootloader on some ROM chip and build the Linux OS independently from any hardware specs, at least within some defined limits.

Resposta: Barato. Ninguém quer pagar pelo chip da ROM. O SoC tem uma ROM de inicialização, mas a árvore de dispositivos varia dependendo do circuito em que o SoC está, então isso não é bom. Você precisaria de um "chip de BIOS" separado, como placas x86 para fazer isso funcionar.

Você pode fazer isso funcionar tratando o cartão SD que a maioria das placas ARM inicializa como o chip da BIOS; basta colocar o U-Boot e a árvore de dispositivos nele e fazer com que o U-Boot carregue o kernel de uma unidade USB. Então a unidade USB seria (razoavelmente) portátil da placa ARM para a placa ARM.

Em termos de otimização, enquanto você pode compilar para o ARM genericamente, vale a pena direcionar um processador específico (muito mais do que em x86_64).

    
por 19.12.2016 / 05:45