Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Denne opplæringen vil dekke byggeprosessen og installasjonen av 64 -biters sanntidskerne på Raspberry Pi. RT -kjernen er avgjørende for full funksjonalitet til ROS2 og andre sanntids IOT -løsninger.
Kernel ble installert på x64 -basert Raspbian som du kan få her
Merk. Denne opplæringen krever ganske enkelt grunnleggende kunnskap om Linux -operativsystemet.
På grunn av begrensninger av denne plattformen mangler alle http -lenker h. For å fikse dem, legg til "h" foran på lenken
Rekvisita
x64 -basert PC som kjører Linux
Raspberry Pi 4B med Raspbian 64 allerede installert
Tilkobling til Internett.
Trinn 1: Få nødvendige verktøy
Først må vi velge verktøy for nødvendig utvikling.
De kan oppnås ved å utføre følgende kommandoer 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
Trinn 2: Kompilering av opprinnelige verktøy for krysssamling
Neste trinn er å forhåndsforberede og kompilere verktøy for krysskompilering av kjernen vår.
Firs -verktøyet vi skal installere er Binutils, denne opplæringen ble testet med binutils versjon 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
Etter at konfigurasjonen er fullført, må vi kompilere program ved å bruke følgende kommandoer
lage -jx
sudo gjør install
hvor -jx betyr hvor mange jobber du vil kjøre i parrarell. Tommelfingerregelen er å si at den ikke er høyere enn mengden tråder systemet har. (for eksempel make -j16)
og til slutt må vi eksportere banen
eksport PATH = $ PATH:/opt/aarch64/bin/
Da fortsetter vi med bygging og installasjon av 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-uten-headers / --disable-nls --disable-shared --disable-threads --disable-libssp --disable-desimal-float / --disable-libquadmath --disable-libvtv --disable-libgomp --disable-libatomic / --enable-languages = c --disable-multilib
Enn det samme som før vi lager og installerer kompilatoren vår
lage all -gcc -jx
sudo lag install-gcc
Hvis alt gikk greit etter kommandoen
/opt/aarch64/bin/aarch64-linux-gnu-gcc -v
bør besvare svar på lignende måte som dette.
ux-gnu-gcc -v Bruker innebygde spesifikasjoner. 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 Konfigurert med:./configure --prefix =/opt/aarch64 --target = aarch64-linux-gnu-med-newlib-uten overskrifter --disable-nls --disable-shared --disable-threads --disable-libssp --disable-desimal-float --disable-libquadmath --disable-libvtv --disable-libgomp --disable-libatomic-enable-languages = c --disable-multilib Trådmodell: enkelt gcc versjon 8.4.0 (GCC)
Trinn 3: Patching Kernel og Configuring Kernel
Nå er det på tide å få kjernen og RT -oppdateringen vår.
Denne opplæringen bruker rpi -kjerne v 5.4 og RT -oppdatering RT32. Denne kombinasjonen fungerte bra for meg. Alt bør imidlertid fungere fint med forskjellige versjoner.
mkdir ~/rpi-kjernen
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
pakk deretter ut lappen.
gzip -cd../patch-5.4.54-rt32.patch.gz | patch -p1 --verbose
Og initialiser konfigurasjonen for Rpi 4B
lage O =../kernel-out/ARCH = arm64 CROSS_COMPILE =/opt/aarch64/bin/aarch64-linux-gnu- bcm2711_defconfig
Etter dette må vi gå inn i menykonfigurasjonen
lage O =../kernel-out/ARCH = arm64 CROSS_COMPILE =/opt/aarch64/bin/aarch64-linux-gnu- menuconfig
Når det roser må vi til eksisterende konfigurasjon, og deretter gå til
Generelt -> Forhåndsmodell og velg alternativet Sanntid.
enn vi lagrer ny konfigurasjon og går ut av menyen.
Trinn 4: Bygg RT -kjerne
Nå er kompileringstiden. Vær oppmerksom på at det kan ta lang tid, avhengig av PC -funksjonene.
lage -jx O =../ kjerne-ut/ ARCH = arm64 CROSS_COMPILE = aarch64-linux-gnu-
Som før betyr -jx antall jobber. Etter vellykket kompilering må vi pakke kjernen vår og sende den til Raspberry Pi. For å gjøre dette utfører vi følgende kommandoer.
eksport 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..
Nå skal kjernen vår være inne i rt-kernel.tgz-arkivet og den er klar til å bli sendt og installert.
Trinn 5: Installere nytt kjerne
Den enkleste måten å sende kjernen vår til raspbperry er ved å bruke scp.
Vi utfører ganske enkelt følgende kommando.
scp rt-kernel.tgz pi@:/tmp
Nå må vi logge inn på vår pi via ssh og pakke ut kjernen vår.
ssh pi@
Når vi er logget inn, kopierer vi filene våre med følgende kommandoer.
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 /
Etter det er det igjen å redigere /boot/config.txt -filen og legge til følgende linje.
kjerne = kernel8.img
Etter omstart av pi burde alt fungere fint.
For å sjekke om den nye kjernen ble installert vellykket kan du utføre
uname -a
kommando