Índice:

Compilação de kernel RT de 64 bits para Raspberry Pi 4B.: 5 etapas
Compilação de kernel RT de 64 bits para Raspberry Pi 4B.: 5 etapas

Vídeo: Compilação de kernel RT de 64 bits para Raspberry Pi 4B.: 5 etapas

Vídeo: Compilação de kernel RT de 64 bits para Raspberry Pi 4B.: 5 etapas
Vídeo: AMD Sempron Cpu processor .Removing pins For Gold Recovery 2024, Novembro
Anonim
Compilação de kernel de 64 bits RT para Raspberry Pi 4B
Compilação de kernel de 64 bits RT para Raspberry Pi 4B

Este tutorial cobrirá o processo de construção e instalação do kernel em tempo real de 64 bits no Raspberry Pi. O kernel RT é crucial para a funcionalidade completa do ROS2 e outras soluções IOT em tempo real.

O kernel foi instalado em Raspbian baseado em x64 que pode ser obtido aqui

Observação. Este tutorial, embora seja simples, requer conhecimento básico do sistema operacional Linux.

Também devido às limitações desta plataforma, todos os links http não possuem h. Para corrigi-los, basta adicionar "h" no início do link

Suprimentos

PC baseado em x64 com Linux

Raspberry Pi 4B com Raspbian 64 já instalado

Conexão com a Internet.

Etapa 1: Obtendo as ferramentas necessárias

Primeiro, precisamos optar por ferramentas de desenvolvimento neccecery.

Eles podem ser obtidos executando os seguintes comandos no terminal Linux

sudo apt-get install build-essential libgmp-dev libmpfr-dev libmpc-dev libisl-dev libncurses5-dev bc git-core bison flexsudo apt-get install libncurses-dev libssl-dev

Etapa 2: compilar ferramentas nativas de compilação para compilação cruzada

O próximo passo é pré-preparar e compilar ferramentas para compilação cruzada de nosso kernel.

A primeira ferramenta que iremos instalar é o Binutils. Este tutorial foi testado com o binutils versão 2.35.

cd ~ / Downloadswget ttps: //ftp.gnu.org/gnu/binutils/binutils-2.35.tar.bz2tar xf binutils-2.35.tar.bz2cd binutils-2.35 /./ configure --prefix = / opt / aarch64 - target = aarch64-linux-gnu --disable-nls

Após a conclusão da configuração, precisamos compilar o programa usando os seguintes comandos

make -jx

sudo make install

onde -jx significa quantos jobs você deseja executar i parrarell. A regra é não ultrapassar a quantidade de threads que seu sistema possui. (por exemplo make -j16)

e, finalmente, precisamos exportar o caminho

export PATH = $ PATH: / opt / aarch64 / bin /

Em seguida, prosseguimos com a construção e instalação do GCC

cd..wget ttps: //ftp.gnu.org/gnu/gcc/gcc-8.4.0/gcc-8.4.0.tar.xztar xf gcc-8.4.0.tar.xzcd gcc-8.4.0 /. /contrib/download_prerequisites./configure --prefix = / opt / aarch64 --target = aarch64-linux-gnu --with-newlib --without-headers / --disable-nls --disable-shared --disable-threads --disable-libssp --disable-decimal-float / --disable-libquadmath --disable-libvtv --disable-libgomp --disable-libatomic / --enable-languages = c --disable-multilib

Do que o mesmo de antes de fazer e instalar nosso compilador

make all-gcc -jx

sudo make install-gcc

Se tudo correu bem seguindo o comando

/ opt / aarch64 / bin / aarch64-linux-gnu-gcc -v

deve resoult em responder semelhante a este.

