
Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-23 15:14

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:
Tạo nhãn cầu Đơn thuốc cho nhãn cầu của bạn: Dự án BME60B: 9 bước

Eyeballing Your Eyeball's Prescription: a BME60B Project: By: Hannah Silos, Sang Hee Kim, Thomas Vazquez, Patrick VisteMagnification là một trong những tính năng chính hiện nay của kính đọc sách, được phân loại theo đơn thuốc của chúng. Theo Đại học Công nghệ Michigan, một diopter là một
Micro: bit MU Vision Sensor cho người mới bắt đầu - Giá trị nhãn và Nhận dạng thẻ số: 6 bước

Micro: bit MU Vision Sensor dành cho người mới bắt đầu - Giá trị nhãn và Nhận dạng thẻ số: Đây là hướng dẫn thứ hai của tôi về cảm biến tầm nhìn MU. Trong dự án này, chúng tôi sẽ lập trình micro: bit để nhận ra các thẻ số khác nhau bằng cách sử dụng các giá trị nhãn
Cách tạo nhân vật 2d với bộ điều khiển nhân vật trong Unreal Engine 4 bằng Visual Script cho PC: 11 bước

Cách tạo nhân vật 2d với bộ điều khiển ký tự trong Unreal Engine 4 Sử dụng Visual Script cho PC: Cách tạo nhân vật 2d với bộ điều khiển nhân vật trong Unreal engine 4 sử dụng tập lệnh trực quan cho PC Xin chào, tôi là Jordan Steltz. Tôi đã phát triển trò chơi điện tử từ năm 15 tuổi. Hướng dẫn này sẽ dạy bạn cách tạo một nhân vật cơ bản với
Mod 3.3V cho cảm biến siêu âm (chuẩn bị HC-SR04 cho 3.3V Logic trên ESP32 / ESP8266, Photon hạt, v.v.): 4 bước

3.3V Mod cho cảm biến siêu âm (chuẩn bị HC-SR04 cho 3.3V Logic trên ESP32 / ESP8266, Particle Photon, v.v.): TL; DR: Trên cảm biến, cắt dấu vết vào chân Echo, sau đó kết nối lại bằng cách sử dụng bộ chia điện áp (Echo trace - > 2.7kΩ - > Echo pin - > 4.7kΩ - > GND). Chỉnh sửa: Đã có một số tranh luận về việc liệu ESP8266 có thực sự chịu được 5V trên GPIO trong
Tiêm chủng hay không? Dự án Quan sát khả năng miễn dịch của đàn gia súc thông qua mô phỏng dịch bệnh: 15 bước

Tiêm chủng hay không? Dự án Quan sát khả năng miễn dịch của đàn thông qua mô phỏng dịch bệnh: Tổng quan về dự án: Dự án của chúng tôi khám phá khả năng miễn dịch của đàn và hy vọng khuyến khích mọi người tiêm phòng để giảm tỷ lệ nhiễm bệnh trong cộng đồng của chúng tôi. Chương trình của chúng tôi mô phỏng cách một căn bệnh lây nhiễm sang một quần thể với các tỷ lệ tiêm chủng khác nhau