Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Tento tutoriál se bude zabývat procesem vytváření a instalace 64bitového jádra v reálném čase na Raspberry Pi. RT Kernel je zásadní pro plnou funkčnost ROS2 a dalších řešení IOT v reálném čase.
Jádro bylo nainstalováno na Raspbian x64, který lze získat zde
Poznámka. Tento tutoriál, i když přímočarý, vyžaduje základní znalosti operačního systému Linux.
Také kvůli omezením této platformy chybí všechny odkazy http h. Chcete -li je opravit, jednoduše přidejte „h“na začátek odkazu
Zásoby
Počítač s procesorem x64 se systémem Linux
Raspberry Pi 4B s již nainstalovaným Raspbian 64
Připojení k internetu.
Krok 1: Získání nástrojů Neccesery Tools
Nejprve musíme získat nástroje pro vývoj neccecery.
Lze je získat spuštěním následujících příkazů v terminálu 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
Krok 2: Compilng Native Build Tools for Cross Compilation
Dalším krokem je příprava a kompilace nástrojů pro křížovou kompilaci našeho jádra.
Prvním nástrojem, který budeme instalovat, je Binutils, tento tutoriál byl testován s binutils verze 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
Po dokončení konfigurace musíme program zkompilovat pomocí následujících příkazů
udělat -jx
sudo provést instalaci
kde -jx znamená, kolik úloh chcete spustit i Parrarell. Pravidlem je, aby to nebylo vyšší než počet vláken, která váš systém má. (například make -j16)
a nakonec musíme cestu exportovat
export PATH = $ PATH:/opt/aarch64/bin/
Poté pokračujeme ve stavbě a instalaci 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
Než to samé, co jsme vytvořili a nainstalovali náš kompilátor
make all -gcc -jx
sudo make install-gcc
Pokud vše proběhlo hladce podle příkazu
/opt/aarch64/bin/aarch64-linux-gnu-gcc -v
by měl resoult v odpovědi podobné tomuto.
ux-gnu-gcc -v Použití vestavěných specifikací. COLLECT_GCC =/opt/aarch64/bin/aarch64-linux-gnu-gcc COLLECT_LTO_WRAPPER =/opt/aarch64/libexec/gcc/aarch64-linux-gnu/8.4.0/lto-wrapper Cíl: aarch64-linux-gnu Konfigurováno pomocí:./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 Thread model: single gcc version 8.4.0 (GCC)
Krok 3: Oprava jádra a konfigurace jádra
Nyní je čas získat naši opravu jádra a RT.
Tento tutoriál bude používat jádro rpi v 5.4 a RT patch RT32. Tato kombinace se mi osvědčila. S různými verzemi by však vše mělo fungovat dobře.
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 jádro-out cd linux
pak rozbalte opravu.
gzip -cd../patch-5.4.54-rt32.patch.gz | patch -p1 -verbose
A inicializujte konfiguraci pro Rpi 4B
make O =../kernel-out/ARCH = arm64 CROSS_COMPILE =/opt/aarch64/bin/aarch64-linux-gnu- bcm2711_defconfig
Dále musíme vstoupit do konfiguračního menu
make O =../kernel-out/ARCH = arm64 CROSS_COMPILE =/opt/aarch64/bin/aarch64-linux-gnu- menuconfig
Když se objeví, potřebujeme stávající konfiguraci, pak přejděte na
Obecné -> Preemtion Model a vyberte možnost Real Time.
než uložíme novou konfiguraci a opustíme nabídku.
Krok 4: Budování jádra RT
Nyní je čas na kompilaci. V závislosti na schopnostech vašeho počítače to může trvat dlouho.
make -jx O =../ kernel-out/ ARCH = arm64 CROSS_COMPILE = aarch64-linux-gnu-
Jako dříve -jx znamená počet úloh. Po úspěšné kompilaci musíme zabalit naše jádro a odeslat jej na Raspberry Pi. K tomu spustíme následující příkazy.
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_c.. out/arch/arm64/boot/Image../rt-kernel/boot/kernel8.imgcd $ INSTALL_MOD_PATHtar czf../rt-kernel.tgz *cd..
Nyní by naše jádro mělo být v archivu rt-kernel.tgz a připraveno k odeslání a instalaci.
Krok 5: Instalace nového jádra
Nejjednodušší způsob, jak poslat naše jádro do raspbperry, je pomocí scp.
Jednoduše provedeme následující příkaz.
scp rt-kernel.tgz pi@:/tmp
Nyní se musíme přihlásit k našemu pí přes ssh a rozbalit naše jádro.
ssh pi@
Když jsme přihlášeni, kopírujeme naše soubory pomocí následujících příkazů.
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 /
Poté zbývá upravit soubor /boot/config.txt a přidat následující řádek.
jádro = kernel8.img
Po restartu pi by vše mělo fungovat dobře.
Chcete -li zkontrolovat, zda bylo nové jádro úspěšně nainstalováno, můžete spustit
uname -a
příkaz