İçindekiler:

Raspberry Pi 4B için 64bit RT Çekirdek Derlemesi: 5 Adım
Raspberry Pi 4B için 64bit RT Çekirdek Derlemesi: 5 Adım

Video: Raspberry Pi 4B için 64bit RT Çekirdek Derlemesi: 5 Adım

Video: Raspberry Pi 4B için 64bit RT Çekirdek Derlemesi: 5 Adım
Video: ARM-ПК на Windows 11 за 220 долларов — убийца Raspberry Pi 4? 2024, Temmuz
Anonim
Raspberry Pi 4B için 64bit RT Çekirdek Derlemesi
Raspberry Pi 4B için 64bit RT Çekirdek Derlemesi

Bu eğitim, Raspberry Pi üzerinde 64 bit Gerçek Zamanlı Çekirdek oluşturma ve kurulum sürecini kapsayacaktır. RT Kernel, ROS2 ve diğer Gerçek Zamanlı IOT çözümlerinin tam işlevselliği için çok önemlidir.

Çekirdek, buradan edinilebilecek x64 tabanlı Raspbian üzerine kuruldu.

Not. Bu öğretici, basit olmasına rağmen, temel Linux işletim sistemi bilgisi gerektirir.

Ayrıca bu platformun sınırlamaları nedeniyle tüm http bağlantılarında h. Bunları düzeltmek için bağlantının önüne "h" ekleyin

Gereçler

Linux çalıştıran x64 tabanlı bilgisayar

Raspbian 64 yüklü Raspberry Pi 4B

İnternete bağlantı.

1. Adım: Gerekli Araçların Alınması

Öncelikle gerekli geliştirme araçlarını edinmemiz gerekiyor.

Linux terminalinde aşağıdaki komutlar yürütülerek elde edilebilirler.

sudo apt-get install build-essential libgmp-dev libmpfr-dev libmpc-dev libisl-dev libncurses5-dev bc git-core bizon flexsudo apt-get install libncurses-dev libssl-dev

2. Adım: Çapraz Derleme için Yerel Derleme Araçlarını Derleme

Bir sonraki adım, çekirdeğimizin çapraz derlemesi için araçları hazırlamak ve derlemektir.

Yükleyeceğimiz ilk araç Binutils'dir, bu öğretici binutils sürüm 2.35 ile test edilmiştir.

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 -- hedef=aarch64-linux-gnu --disable-nls

Yapılandırma bittikten sonra aşağıdaki komutları kullanarak programı derlememiz gerekiyor.

-jx yap

sudo kurulum yap

nerede -jx, kaç tane iş çalıştırmak istediğiniz anlamına gelir i parrarell. Temel kural, sisteminizin sahip olduğu iş parçacığı miktarından daha yüksek olmamasıdır. (örneğin yapmak -j16)

ve son olarak yolu dışa aktarmamız gerekiyor

dışa aktar YOL=$YOL:/opt/aarch64/bin/

Daha sonra GCC'nin inşası ve kurulumuna devam ediyoruz.

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_prequires./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

Derleyicimizi oluşturup kurmadan öncekiyle aynı

all-gcc -jx yap

sudo make install-gcc

Komutu takip ederek her şey yolunda giderse

/opt/aarch64/bin/aarch64-linux-gnu-gcc -v

buna benzer bir yanıtla sonuçlanmalıdır.

ux-gnu-gcc -v Yerleşik özellikleri kullanma. COLLECT_GCC=/opt/aarch64/bin/aarch64-linux-gnu-gcc COLLECT_LTO_WRAPPER=/opt/aarch64/libexec/gcc/aarch64-linux-gnu/8.4.0/lto-wrapper Hedef: aarch64-linux-gnu Şunlarla yapılandırılır:./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 İş parçacığı modeli: tek gcc sürüm 8.4.0 (GCC)

Adım 3: Çekirdeğe Yama Yapma ve Çekirdeği Yapılandırma

Şimdi çekirdeğimizi ve RT yamamızı alma zamanı.

Bu eğitimde rpi kernel v 5.4 ve RT yaması RT32 kullanılacaktır. Bu kombinasyon benim için iyi çalıştı. Ancak her şey farklı sürümlerle iyi çalışmalıdır.

mkdir ~/rpi-çekirdek

cd ~/rpi-kernel git klonu ttps://github.com/raspberrypi/linux.git -b rpi-5.4.y wget ttps://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt /5.4/eski/patch-5.4.54-rt32.patch.gz mkdir kernel-out cd linux

sonra yamayı paketinden çıkarın.

gzip -cd../patch-5.4.54-rt32.patch.gz | yama -p1 --verbose

Ve Rpi 4B için yapılandırmayı başlatın

yap O=../kernel-out/ ARCH=arm64 CROSS_COMPILE=/opt/aarch64/bin/aarch64-linux-gnu- bcm2711_defconfig

Bundan sonra menuconfig'e girmemiz gerekiyor

yap O=../kernel-out/ ARCH=arm64 CROSS_COMPILE=/opt/aarch64/bin/aarch64-linux-gnu- menuconfig

Açıldığında mevcut konfigürasyona ihtiyacımız var, ardından

General -> Preemtion Model ve Real Time seçeneğini seçin.

yeni konfigürasyonu kaydedip menüden çıkıyoruz.

4. Adım: RT Çekirdeği Oluşturma

Şimdi derleme zamanı. Bilgisayarınızın özelliklerine bağlı olarak uzun zaman alabileceğini unutmayın.

make -jx O=../kernel-out/ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

Daha önce olduğu gibi -jx iş sayısı anlamına gelir. Başarılı bir derlemeden sonra Kernel'imizi paketleyip Raspberry Pi'ye göndermemiz gerekiyor. Bunun için aşağıdaki komutları uyguluyoruz.

dışa aktar INSTALL_MOD_PATH=~/rpi-kernel/rt-kernelexport INSTALL_DTBS_PATH=~/rpi-kernel/rt-kernelmake O=../kernel-out/ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- module_install dtbs_installcp../kernel out/arch/arm64/boot/Image../rt-kernel/boot/kernel8.imgcd $INSTALL_MOD_PATHtar czf../rt-kernel.tgz *cd..

Artık çekirdeğimiz rt-kernel.tgz arşivinde ve gönderilmeye ve kurulmaya hazır olmalıdır.

Adım 5: Yeni Çekirdeği Yükleme

Çekirdeğimizi raspbperry'ye göndermenin en kolay yolu scp kullanmaktır.

Biz sadece aşağıdaki komutu yürütüyoruz.

scp rt-kernel.tgz pi@:/tmp

Şimdi pi'mize ssh ile giriş yapmamız ve Çekirdeğimizi açmamız gerekiyor.

ssh pi@

Giriş yaptığımızda aşağıdaki komutları kullanarak dosyalarımızı kopyalıyoruz.

cd /tmptar xzf rt-kernel.tgz cd önyüklemesi sudo cp -rd * /boot/ cd../lib sudo cp -dr * /lib/ cd../overlays sudo cp -dr * /boot/overlays cd../ Broadcom sudo cp -dr bcm* /boot/

Bundan sonra yapılması gereken /boot/config.txt dosyasını düzenlemek ve aşağıdaki satırı eklemektir.

çekirdek=kernel8.img

Pi'yi yeniden başlattıktan sonra her şey iyi çalışıyor olmalı.

Yeni çekirdeğin başarıyla yüklenip yüklenmediğini kontrol etmek için çalıştırabilirsiniz.

unname -a

emretmek

Önerilen: