Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Ta vadnica bo zajemala postopek izdelave in namestitve 64 -bitnega jedra v realnem času na Raspberry Pi. Jedro RT je ključnega pomena za polno funkcionalnost ROS2 in drugih rešitev v realnem času IOT.
Jedro je bilo nameščeno na Raspbianu na osnovi x64, ki ga lahko dobite tukaj
Opomba. Ta vadnica, čeprav preprosta, zahteva osnovno znanje o operacijskem sistemu Linux.
Tudi zaradi omejitev te platforme vsem http povezavam manjka h. Če jih želite popraviti, preprosto dodajte "h" na sprednji strani povezave
Zaloge
računalnik s sistemom x64 z operacijskim sistemom Linux
Raspberry Pi 4B z že nameščenim Raspbian 64
Povezava z internetom.
1. korak: Pridobite orodja Neccesery
Najprej se moramo odločiti za orodja za razvijanje.
Do njih lahko pridete z izvajanjem naslednjih ukazov v terminalu Linux
sudo apt-get install build-bistven libgmp-dev libmpfr-dev libmpc-dev libisl-dev libncurses5-dev bc git-core bison flexsudo apt-get install libncurses-dev libssl-dev
2. korak: Zberite orodja za domačo gradnjo za navzkrižno sestavljanje
Naslednji korak je priprava in sestavljanje orodij za navzkrižno sestavljanje našega jedra.
Prvo orodje, ki ga bomo namestili, je Binutils, ta vadnica je bila preizkušena z binutils različico 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
Po končani konfiguraciji moramo program sestaviti z naslednjimi ukazi
make -jx
sudo make install
kjer -jx pomeni, koliko delovnih mest želite izvesti v parrarell. Splošno pravilo je, da ga ne postavite več kot količino niti, ki jih ima vaš sistem. (na primer make -j16)
in končno moramo pot izvoziti
izvoz PATH = $ PATH:/opt/aarch64/bin/
Nato nadaljujemo z gradnjo in namestitvijo 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 --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
Tako kot prej naredimo in namestimo naš prevajalnik
naredi all -gcc -jx
sudo naredi install-gcc
Če je po ukazu vse potekalo brez težav
/opt/aarch64/bin/aarch64-linux-gnu-gcc -v
bi morala dobiti podoben odgovor.
ux-gnu-gcc -v Uporaba vgrajenih specifikacij. 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 z:./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: ena različica gcc 8.4.0 (GCC)
3. korak: Zakrpanje jedra in konfiguracija jedra
Zdaj je čas, da dobimo naše jedro in RT popravek.
Ta vadnica bo uporabljala jedro rpi v 5.4 in RT popravek RT32. Ta kombinacija mi je dobro uspela. Vendar bi moralo z različicami vse delovati v redu.
mkdir ~/rpi-jedro
cd ~/rpi-jedro 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
nato odpakirajte obliž.
gzip -cd../patch-5.4.54-rt32.patch.gz | obliž -p1 -verbose
Inicializiranje konfiguracije za Rpi 4B
naredi O =../kernel-out/ARCH = arm64 CROSS_COMPILE =/opt/aarch64/bin/aarch64-linux-gnu- bcm2711_defconfig
Po tem moramo vstopiti v menuconfig
naredi O =../kernel-out/ARCH = arm64 CROSS_COMPILE =/opt/aarch64/bin/aarch64-linux-gnu- menuconfig
Ko se začne, moramo na obstoječo konfiguracijo, pojdite na
Splošno -> Preemtion Model in izberite možnost Real Time.
potem shranimo novo konfiguracijo in zapustimo meni.
4. korak: Izdelava jedra RT
Zdaj je čas zbiranja. Upoštevajte, da lahko traja veliko časa, odvisno od zmogljivosti računalnika.
make -jx O =../ kernel-out/ ARCH = arm64 CROSS_COMPILE = aarch64-linux-gnu-
Kot prej -jx pomeni število delovnih mest. Po uspešni kompilaciji moramo zapakirati naše jedro in ga poslati v Raspberry Pi. Če želite to narediti, izvedemo naslednje ukaze.
izvozi 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_install_tc_install out/arch/arm64/boot/Image../rt-kernel/boot/kernel8.imgcd $ INSTALL_MOD_PATHtar czf../rt-kernel.tgz *cd..
Zdaj bi moralo biti naše jedro v arhivu rt-kernel.tgz in pripravljeno za pošiljanje in namestitev.
5. korak: Namestitev novega jedra
Najlažji način pošiljanja našega jedra v raspbperry je uporaba scp.
Preprosto izvedemo ukaz follwing.
scp rt-kernel.tgz pi@:/tmp
Zdaj se morate prijaviti v naš pi prek ssh in razpakirati naše jedro.
ssh pi@
Ko smo prijavljeni, svoje datoteke kopiramo z naslednjimi ukazi.
cd/tmptar xzf rt -kernel.tgz cd zagon sudo cp -rd */boot/cd../lib sudo cp -dr */lib/cd../ prekrivanje sudo cp -dr */boot/prekrivanje cd../ broadcom sudo cp -dr bcm* /zagon /
Po tem morate le urediti datoteko /boot/config.txt in dodati naslednjo vrstico.
jedro = kernel8.img
Po ponovnem zagonu pi bi moralo vse delovati v redu.
Če želite preveriti, ali je bilo novo jedro uspešno nameščeno, lahko izvedete
uname -a
ukaz