Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Denna handledning kommer att omfatta byggprocessen och installationen av 64 -bitars realtidskärna på Raspberry Pi. RT -kärnan är avgörande för att ROS2 och andra IOT -lösningar i realtid ska fungera fullt ut.
Kärnan installerades på x64 -baserad Raspbian som kan erhållas här
Notera. Denna handledning kräver visserligen grundläggande kunskap om Linux -operativsystemet.
På grund av begränsningar av denna plattform saknar alla http -länkar h. För att fixa dem, lägg till "h" längst fram på länken
Tillbehör
x64 -baserad dator som kör Linux
Raspberry Pi 4B med Raspbian 64 redan installerat
Anslutning till Internet.
Steg 1: Skaffa nödvändiga verktyg
Först måste vi välja verktyg för behovsutveckling.
De kan erhållas genom att köra följande kommandon i Linux -terminalen
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
Steg 2: Kompilera inbyggda byggverktyg för tvärkompilering
Nästa steg är att förbereda och kompilera verktyg för korskompilering av vår kärna.
Firs -verktyget vi kommer att installera är Binutils denna handledning testades med binutils version 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
När konfigurationen är klar måste vi kompilera program med följande kommandon
gör -jx
sudo gör installationen
där -jx betyder hur många jobb du vill köra i parrarell. Tumregel är att den inte ska vara högre än antalet trådar som ditt system har. (till exempel make -j16)
och slutligen måste vi exportera banan
exportera PATH = $ PATH:/opt/aarch64/bin/
Än så fortsätter vi med att bygga och installera 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-med-newlib-utan 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
Än samma som innan vi gör och installerar vår kompilator
gör all -gcc -jx
sudo gör install-gcc
Om allt gick smidigt efter kommandot
/opt/aarch64/bin/aarch64-linux-gnu-gcc -v
borde återanvända i svar liknande detta.
ux-gnu-gcc -v Använda inbyggda specifikationer. COLLECT_GCC =/opt/aarch64/bin/aarch64-linux-gnu-gcc COLLECT_LTO_WRAPPER =/opt/aarch64/libexec/gcc/aarch64-linux-gnu/8.4.0/lto-wrapper Mål: aarch64-linux-gnu Konfigurerad med:./configure --prefix =/opt/aarch64 --target = aarch64-linux-gnu-med-newlib-utan 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 Trådmodell: enda gcc-version 8.4.0 (GCC)
Steg 3: Patching Kernel och Configuring Kernel
Nu är det dags att skaffa vår kärna och RT -patch.
Denna handledning kommer att använda rpi -kärnan v 5.4 och RT -patch RT32. Denna kombination fungerade bra för mig. Men allt borde fungera bra med olika versioner.
mkdir ~/rpi-kärna
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
packa sedan upp plåstret.
gzip -cd../patch-5.4.54-rt32.patch.gz | patch -p1 --verbose
Och initiera konfiguration för Rpi 4B
gör O =../kernel-out/ARCH = arm64 CROSS_COMPILE =/opt/aarch64/bin/aarch64-linux-gnu- bcm2711_defconfig
Efter detta måste vi gå in i menykonfigurationen
gör O =../kernel-out/ARCH = arm64 CROSS_COMPILE =/opt/aarch64/bin/aarch64-linux-gnu- menuconfig
När det lauches behöver vi befintlig konfiguration, gå sedan till
Allmänt -> Preemtion Model och välj Real Time -alternativ.
än vi sparar ny konfiguration och lämnar menyn.
Steg 4: Bygg RT -kärna
Nu är det sammanställningstid. Observera att det kan ta lång tid beroende på datorns funktioner.
make -jx O =../ kernel-out/ ARCH = arm64 CROSS_COMPILE = aarch64-linux-gnu-
Som tidigare betyder -jx antal jobb. Efter framgångsrik sammanställning måste vi packa vårt kärna och skicka det till Raspberry Pi. För att göra detta kör vi följande kommandon.
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_installp.. out/arch/arm64/boot/Image../rt-kernel/boot/kernel8.imgcd $ INSTALL_MOD_PATHtar czf../rt-kernel.tgz *cd..
Nu ska vår kärna vara inne i rt-kernel.tgz-arkivet och den är redo att skickas och installeras.
Steg 5: Installera nytt kärna
Det enklaste sättet att skicka vår kärna till raspbperry är med scp.
Vi utför helt enkelt följande kommando.
scp rt-kernel.tgz pi@:/tmp
Nu måste vi logga in på vår pi via ssh och packa upp vårt kärna.
ssh pi@
När vi är inloggade kopierar vi våra filer med följande kommandon.
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 /
Därefter återstår att redigera filen /boot/config.txt och lägga till följande rad.
kernel = kernel8.img
Efter omstart av pi borde allt fungera bra.
För att kontrollera om den nya kärnan har installerats framgångsrikt kan du köra
uname -a
kommando