ux-gnu-gcc -v Usando especificações integradas. COLLECT_GCC = / opt / aarch64 / bin / aarch64-linux-gnu-gcc COLLECT_LTO_WRAPPER = / opt / aarch64 / libexec / gcc / aarch64-linux-gnu / 8.4.0 / lto-wrapper Destino: aarch64-linux-gnu Configurado com:./configure --prefix = / opt / aarch64 --target = aarch64-linux-gnu --with-newlib --without-headers --disable-nls --disable-shared --disable-threads --disable-libssp --disable-decimal-float --disable-libquadmath --disable-libvtv --disable-libgomp --disable-libatomic --enable-languages = c --disable-multilib Modelo de thread: gcc único versão 8.4.0 (GCC)

Etapa 3: corrigindo e configurando o kernel

Agora é hora de obter nosso kernel e patch RT.

Este tutorial usará o kernel rpi v 5.4 e o patch RT32 do RT. Essa combinação funcionou bem para mim. No entanto, tudo deve funcionar bem com versões diferentes.

mkdir ~ / rpi-kernel

cd ~ / rpi-kernel git clone ttps: //github.com/raspberrypi/linux.git -b rpi-5.4.y wget ttps: //mirrors.edge.kernel.org/pub/linux/kernel/projects/rt /5.4/older/patch-5.4.54-rt32.patch.gz mkdir kernel-out cd linux

em seguida, descompacte o patch.

gzip -cd../patch-5.4.54-rt32.patch.gz | patch -p1 --verbose

E inicializar a configuração para Rpi 4B

make O =.. / kernel-out / ARCH = arm64 CROSS_COMPILE = / opt / aarch64 / bin / aarch64-linux-gnu- bcm2711_defconfig

Depois disso, precisamos entrar no menuconfig

make O =.. / kernel-out / ARCH = arm64 CROSS_COMPILE = / opt / aarch64 / bin / aarch64-linux-gnu- menuconfig

Quando for lançado, precisamos da configuração existente, então vá para

General -> Preemtion Model e selecione a opção Real Time.

então salvamos a nova configuração e saímos do menu.

Etapa 4: Construindo Kernel RT

Agora é hora de compilação. Observe que pode demorar muito, dependendo dos recursos do seu PC.

make -jx O =.. / kernel-out / ARCH = arm64 CROSS_COMPILE = aarch64-linux-gnu-

Como antes, -jx significa número de empregos. Após a compilação bem-sucedida, precisamos empacotar nosso kernel e enviá-lo para Raspberry Pi. Para fazer isso, executamos os seguintes comandos.

export INSTALL_MOD_PATH = ~ / rpi-kernel / rt-kernelexport INSTALL_DTBS_PATH = ~ / rpi-kernel / rt-kernelmake O =.. / kernel-out / ARCH = arm64 CROSS_COMPILE = aarch64-linux-gnu- modules_install dtbs_installcp../kernel- out / arch / arm64 / boot / Image../rt-kernel/boot/kernel8.imgcd $ INSTALL_MOD_PATHtar czf../rt-kernel.tgz * cd..

Agora nosso kernel deve estar dentro do arquivo rt-kernel.tgz e pronto para ser enviado e instalado.

Etapa 5: Instalando o Novo Kernel

A maneira mais fácil de enviar nosso kernel para o raspbperry é usando scp.

Simplesmente executamos o seguinte comando.

scp rt-kernel.tgz pi @: / tmp

Agora precisamos fazer o login em nosso pi via ssh e descompactar nosso Kernel.

ssh pi @

Quando conectado, copiamos nossos arquivos usando os seguintes comandos.

cd / tmptar xzf rt-kernel.tgz cd boot sudo cp -rd * / boot / cd../lib sudo cp -dr * / lib / cd../overlays sudo cp -dr * / boot / overlays cd../ broadcom sudo cp -dr bcm * / boot /

Depois disso, o que resta fazer é editar o arquivo /boot/config.txt e adicionar a linha a seguir.

kernel = kernel8.img

Depois de reiniciar o pi, tudo deve estar funcionando bem.

Para verificar se o novo kernel foi instalado com sucesso você pode executar

uname -a

comando

Recomendado: