Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Ushbu qo'llanma Raspberry Pi -da 64 bitli real vaqt yadrosini yaratish va o'rnatish jarayonini o'z ichiga oladi. RT Kernel ROS2 va boshqa real vaqtda IOT echimlarining to'liq ishlashi uchun juda muhimdir.
Kernel x64 -ga asoslangan Raspbian -ga o'rnatildi, uni bu erda olish mumkin
Eslatma. Ushbu qo'llanma sodda bo'lsa ham, Linux operatsion tizimi haqida asosiy bilimlarni talab qiladi.
Shuningdek, ushbu platformaning cheklanganligi tufayli barcha http havolalarida h yo'q. Ularni tuzatish uchun havolaning old qismiga "h" ni qo'shing
Ta'minotlar
Linux bilan ishlaydigan x64 asosidagi kompyuter
Raspbian 64 bilan Raspberry Pi 4B allaqachon o'rnatilgan
Internetga ulanish.
1 -qadam: Kerakli asboblarni olish
Birinchidan, biz zarur asboblarni tanlashimiz kerak.
Ularni Linux terminalida quyidagi buyruqlarni bajarish orqali olish mumkin
libncurses
2 -qadam: O'zaro kompilyatsiya uchun mahalliy qurilish vositalarini yig'ish
Keyingi qadam, yadroni o'zaro kompilyatsiya qilish uchun asboblarni tayyorlash va kompilyatsiya qilish.
Biz o'rnatadigan Firs vositasi - Binutils, bu qo'llanma binutils 2.35 versiyasi bilan sinovdan o'tgan.
cd ~/Yuklamalarwget 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
Konfiguratsiya tugagandan so'ng, biz quyidagi buyruqlar yordamida dasturni kompilyatsiya qilishimiz kerak
-jx qiling
sudo make install
bu erda -jx qancha ishni bajarishni xohlayotganingizni anglatadi i parrarell. Qoida - bu sizning tizimingizdagi iplar sonidan oshmasligi. (masalan, -j16 qiling)
va nihoyat biz yo'lni eksport qilishimiz kerak
eksport PATH = $ PATH:/opt/aarch64/bin/
GCCni qurish va o'rnatishni davom ettiramiz
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 --with-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
Kompilyatorni yasash va o'rnatishdan oldin bo'lgani kabi
all -gcc -jx qiling
sudo install-gcc
Agar hamma narsa tartibda bo'lsa, buyruqni bajaring
/opt/aarch64/bin/aarch64-linux-gnu-gcc -v
shunga o'xshash javob berishi kerak.
ux-gnu-gcc -v O'rnatilgan xususiyatlardan foydalanish. COLLECT_GCC =/opt/aarch64/bin/aarch64-linux-gnu-gcc COLLECT_LTO_WRAPPER =/opt/aarch64/libexec/gcc/aarch64-linux-gnu/8.4.0/lto-wrapper Maqsad: aarch64-linux-gnu Konfiguratsiya qilingan:./configure --prefix =/opt/aarch64 --target = aarch64-linux-gnu --with-newlib-with-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 Thread modeli: bitta gcc versiyasi 8.4.0 (GCC))
3 -qadam: yadroni tuzatish va yadroni sozlash
Endi bizning yadro va RT tuzatishlarni olish vaqti keldi.
Bu qo'llanmada rpi kernel v 5.4 va RT patch RT32 ishlatiladi. Bu kombinatsiya men uchun yaxshi ishladi. Ammo hamma narsa har xil versiyalarda yaxshi ishlashi kerak.
mkdir ~/rpi-yadrosi
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 yadrodan chiqarilgan cd linux
keyin yamoqni oching.
gzip -cd../patch-5.4.54-rt32.patch.gz | patch -p1 -verbose
Rpi 4B uchun konfiguratsiyani boshlang
O =../kernel-out/ARCH = arm64 CROSS_COMPILE =/opt/aarch64/bin/aarch64-linux-gnu- bcm2711_defconfig
Keyin biz menukonfigga kirishimiz kerak
O =../kernel-out/ARCH = arm64 CROSS_COMPILE =/opt/aarch64/bin/aarch64-linux-gnu- menuconfig
Kulganda, biz mavjud konfiguratsiyaga muhtojmiz, keyin o'ting
Umumiy -> Oldindan ko'rish modeli va "Real vaqt" variantini tanlang.
biz yangi konfiguratsiyani saqlaymiz va menyudan chiqamiz.
4 -qadam: RT yadrosini yaratish
Endi uning kompilyatsiya vaqti. Shuni esda tutingki, bu sizning kompyuteringizning imkoniyatlariga qarab ancha vaqt talab qilishi mumkin.
qilish -jx O =../ kernel-out/ ARCH = arm64 CROSS_COMPILE = aarch64-linux-gnu-
Avvalgi kabi -jx ish o'rinlari sonini bildiradi. Muvaffaqiyatli kompilyatsiya qilinganidan so'ng, biz yadroni yig'ib, Raspberry Pi -ga yuborishimiz kerak. Buning uchun biz quyidagi buyruqlarni bajaramiz.
eksport qilish 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 dt.. out/arch/arm64/boot/Image../rt-kernel/boot/kernel8.imgcd $ INSTALL_MOD_PATHtar czf../rt-kernel.tgz *cd..
Endi bizning yadroimiz rt-kernel.tgz arxivida bo'lishi va uni yuborish va o'rnatishga tayyor bo'lishi kerak.
5 -qadam: Yangi yadroni o'rnatish
Bizning yadroni raspbperry -ga yuborishning eng oson usuli - scp yordamida.
Biz faqat quyidagi buyruqni bajaramiz.
scp rt-kernel.tgz pi@:/tmp
Endi biz ssh orqali pi -ga kirishimiz va yadroni ochishimiz kerak.
ssh pi@
Tizimga kirganimizda biz quyidagi buyruqlar yordamida fayllarimizni nusxa ko'chiramiz.
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 /
Shundan so'ng, /boot/config.txt faylini tahrir qilish va keyingi qatorni qo'shish qoladi.
yadro = yadro8.img
Qayta ishga tushirilgandan so'ng, hamma narsa yaxshi ishlashi kerak.
Yangi yadro muvaffaqiyatli o'rnatilganligini tekshirish uchun siz bajarishingiz mumkin
uname -a
buyruq