Introdução Problema
Para um novo projeto, decidimos usar o Raspberry Pi Compute Module 5 (CM5) como nossa plataforma de hardware.
Recebi um kit de desenvolvimento composto por:
- Compute Module 5 (4 GB RAM and 32 GB eMMC)
- 27W USB-C Type-C PD Power Supply
- Compute Module 5 IO Board
- Antenna Kit
- Compute Module 5 IO Case
- 2 x HDMI® to HDMI® Cable
- Cooler for Compute Module 5
- USB-A to USB-C Cable.
Objetivo
Para simplificar o desenvolvimento, eu queria executar o software do sistema (raspiOS) a partir de um cartão microSD, já que o Compute Module 5 IO Board inclui um slot para cartão microSD.
Usei o Raspberry Pi Imager para fazer o flash do Raspberry Pi OS mais recente em um cartão microSD, inseri o cartão no slot da placa IO e liguei o sistema.
Entretanto, em vez de inicializar o sistema operacional, a tela exibia uma mensagem semelhante a um terminal dizendo "SD: card not detected" (cartão SD não detectado) e o sistema não inicializava.
Causa e efeito
Após algumas pesquisas, encontrei a explicação na documentação do Raspberry Pi para o Compute Module 5:
- slot para cartão microSD (somente para uso com variantes Lite sem eMMC; outras variantes ignoram o slot)
Isso significa que o slot microSD só pode ser usado na variante "Lite", que não inclui armazenamento eMMC integrado. Meu CM5 tem eMMC de 32 GB, portanto o slot SD é desativado e ignorado durante a inicialização.
Maneira correta de instalar o software do sistema no CM5 com eMMC
Para instalar o sistema operacional em um CM5 com eMMC, siga as instruções oficiais do setting up the IO Board.
Uma etapa crucial é colocar um jumper no conector J2 da placa de E/S. Isso coloca o CM5 no modo de inicialização USB, permitindo que o PC host acesse o eMMC como um dispositivo de armazenamento em massa.
Problema com o rpiboot e a solução
Em minha máquina de desenvolvimento (Ubuntu 22.04), inicialmente tentei instalar o rpiboot com:
sudo apt install rpiboot
No entanto, essa versão não funcionou corretamente, provavelmente por estar desatualizada ou ser incompatível com o CM5.
Em vez disso, tive que compilar o rpiboot a partir da fonte. Siga as etapas aqui:
Clonar o repositório oficial:
git clone --recurse-submodules --shallow-submodules --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot
Instalar dependências e construir:
sudo apt install git libusb-1.0-0-dev pkg-config build-essential
make
Executar o rpiboot
com o CM5 conectado e o jumper J2 no lugar:
sudo ./rpiboot -d mass-storage-gadget64
O sistema detectará o eMMC do CM5, e agora o senhor pode fazer o flash do sistema operacional nele usando o Raspberry Pi Imager ou o dd.
Resumo
- O slot SD do CM5 só funciona nas variantes Lite (sem eMMC).
- Para fazer o flash de um CM5 com eMMC, o senhor deve:
** Definir o jumper J2.
** Usar o rpiboot para expor o eMMC via USB. - Se o rpiboot empacotado não funcionar, construa-o a partir do código-fonte.
Uma vez feito isso, o senhor pode fazer o flash do Raspberry Pi OS diretamente no eMMC como se fosse um cartão SD.