สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
บทช่วยสอนนี้จะครอบคลุมขั้นตอนการสร้างและติดตั้งเคอร์เนลแบบเรียลไทม์ 64 บิตบน Raspberry Pi RT Kernel มีความสำคัญอย่างยิ่งต่อการทำงานอย่างเต็มรูปแบบของ ROS2 และโซลูชัน IOT แบบเรียลไทม์อื่นๆ
ติดตั้งเคอร์เนลบน Raspbian ที่ใช้ x64 ซึ่งสามารถรับได้ที่นี่
บันทึก. บทช่วยสอนนี้แม้จะตรงไปตรงมาต้องการความรู้พื้นฐานเกี่ยวกับระบบปฏิบัติการลีนุกซ์
นอกจากนี้ เนื่องจากข้อจำกัดของแพลตฟอร์มนี้ ลิงก์ http ทั้งหมดจึงขาด h. วิธีแก้ไขง่ายๆ ให้เติม "h" ที่ด้านหน้าของลิงก์
เสบียง
พีซีที่ใช้ x64 ที่ใช้ Linux
Raspberry Pi 4B พร้อม Raspbian 64 ติดตั้งแล้ว
การเชื่อมต่อกับอินเทอร์เน็ต
ขั้นตอนที่ 1: รับเครื่องมือที่จำเป็น
ขั้นแรกเราต้องเลือกเครื่องมือ dev ที่ไม่จำเป็น
สามารถรับได้โดยดำเนินการคำสั่งต่อไปนี้ใน Linux terminal
sudo apt-get ติดตั้ง build-essential libgmp-dev libmpfr-dev libmpc-dev libisl-dev libncurses5-dev bc git-core กระทิง flexsudo apt-get ติดตั้ง libncurses-dev libssl-dev
ขั้นตอนที่ 2: รวบรวมเครื่องมือสร้างดั้งเดิมสำหรับการคอมไพล์ข้าม
ขั้นตอนต่อไปคือการจัดเตรียมและคอมไพล์เครื่องมือสำหรับการคอมไพล์เคอร์เนลของเรา
เครื่องมือ Firs ที่เราจะติดตั้งคือ Binutils บทช่วยสอนนี้ได้รับการทดสอบกับ binutils เวอร์ชัน 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 -- เป้าหมาย = aarch64-linux-gnu --disable-nls
หลังจากการกำหนดค่าเสร็จสิ้น เราจำเป็นต้องคอมไพล์โปรแกรมโดยใช้คำสั่งต่อไปนี้
ทำ -jx
sudo ทำการติดตั้ง
โดยที่ -jx หมายถึงจำนวนงานที่คุณต้องการเรียกใช้ i parrarell กฎทั่วไปคือต้องไม่เกินจำนวนเธรดที่ระบบของคุณมี (เช่น make -j16)
และสุดท้ายเราต้องส่งออกเส้นทาง
ส่งออก PATH=$PATH:/opt/aarch64/bin/
กว่าที่เราดำเนินการสร้างและติดตั้ง GCC
ซีดี..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
กว่าที่เราเคยทำและติดตั้งคอมไพเลอร์ของเรามาก่อน
ทำให้ทั้งหมด-gcc -jx
sudo make install-gcc
หากทุกอย่างดำเนินไปอย่างราบรื่นตามคำสั่ง
/opt/aarch64/bin/aarch64-linux-gnu-gcc -v
น่าจะตอบสนองในลักษณะนี้
ux-gnu-gcc -v การใช้ข้อกำหนดในตัว COLLECT_GCC=/opt/aarch64/bin/aarch64-linux-gnu-gcc COLLECT_LTO_WRAPPER=/opt/aarch64/libexec/gcc/aarch64-linux-gnu/8.4.0/lto-wrapper เป้าหมาย: aarch64-linux-gnu กำหนดค่าด้วย:./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 Thread model: single gcc version 8.4.0 (GCC))
ขั้นตอนที่ 3: การแพตช์เคอร์เนลและการกำหนดค่าเคอร์เนล
ตอนนี้ได้เวลารับเคอร์เนลและแพตช์ RT ของเราแล้ว
บทช่วยสอนนี้จะใช้เคอร์เนล rpi v 5.4 และ RT patch RT32 ชุดค่าผสมนี้ใช้ได้ดีสำหรับฉัน อย่างไรก็ตาม ทุกอย่างควรทำงานได้ดีกับเวอร์ชันต่างๆ
mkdir ~/rpi-เคอร์เนล
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/เก่ากว่า/patch-5.4.54-rt32.patch.gz mkdir เคอร์เนลออก cd ลินุกซ์
จากนั้นแกะแพตช์
gzip -cd../patch-5.4.54-rt32.patch.gz | patch -p1 --verbose
และกำหนดค่าเริ่มต้นสำหรับ Rpi 4B
ทำให้ O=../kernel-out/ ARCH=arm64 CROSS_COMPILE=/opt/aarch64/bin/aarch64-linux-gnu- bcm2711_defconfig
ต่อจากนี้เราต้องเข้าไปที่ menuconfig
ทำให้ O=../kernel-out/ ARCH=arm64 CROSS_COMPILE=/opt/aarch64/bin/aarch64-linux-gnu- menuconfig
เมื่อ lauches เราจำเป็นต้องกำหนดค่าที่มีอยู่ จากนั้นไปที่
ทั่วไป -> Preemtion Model และเลือกตัวเลือก Real Time
กว่าที่เราจะบันทึกการกำหนดค่าใหม่และออกจากเมนู
ขั้นตอนที่ 4: สร้างเคอร์เนล RT
ตอนนี้เป็นเวลารวบรวม โปรดทราบว่าอาจใช้เวลานานขึ้นอยู่กับความสามารถของพีซีของคุณ
ทำ -jx O=../kernel-out/ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
เมื่อก่อน -jx หมายถึงจำนวนงาน หลังจากคอมไพล์สำเร็จแล้ว เราจำเป็นต้องแพ็คเคอร์เนลของเราแล้วส่งไปที่ Raspberry Pi การทำเช่นนี้เรารันคำสั่งต่อไปนี้
ส่งออก 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_installnelcp-../ out/arch/arm64/boot/Image../rt-kernel/boot/kernel8.imgcd $INSTALL_MOD_PATHtar czf../rt-kernel.tgz *cd..
ตอนนี้เคอร์เนลของเราควรอยู่ในไฟล์เก็บถาวร rt-kernel.tgz และพร้อมที่จะส่งและติดตั้ง
ขั้นตอนที่ 5: การติดตั้งเคอร์เนลใหม่
วิธีที่ง่ายที่สุดในการส่งเคอร์เนลของเราไปยัง raspbperry คือการใช้ scp
เราเพียงแค่รันคำสั่งต่อไปนี้
scp rt-kernel.tgz pi@:/tmp
ตอนนี้เราต้องลงชื่อเข้าใช้ pi ของเราผ่าน ssh และแกะเคอร์เนลของเรา
ssh pi@
เมื่อเข้าสู่ระบบเราจะคัดลอกไฟล์ของเราโดยใช้คำสั่งต่อไปนี้
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/
หลังจากนั้นสิ่งที่ต้องทำคือแก้ไขไฟล์ /boot/config.txt และเพิ่มบรรทัดต่อไปนี้
kernel=kernel8.img
หลังจากรีบูต pi ทุกอย่างควรจะทำงานได้ดี
หากต้องการตรวจสอบว่าเคอร์เนลใหม่ติดตั้งสำเร็จหรือไม่ คุณสามารถดำเนินการได้
uname -a
สั่งการ