Mục lục:

Biên dịch hạt nhân 64bit RT cho Raspberry Pi 4B.: 5 bước
Biên dịch hạt nhân 64bit RT cho Raspberry Pi 4B.: 5 bước

Video: Biên dịch hạt nhân 64bit RT cho Raspberry Pi 4B.: 5 bước

Video: Biên dịch hạt nhân 64bit RT cho Raspberry Pi 4B.: 5 bước
Video: Hệ thống nhúng - P2.1. Cấu hình và biên dịch hệ điều hành nhúng cho Raspberry Pi 4 (Local) 2024, Tháng bảy
Anonim
Biên dịch hạt nhân 64bit RT cho Raspberry Pi 4B
Biên dịch hạt nhân 64bit RT cho Raspberry Pi 4B

Hướng dẫn này sẽ trình bày quá trình xây dựng và cài đặt Nhân thời gian thực 64 bit trên Raspberry Pi. RT Kernel rất quan trọng đối với đầy đủ chức năng của ROS2 và các giải pháp IOT Thời gian thực khác.

Kernel đã được cài đặt trên Raspbian dựa trên x64, có thể lấy tại đây

Ghi chú. Hướng dẫn này mặc dù đơn giản nhưng yêu cầu kiến thức cơ bản về hệ điều hành Linux.

Ngoài ra do hạn chế của nền tảng này tất cả các liên kết http đều thiếu h. Để khắc phục chúng, hãy thêm "h" vào phía trước của liên kết

Quân nhu

PC dựa trên x64 chạy Linux

Raspberry Pi 4B với Raspbian 64 đã được cài đặt

Kết nối với Internet.

Bước 1: Nhận các công cụ Neccesery

Đầu tiên, chúng ta cần chọn các công cụ dành cho nhà phát triển phù phép.

Chúng có thể được lấy bằng cách thực hiện các lệnh sau trong thiết bị đầu cuối Linux

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

Bước 2: Tổng hợp các công cụ xây dựng bản địa để biên dịch chéo

Bước tiếp theo là chuẩn bị trước và biên dịch các công cụ để biên dịch chéo hạt nhân của chúng ta.

Công cụ Firs mà chúng ta sẽ cài đặt là Binutils. Hướng dẫn này đã được thử nghiệm với binutils phiên bản 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 - target = aarch64-linux-gnu --disable-nls

Sau khi cấu hình xong, chúng ta cần biên dịch chương trình bằng các lệnh sau

make -jx

sudo thực hiện cài đặt

trong đó -jx có nghĩa là bạn muốn chạy bao nhiêu công việc. Quy tắc chung là đặt nó không cao hơn số lượng chủ đề mà hệ thống của bạn có. (ví dụ make -j16)

và cuối cùng chúng ta cần xuất đường dẫn

xuất PATH = $ PATH: / opt / aarch64 / bin /

Hơn chúng tôi tiến hành xây dựng và cài đặt 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 --without-headers / --disable-nls --disable-shared --disable-thread --disable-libssp --disable-decimal-float / --disable-libquadmath --disable-libvtv --disable-libgomp --disable-libatomic / --enable-Languages = c --disable-multilib

Giống như trước khi chúng tôi tạo và cài đặt trình biên dịch của mình

làm cho tất cả-gcc -jx

sudo make install-gcc

Nếu mọi thứ suôn sẻ theo lệnh

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

nên resoult trong phản ứng tương tự như thế này.

ux-gnu-gcc -v Sử dụng thông số kỹ thuật cài sẵn. COLLECT_GCC = / opt / aarch64 / bin / aarch64-linux-gnu-gcc COLLECT_LTO_WRAPPER = / opt / aarch64 / libexec / gcc / aarch64-linux-gnu / 8.4.0 / lto-wrapper Mục tiêu: aarch64-linux-gnu Được định cấu hình bằng:./configure --prefix = / opt / aarch64 --target = aarch64-linux-gnu --with-newlib --without-headers --disable-nls --disable-shared --disable-thread --disable-libssp --disable-decimal-float --disable-libquadmath --disable-libvtv --disable-libgomp --disable-libatomic --enable-Languages = c --disable-multilib Mô hình chủ đề: single gcc phiên bản 8.4.0 (GCC)

Bước 3: Vá Kernel và Định cấu hình Kernel

Bây giờ đã đến lúc lấy kernel và bản vá RT.

Hướng dẫn này sẽ sử dụng kernel rpi v 5.4 và RT bản vá RT32. Sự kết hợp này đã làm việc tốt cho tôi. Tuy nhiên, mọi thứ sẽ hoạt động tốt với các phiên bản khác nhau.

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

sau đó giải nén bản vá.

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

Và khởi tạo cấu hình cho Rpi 4B

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

Ngoài ra, chúng ta cần nhập menuconfig

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

Khi nó kết thúc, chúng tôi cần cấu hình hiện có, sau đó chuyển đến

General -> Preemtion Model và chọn tùy chọn Real Time.

hơn là chúng tôi lưu cấu hình mới và thoát khỏi menu.

Bước 4: Xây dựng nhân RT

Bây giờ là thời gian biên dịch của nó. Lưu ý rằng có thể mất nhiều thời gian tùy thuộc vào khả năng PC của bạn.

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

Như trước -jx có nghĩa là số lượng công việc. Sau khi biên dịch thành công, chúng ta cần đóng gói Kernel của mình và gửi nó đến Raspberry Pi. Để làm điều này, chúng tôi thực hiện các lệnh sau.

export 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_installcp../kernel- out / Arch / arm64 / boot / Image../rt-kernel/boot/kernel8.imgcd $ INSTALL_MOD_PATHtar czf../rt-kernel.tgz * cd..

Bây giờ hạt nhân của chúng ta sẽ nằm trong kho lưu trữ rt-kernel.tgz và nó đã sẵn sàng để gửi và cài đặt.

Bước 5: Cài đặt nhân mới

Cách dễ nhất để gửi hạt nhân của chúng ta tới raspbperry là sử dụng scp.

Chúng tôi chỉ thực hiện lệnh follwing.

scp rt-kernel.tgz pi @: / tmp

Bây giờ chúng ta cần đăng nhập vào pi của chúng ta thông qua ssh và giải nén Kernel của chúng ta.

ssh pi @

Khi đăng nhập, chúng tôi sao chép các tệp của mình bằng các lệnh sau.

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 /

Sau đó, những gì còn lại phải làm là chỉnh sửa tệp /boot/config.txt và thêm dòng sau.

kernel = kernel8.img

Sau khi khởi động lại pi, mọi thứ sẽ hoạt động tốt.

Để kiểm tra xem hạt nhân mới đã được cài đặt thành công hay chưa, bạn có thể thực thi

uname -a

chỉ huy

Đề xuất: