Estou planejando inicializar o Linux para um sistema baseado em ARM Cortex A78.
E tenho algumas dúvidas sobre o mesmo.
1. Qual versão do kernel devo selecionar?
Eu verifiquei os kernels 5.4.112, 5.10.30, 5.11.14, 5.12-rc7, para ARM_CPU_PART_CORTEX_A78 em root/arch/arm64/include/cputype.h, mas nenhuma correspondência.
Você pode sugerir uma versão do Kernel que tenha suporte ao Cortex-A78? OU
Você pode sugerir algum patch que possa adicionar suporte ao Cortex-A78 a um kernel?
2. Minha plataforma/máquina de destino é um emulador, com um núcleo ARM Cortex A78 e apenas uma RAM DDR. Nenhum outro periférico por enquanto.
Quais devem ser as configurações mínimas do kernel para esta máquina?
Quais opções no defconfig podem ser selecionadas como 'não', durante a configuração do kernel, com garantia de que as configurações mínimas selecionadas certamente inicializarão o Linux na plataforma mencionada acima?
3. Devo usar uma imagem descompactada ou compactada?
Observe que estou planejando colocar o binário da imagem compilada do Linux na RAM, em um local onde o A78 saltará após a reinicialização. Se necessário, também desenvolveremos o código de inicialização básico para o A78, que permitirá que o processador salte para o local da imagem do Linux na RAM.
Eu sei que inicializar o Linux em dispositivos embarcados requer mais componentes de software, como código bood, FSBL, uboot, etc.
Mas, eu só quero experimentar e é por isso que quero compilar o menor Linux possível para ARM Cortex-A78 e A DDR RAM sistema e deseja ver o mesmo sistema rodando com o Linux.
Além das respostas das perguntas acima, suas sugestões serão muito apreciadas.
Por favor, sinta-se à vontade para me informar, se eu não estiver claro para você a qualquer momento.
Obrigado e cumprimentos,
Maunik Patel
Você não precisa de nenhuma versão específica do kernel do Linux. CPUs ARM modernas relatam seus recursos suportados por meio de registros de ID - o kernel não precisa de conhecimento específico do processador exato que você está usando. Vá para o kernel mais recente que puder.
O único requisito real para rodar o Linux é um controlador de interrupção - e o Cortex-A78 foi projetado para funcionar com um compatível com a especificação GICv4 da ARM - e um temporizador (incluído no A78). Mas você vai querer alguma maneira de interagir com o sistema - e um console serial no UART é a maneira de fazer isso.
Se você ignorar o EL3 completamente e escrever um wrapper que caia no EL2 e execute o kernel lá, talvez você não precise de um console separado para o Secure world. Então, novamente, os UARTs são baratos, então talvez adicione um sobressalente de qualquer maneira. No entanto, assim que você quiser executar mais de um núcleo, precisará de uma implementação PSCI. Nesse ponto, você também pode trazer Trusted Firmware-A como seu firmware EL3.
Então você precisa de uma árvore de dispositivos descrevendo a DRAM, CPU(s), UART, GIC e temporizadores genéricos. (E quaisquer ganchos PSCI.)
O ARM de 64 bits não oferece suporte a um zImage de autodescompactação executável autônomo como o ARM de 32 bits. Não há valor em compactar o kernel, a menos que você comece a se preocupar com o espaço de armazenamento.