Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Ovaj vodič će pokriti proces izgradnje i instalacije 64 -bitnog jezgra u stvarnom vremenu na Raspberry Pi. RT kernel je ključan za potpunu funkcionalnost ROS2 i drugih IOT rješenja u realnom vremenu.
Kernel je instaliran na x64 zasnovanom Raspbianu koji se može dobiti ovdje
Bilješka. Ovaj vodič, iako jednostavan, zahtijeva osnovno znanje o operativnom sistemu Linux.
Zbog ograničenja ove platforme, svim http linkovima nedostaje h. Da biste ih popravili, jednostavno dodajte "h" na prednjoj strani veze
Supplies
PC zasnovan na x64 sa Linuxom
Raspberry Pi 4B sa već instaliranim Raspbian 64
Veza sa internetom.
Korak 1: Nabavite Neccesery alate
Prvo moramo nabaviti potrebne alate za razvoj.
Do njih se može doći izvršavanjem sljedećih naredbi u Linux terminalu
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
Korak 2: Sastavite izvorne alate za izgradnju za unakrsnu kompilaciju
Sljedeći korak je pripremiti i kompajlirati alate za unakrsnu kompilaciju našeg jezgra.
Prvi alat koji ćemo instalirati je Binutils Ovaj vodič je testiran sa binutils verzijom 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
Nakon završetka konfiguracije potrebno je kompajlirati program pomoću sljedećih naredbi
make -jx
sudo make install
gdje -jx znači koliko poslova želite pokrenuti u parrarell -u. Opšte pravilo je da to ne postavite više od količine niti koje vaš sistem ima. (na primjer make -j16)
i na kraju moramo izvesti putanju
izvoz PATH = $ PATH:/opt/aarch64/bin/
Zatim nastavljamo s izgradnjom i instalacijom GCC -a
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
Zatim isto kao i prije izrađujemo i instaliramo naš kompajler
napravi all -gcc -jx
sudo make install-gcc
Ako je sve išlo glatko slijedeći naredbu
/opt/aarch64/bin/aarch64-linux-gnu-gcc -v
trebalo bi rezultirati u odgovoru sličnom ovome.
ux-gnu-gcc -v Korištenje ugrađenih specifikacija. COLLECT_GCC =/opt/aarch64/bin/aarch64-linux-gnu-gcc COLLECT_LTO_WRAPPER =/opt/aarch64/libexec/gcc/aarch64-linux-gnu/8.4.0/lto-wrapper Cilj: aarch64-linux-gnu Konfigurirano sa:./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 Model niti: jedna gcc verzija 8.4.0 (GCC))
Korak 3: Zakrpanje jezgre i konfiguriranje jezgre
Sada je vrijeme da nabavimo naš kernel i RT zakrpu.
Ovaj vodič će koristiti rpi kernel v 5.4 i RT zakrpu RT32. Ova kombinacija mi je dobro funkcionisala. Međutim, sve bi trebalo funkcionirati u redu s različitim verzijama.
mkdir ~/rpi-kernel
cd ~/rpi-kernel git klon 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
zatim raspakirajte zakrpu.
gzip -cd../patch-5.4.54-rt32.patch.gz | zakrpa -p1 --verbose
I početna konfiguracija za Rpi 4B
napravi O =../kernel-out/ARCH = arm64 CROSS_COMPILE =/opt/aarch64/bin/aarch64-linux-gnu- bcm2711_defconfig
Nakon toga moramo ući u menuconfig
napravi O =../kernel-out/ARCH = arm64 CROSS_COMPILE =/opt/aarch64/bin/aarch64-linux-gnu- menuconfig
Kada se pokrene, moramo na postojeću konfiguraciju, a zatim idite na
Općenito -> Preemtion Model i odaberite opciju Real Time.
tada spremamo novu konfiguraciju i izlazimo iz izbornika.
Korak 4: Izgradnja RT kernela
Sada je vreme kompilacije. Imajte na umu da može potrajati dugo, ovisno o mogućnostima vašeg računala.
make -jx O =../ kernel-out/ ARCH = arm64 CROSS_COMPILE = aarch64-linux-gnu-
Kao i prije -jx znači broj poslova. Nakon uspješne kompilacije potrebno je zapakirati naš kernel i poslati ga na Raspberry Pi. Da bismo to učinili, izvršavamo sljedeće naredbe.
izvoz 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_ out/arch/arm64/boot/Image../rt-kernel/boot/kernel8.imgcd $ INSTALL_MOD_PATHtar czf../rt-kernel.tgz *cd..
Sada bi naše jezgro trebalo biti unutar arhive rt-kernel.tgz i spremno za slanje i instaliranje.
Korak 5: Instaliranje novog kernela
Najlakši način slanja našeg kernela u raspbperry je pomoću scp.
Jednostavno izvršavamo naredbu follwing.
scp rt-kernel.tgz pi@:/tmp
Sada se moramo prijaviti na naš pi putem ssh -a i raspakirati naš kernel.
ssh pi@
Kada smo prijavljeni, kopiramo naše datoteke pomoću sljedećih naredbi.
cd/tmptar xzf rt -kernel.tgz cd boot sudo cp -rd */boot/cd../lib sudo cp -dr */lib/cd../ prekriva sudo cp -dr */boot/prekriva cd../ broadcom sudo cp -dr bcm* /boot /
Nakon toga preostaje da uredite /boot/config.txt datoteku i dodate sljedeći red.
kernel = kernel8.img
Nakon ponovnog pokretanja pi sve bi trebalo raditi kako treba.
Možete provjeriti je li novo jezgro uspješno instalirano
uname -a
komanda