Hardware
O Hardware (target)
O target ou hardware é onde de fato roda nossa aplicação embarda. Ele deve conter os itens apresentados na seção anterior (exceto pela toolchain). Mas em geral, trata-se da nossa plataforma de desenvolvimento onde vamos rodar nossa aplicação, ler sensores, enviar dados, fazer telemetria e etc.
Processadores
Atualmente o kernel Linux suporta mais de 30 arquiteturas de processadores, como: x86, x86-64, ARM, MIPS, SuperH, Blackfin, Coldfire, PowerPC, SPARC e etc.
O Linux foi originalmente projetado para trabalhar com processadores que possuiam unidade de gerenciamento de memória (MMU). Não sendo projetado para microcontroladores. Contudo, o projeto uClinux foi criado para dar suporte a CPUs sem MMU, tendo algumas limitações, mas ainda assim funcional para casos específicos.
Memória RAM e Armazenamento
Um sistema bem básico pode funcionar com 8MB de RAM, mas um sistema mais realístico necessita de pelo menos 32MB de RAM. Vai depender muito do tipo e tamanho da aplicação.
Sistemas muito enxutos podem até rodar com 2MB de armazenamento, as vezes até menos, mas para isso é preciso limitar e enxugar muito o kernel Linux e claro que depende também do tamanho da aplicação.
Ele apresenta suporte para a maioria dos armazenamentos, como: flash NAND e NOR, disco rígido, cartões SD/MMC e eMMC e etc.
Comunicação
O Linux suporta muitos barramentos comuns em sistemas embarcados: I2C, SPI, CAN, USB, etc. E também os principais protocolos de rede: Ethernet, Wi-Fi, Bluetooth, IPv4, IPv6, TCP, UDP, etc.
Se o barramento ou protocolo não possuir restrições de licença, é bem provável que esteja implementado no kernel. E isso vale para hardware em geral, se não tiver nenhuma restrição de licença, o driver estará implementado no kernel Linux, pronto para ser utilizado. É por isso que quando você instala uma distruibuição em um PC, é muito comum não precisar de driver nenhum.
Critérios de seleção
Certifique-se de que o hardware escolhido seja suportado pelo kernel Linux e por algum dos bootloaders open-source, caso contrário será necessário fazer o porte e este é um trabalho árduo.
Suporte nas versões oficias dos projetos (kernel e bootloader): maior qualidade, novas versões disponíveis.
A diferença entre um hardware suportado na árvore oficial do kernel e outro não suportado de forma oficial, PODE trazer grandes consequências no custo e tempo de desenvolvimento!
Last updated