Мазмуну:

Raspberry Pi 4B үчүн 64bit RT Kernel Compilation.: 5 Steps
Raspberry Pi 4B үчүн 64bit RT Kernel Compilation.: 5 Steps

Video: Raspberry Pi 4B үчүн 64bit RT Kernel Compilation.: 5 Steps

Video: Raspberry Pi 4B үчүн 64bit RT Kernel Compilation.: 5 Steps
Video: Операционные системы написанные на Pascal, Delphi, Lazarus IDE, FreePascal, Turbo Pascal, Modula-2 2024, Июль
Anonim
Raspberry Pi 4B үчүн 64bit RT Kernel Compilation
Raspberry Pi 4B үчүн 64bit RT Kernel Compilation

Бул окуу куралы Raspberry Piде реалдуу убакытта 64 биттик ядро куруу жана орнотуу процессин камтыйт. RT Kernel ROS2 жана башка Real Time IOT чечимдеринин толук иштеши үчүн абдан маанилүү.

Ядро x64 негизделген Raspbianге орнотулган, аны бул жерден алса болот

Эскертүү. Бул окуу куралы Linux операциялык тутумунун негизги билимин талап кылат.

Ошондой эле бул платформанын чектөөлөрүнөн улам бардык http шилтемелеринде h жок. Аларды оңдоо үчүн шилтеменин алдына "h" белгисин кошуңуз

Жабдуулар

Linux менен иштеген x64 негизделген PC

Raspberry 64 менен Raspberry Pi 4B мурунтан эле орнотулган

Интернетке туташуу.

1 -кадам: Керектүү шаймандарды алуу

Биринчиден, биз керектүү куралдарды колдонушубуз керек.

Аларды Linux терминалында төмөнкү буйруктарды аткаруу аркылуу алууга болот

sudo apt-get install-essential libgmp-dev libmpfr-dev libmpc-dev libisl-dev libncurses5-dev bc git-core bison flexsudo apt-get libncurses-dev libssl-dev орнотуу

2 -кадам: Кросс -компиляция үчүн Native Build куралдарын чогултуу

Кийинки кадам - биздин ядронун кайчылаш компиляциясы үчүн инструменттерди даярдоо жана чогултуу.

Биз орното турган 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- target = aarch64-linux-gnu --disable-nls

Конфигурация аяктагандан кийин, биз төмөнкү буйруктарды колдонуу менен программаны түзүшүбүз керек

жасоо -jx

sudo make install

кайда -jx канча жумушту иштетүүнү каалаарыңды билдирет i parrarell. Бармактын эрежеси - бул тутумуңуздагы жиптердин санынан көп эмес. (мисалы, жаса -j16)

жана акыры биз жолду экспорттошубуз керек

экспорттоо PATH = $ PATH:/opt/aarch64/bin/

Андан кийин, биз 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 --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

Биз өзүбүздүн компиляторду жасап, орнотконго чейин эле

all -gcc -jx кыл

sudo 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 --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 модель: single gcc version 8.4.0 (GCC))

3 -кадам: ядрону жамоо жана ядрону конфигурациялоо

Эми биздин ядро менен RT патчын алууга убакыт келди.

Бул окуу куралы rpi ядро v 5.4 жана RT патч 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/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

Андан кийин меню конфигурациясына киришибиз керек

жасоо O =../kernel-out/ARCH = arm64 CROSS_COMPILE =/opt/aarch64/bin/aarch64-linux-gnu- menuconfig

Качан биз учурдагы конфигурацияга муктажбыз, андан кийин өтүңүз

General -> Preemtion Model жана Real Time опциясын тандаңыз.

караганда биз жаңы конфигурацияны сактап, менюдан чыгабыз.

4 -кадам: RT ядросун куруу

Эми аны түзүү убактысы. Көңүл буруңуз, бул сиздин компьютериңиздин мүмкүнчүлүктөрүнө жараша көп убакытты алышы мүмкүн.

жасоо -jx O =../ kernel-out/ ARCH = arm64 CROSS_COMPILE = aarch64-linux-gnu-

Мурунку -jx жумуш орундарынын санын билдирет. Ийгиликтүү компиляциядан кийин биз ядробузду топтоп, аны Raspberry Piге жөнөтүшүбүз керек. Бул үчүн биз төмөнкү буйруктарды аткарабыз.

экспорттоо INSTALL_MOD_PATH = ~/rpi-ядро/rt-kernelexport INSTALL_DTBS_PATH = ~/rpi-ядро/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..

Эми биздин ядро rt-kernel.tgz архивинде болушу керек жана аны жөнөтүүгө жана орнотууга даяр.

5 -кадам: Жаңы ядро орнотуу

Биздин ядроду raspbperryге жөнөтүүнүн эң оңой жолу - scp колдонуу.

Биз жөн гана төмөнкү буйрукту аткарабыз.

scp rt-kernel.tgz pi@:/tmp

Эми биз 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/config.txt файлын түзөтүү жана кийинки сапты кошуу.

ядро = kernel8.img

Пи кайра жүктөлгөндөн кийин баары жакшы иштеши керек.

Жаңы ядро ийгиликтүү орнотулганын текшерүү үчүн, аны аткарсаңыз болот

uname -a

буйрук

Сунушталууда: