Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Ši pamoka apims 64 bitų realaus laiko branduolio kūrimo ir diegimo procesą „Raspberry Pi“. RT branduolys yra labai svarbus visam ROS2 ir kitų realiojo laiko IOT sprendimų funkcionalumui.
Branduolys buvo įdiegtas x64 pagrindu Raspbian, kurį galite rasti čia
Pastaba. Ši pamoka, nors ir paprasta, reikalauja pagrindinių žinių apie „Linux“operacinę sistemą.
Taip pat dėl šios platformos apribojimų visose http nuorodose trūksta h. Norėdami juos pataisyti, tiesiog pridėkite „h“nuorodos priekyje
Prekės
x64 pagrįstas kompiuteris, kuriame veikia „Linux“
„Raspberry Pi 4B“su „Raspbian 64“jau įdiegta
Prisijungimas prie interneto.
1 žingsnis: įsigykite nešiojamųjų įrankių
Pirmiausia turime pasirinkti neccecery dev įrankius.
Juos galima gauti vykdant šias komandas „Linux“terminale
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
2 veiksmas: vietinių kūrimo įrankių, skirtų kryžminiam kompiliavimui, sudarymas
Kitas žingsnis yra paruošti ir surinkti įrankius kryžminiam mūsų branduolio kompiliavimui.
„Firs“įrankis, kurį įdiegsime, yra „Binutils“, ši pamoka buvo išbandyta naudojant „binutils“versiją 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-išjungti-nls
Baigę konfigūraciją, turime surinkti programą naudodami šias komandas
padaryti -jx
sudo make install
kur -jx reiškia, kiek darbų norite atlikti i parrarell. Nykščio taisyklė yra tai, kad jis neturėtų būti didesnis nei siūlų kiekis jūsų sistemoje. (pvz., padaryti -j16)
ir galiausiai turime eksportuoti kelią
eksportuoti PATH = $ PATH:/opt/aarch64/bin/
Toliau tęsiame GCC kūrimą ir montavimą
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. --disable-libssp --disable-decimal-float / --disable-libquadmath --disable-libvtv --disable-libgomp --disable-libatomic / --enable-languages = c --disable-multilib
Ne tas pats, kas prieš tai, kai kuriame ir diegiame kompiliatorių
padaryti all -gcc -jx
sudo make install-gcc
Jei viskas vyko sklandžiai vykdant komandą
/opt/aarch64/bin/aarch64-linux-gnu-gcc -v
turėtų sulaukti panašios reakcijos.
ux-gnu-gcc -v Integruotų specifikacijų naudojimas. COLLECT_GCC =/opt/aarch64/bin/aarch64-linux-gnu-gcc COLLECT_LTO_WRAPPER =/opt/aarch64/libexec/gcc/aarch64-linux-gnu/8.4.0/lto-wrapper Tikslas: aarch64-linux-gnu Konfigūruota naudojant:./configure --prefix =/opt/aarch64 --target = aarch64-linux-gnu --with-newlib-be antraščių --disable-nls --disable-shared --disable-threads --disable-libssp --disable-decimal-float --disable-libquadmath --disable-libvtv --disable-libgomp --disable-libatomic --enable-languages = c --disable-multilib Temos modelis: vieno gcc 8.4.0 versija (GCC)
3 veiksmas: branduolio pataisymas ir branduolio konfigūravimas
Dabar atėjo laikas gauti mūsų branduolį ir RT pataisą.
Ši pamoka naudos rpi branduolį v 5.4 ir RT pataisą RT32. Šis derinys man puikiai tiko. Tačiau su skirtingomis versijomis viskas turėtų veikti gerai.
mkdir ~/rpi-branduolys
cd ~/rpi-branduolio git klonas 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 branduolio išvesties cd linux
tada išpakuokite pleistrą.
gzip -cd../patch-5.4.54-rt32.patch.gz | pleistras -p1 -verbose
Ir inicijuokite „Rpi 4B“konfigūraciją
padaryti O =../kernel-out/ARCH = arm64 CROSS_COMPILE =/opt/aarch64/bin/aarch64-linux-gnu- bcm2711_defconfig
Po to turime įvesti meniu konfigūraciją
padaryti O =../kernel-out/ARCH = arm64 CROSS_COMPILE =/opt/aarch64/bin/aarch64-linux-gnu- menuconfig
Kai jis paleidžiamas, mums reikia esamos konfigūracijos, tada eikite į
Bendra -> Preemtion Model ir pasirinkite Real Time parinktį.
nei išsaugome naują konfigūraciją ir išeiname iš meniu.
4 žingsnis: RT branduolio kūrimas
Dabar jo surinkimo laikas. Atminkite, kad tai gali užtrukti ilgai, atsižvelgiant į kompiuterio galimybes.
padaryti -jx O =../ kernel-out/ ARCH = arm64 CROSS_COMPILE = aarch64-linux-gnu-
Kaip ir anksčiau, -jx reiškia darbo vietų skaičių. Po sėkmingo surinkimo turime supakuoti savo branduolį ir nusiųsti jį į „Raspberry Pi“. Norėdami tai padaryti, vykdome šias komandas.
eksportuoti INSTALL_MOD_PATH = ~/rpi-branduolys/rt-kernelexport INSTALL_DTBS_PATH = ~/rpi-branduolys/rt-kernelmake O =../kernel-out/ARCH = arm64 CROSS_COMPILE = aarch64-linux-gnu- modules_install dp.. out/arch/arm64/boot/Image../rt-kernel/boot/kernel8.imgcd $ INSTALL_MOD_PATHtar czf../rt-kernel.tgz *cd..
Dabar mūsų branduolys turėtų būti rt-kernel.tgz archyve ir paruoštas siųsti ir įdiegti.
5 veiksmas: įdiekite naują branduolį
Lengviausias būdas nusiųsti mūsų branduolį į raspbperry yra naudojant scp.
Mes tiesiog vykdome šią komandą.
scp rt-kernel.tgz pi@:/tmp
Dabar turime prisijungti prie savo pi per ssh ir išpakuoti branduolį.
ssh pi@
Prisijungę mes nukopijuojame failus naudodami šias komandas.
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 /
Po to belieka redaguoti /boot/config.txt failą ir pridėti šią eilutę.
branduolys = branduolys8.img
Iš naujo paleidus „Pi“, viskas turėtų veikti gerai.
Norėdami patikrinti, ar naujas branduolys buvo sėkmingai įdiegtas, galite paleisti
uname -a
komandą