جدول المحتويات:

تجميع 64 بت RT Kernel لـ Raspberry Pi 4B: 5 خطوات
تجميع 64 بت RT Kernel لـ Raspberry Pi 4B: 5 خطوات

فيديو: تجميع 64 بت RT Kernel لـ Raspberry Pi 4B: 5 خطوات

فيديو: تجميع 64 بت RT Kernel لـ Raspberry Pi 4B: 5 خطوات
فيديو: Raspberry Pi 4 64 битное ядро 2024, يوليو
Anonim
64bit RT Kernel Compilation for Raspberry Pi 4B
64bit RT Kernel Compilation for Raspberry Pi 4B

سيغطي هذا البرنامج التعليمي عملية بناء وتثبيت 64 بت Real Time Kernel على Raspberry Pi. يعتبر RT Kernel ضروريًا للوظائف الكاملة لـ ROS2 وحلول IOT الأخرى في الوقت الفعلي.

تم تثبيت Kernel على Raspbian المستند إلى x64 والذي يمكن الحصول عليه هنا

ملحوظة. هذا البرنامج التعليمي على الرغم من أنه مباشر يتطلب معرفة أساسية بنظام التشغيل Linux.

أيضًا بسبب قيود هذا النظام الأساسي ، تفتقر جميع روابط http إلى h. لإصلاحها بشكل بسيط ، أضف "h" في مقدمة الرابط

اللوازم

x64 كمبيوتر يعمل بنظام التشغيل Linux

Raspberry Pi 4B مع Raspbian 64 مثبت بالفعل

الاتصال بالإنترنت.

الخطوة الأولى: الحصول على أدوات التشريح

نحتاج أولاً إلى اختيار أدوات مطوري التشريح.

يمكن الحصول عليها عن طريق تنفيذ الأوامر التالية في محطة Linux

sudo apt-get install build-basic libgmp-dev libmpfr-dev libmpc-dev libisl-dev libncurses5-dev bc git-core bison flexsudo apt-get install 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 /./ config --prefix = / opt / aarch64 - الهدف = aarch64-linux-gnu --disable-nls

بعد انتهاء التهيئة ، نحتاج إلى ترجمة البرنامج باستخدام الأوامر التالية

جعل -jx

sudo جعل التثبيت

حيث -jx تعني عدد الوظائف التي تريد تشغيلها أنا parrarell. القاعدة العامة هي عدم وضعها أعلى من كمية الخيوط التي يمتلكها نظامك. (على سبيل المثال make -j16)

وأخيرًا نحتاج إلى تصدير المسار

تصدير PATH = $ PATH: / opt / aarch64 / bin /

من المضي قدما في بناء وتركيب دول مجلس التعاون الخليجي

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 - بدون رؤوس / - تعطيل-nls - تعطيل-مشترك - تعطيل-مؤشرات الترابط --disable-libssp --disable-decimal-float / --disable-libquadmath --disable-libvtv --disable-libgomp --disable-libatomic / --enable-languages = c --disable-multilib

من نفس الشيء كما كان من قبل نحن نصنع ونثبت المترجم الخاص بنا

جعل جميع دول مجلس التعاون الخليجي -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 - بدون رؤوس - تعطيل - nls - تعطيل - مشترك - تعطيل - مؤشرات ترابط - تعطيل - libssp --disable-decimal-float --disable-libquadmath --disable-libvtv --disable-libgomp --disable-libatomic --enable-languages = c --disable-multilib model: single gcc version 8.4.0 (GCC)

الخطوة 3: تصحيح النواة وتكوين النواة

حان الوقت الآن للحصول على تصحيح kernel و RT.

سيستخدم هذا البرنامج التعليمي rpi kernel v 5.4 و RT patch RT32. هذا المزيج يعمل بشكل جيد بالنسبة لي. لكن كل شيء يجب أن يعمل بشكل جيد مع الإصدارات المختلفة.

mkdir ~ / rpi-kernel

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 kernel-out cd linux

ثم فك الرقعة.

gzip -cd../patch-5.4.54-rt32.patch.gz | التصحيح -p1 - الإفراط

وتهيئة التكوين لـ 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

عندما نحتاج إلى التكوين الحالي ، فانتقل إلى

عام -> نموذج Preemtion وحدد خيار الوقت الحقيقي.

من حفظ التكوين الجديد والخروج من القائمة.

الخطوة 4: بناء RT Kernel

الآن حان وقت التجميع. لاحظ أن الأمر قد يستغرق وقتًا طويلاً اعتمادًا على إمكانيات جهاز الكمبيوتر الخاص بك.

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

كما كان من قبل ، يعني -jx عدد الوظائف. بعد التجميع الناجح ، نحتاج إلى حزم Kernel الخاصة بنا وإرسالها إلى 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_pile.. out / arch / arm64 / boot / Image../rt-kernel/boot/kernel8.imgcd $ INSTALL_MOD_PATHtar czf../rt-kernel.tgz * cd..

الآن يجب أن تكون النواة الخاصة بنا داخل أرشيف rt-kernel.tgz وأن تكون جاهزة للإرسال والتثبيت.

الخطوة 5: تثبيت New Kernel

أسهل طريقة لإرسال نواة لدينا إلى raspbperry هي باستخدام scp.

نحن ببساطة ننفذ الأمر التالي.

scp rt-kernel.tgz pi @: / tmp

الآن نحتاج إلى تسجيل الدخول إلى pi الخاص بنا عبر ssh وفك حزمة Kernel الخاصة بنا.

ssh بي @

عند تسجيل الدخول ، نقوم بنسخ ملفاتنا باستخدام الأوامر التالية.

cd / tmptar xzf rt-kernel.tgz cd boot sudo cp -rd * / boot / cd../lib sudo cp -dr * / lib / cd../overlays sudo cp -dr * / boot / overays cd../ برودكوم sudo cp -dr bcm * / boot /

بعد ذلك ما يتبقى هو تحرير ملف /boot/config.txt وإضافة السطر التالي.

النواة = kernel8.img

بعد إعادة التشغيل ، يجب أن يعمل كل شيء بشكل جيد.

للتحقق مما إذا كان قد تم تثبيت نواة جديدة بنجاح ، يمكنك تنفيذها

uname -a

أمر

موصى به: