Innehållsförteckning:
- Tillbehör
- Steg 1: Skaffa nödvändiga verktyg
- Steg 2: Kompilera inbyggda byggverktyg för tvärkompilering
- Steg 3: Patching Kernel och Configuring Kernel
- Steg 4: Bygg RT -kärna
- Steg 5: Installera nytt kärna
Video: 64 -bitars RT -kärnkompilering för Raspberry Pi 4B.: 5 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:37
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
Rekommenderad:
Inställning för extern Bluetooth GPS -leverantör för Android -enheter: 8 steg
Inställning för extern Bluetooth GPS-leverantör för Android-enheter: Den här instruktionsboken kommer att förklara hur du skapar din egen externa Bluetooth-aktiverade GPS för din telefon, tänd vad som helst för ungefär $ 10. Materialräkning: NEO 6M U-blox GPSHC-05 bluetooth-modul Kunskap om gränssnitt Blutooth LavenergimodulerArdui
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
Väggfäste för iPad som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: 4 steg (med bilder)
Väggfäste för iPad Som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: På senare tid har jag ägnat ganska mycket tid åt att automatisera saker i och runt mitt hus. Jag använder Domoticz som min hemautomationsapplikation, se www.domoticz.com för mer information. I min sökning efter en instrumentpanelapplikation som visar all Domoticz -information tillsammans
Övertyga dig själv om att bara använda en 12V-till-AC-omriktare för LED-ljussträngar istället för att koppla om dem för 12V: 3 steg
Övertyga dig själv om att bara använda en 12V-till-AC-linjeomvandlare för LED-ljussträngar istället för att koppla om dem för 12V: Min plan var enkel. Jag ville klippa upp en väggdriven LED-ljussträng i bitar och sedan dra om den för att gå av 12 volt. Alternativet var att använda en kraftomvandlare, men vi vet alla att de är fruktansvärt ineffektiva, eller hur? Höger? Eller är de det?
1.5A linjär regulator för konstant ström för lysdioder för: 6 steg
1.5A linjär regulator för konstant ström för lysdioder för: Så det finns massor av instruktioner som täcker användning av LED -lampor med hög ljusstyrka. Många av dem använder den kommersiellt tillgängliga Buckpuck från Luxdrive. Många av dem använder också linjära regleringskretsar som toppar vid 350 mA eftersom de är mycket ineffektiva