使用树莓派CM4实时

问题描述 投票:0回答:1

我想在我的树莓派CM4上实时应用。 我当前的内核版本是 6.1.19,这个版本可用于应用 PREEMPT_RT,还是我应该构建一个新内核来应用 PREEMPT_RT?执行上述选项的步骤是什么?

谢谢你。

real-time raspberry-pi4 preempt-rt
1个回答
0
投票

首先,在CM4上安装RaspiOS。然后在您的 PC 上执行此操作(此方法需要您在 PC 上构建、交叉编译 RT 内核,然后部署到 CM4):

安装必要的软件包

$ sudo dnf install gcc-aarch64-linux-gnu gcc-c++-aarch64-linux-gnu

创建构建目录

(rt-kernel/ 是要部署到 CM4 的新版本的目标目录)

$ mkdir -p  ~/repos/rpi-cm4
$ cd ~/repos/rpi-cm4
$ mkdir -p rt-kernel/boot/firmware

##克隆存储库(检查最新分支);这将创建一个新的子目录“linux”

$ git clone --depth 1 --branch rpi-6.6.y https://github.com/raspberrypi/linux

下载补丁(版本必须与回购分支数字匹配)

$ wget -c https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/6.6/patch-6.6.23-rt28.patch.xz

--- 如果 wget 命令抛出建立 SSL 连接的错误,只需使用浏览器下载补丁并手动将其复制到 ~/repos/rpi-cm4/ 即可。

应用RT补丁(解压补丁,cd到rpi repo,应用补丁)

$ xz -d patch-6.6.23-rt28.patch.xz
$ cd linux
$ patch -p1  < ~/repos/rpi-cm4/patch-6.6.23-rt28.patch.xz

设置构建环境参数

$ export ARCH=arm64 
$ export CROSS_COMPILE=aarch64-linux-gnu-
$ export INSTALL_MOD_PATH=~/repos/rpi-cm4/rt-kernel
$ export INSTALL_DTBS_PATH=~/repos/rpi-cm4/rt-kernel

为 CM4 准备构建配置文件

$ KERNEL=kernel8
$ make bcm2711_defconfig

运行配置对话框

$ make menuconfig

In menuconfig:
A) Uncheck “Virtualization” in the main menu
B) Select “General setup —>”
C) Toggle/Enable Configure standard kernel features (expert users)
C) Select “Fully Preemptible Kernel (Real-Time”
D) Go up a level to “General setup —>”
E) Select “Timers subsystem –>”
F) Uncheck “Old Idle dynticks config”.
G) Select “Timer tick handling (Idle dynticks system (tickles idle)) —>”
H) Check “Periodic timer ticks (constant rate, no dynticks)”
I) Save and Exit

## Compile the new kernel (-jX; change X to num parallel jobs desired)
$ make -j4 Image.gz modules dtbs

## Install modules and dtbs to INSTALL_MOD_PATH and DTBS_MOD_PATH
$ make modules_install
$ make dtbs_install

## Copy the new kernel to the target directory under boot/firmware
## as kernel8.img. Create sym-link to it under boot/.
$ cp arch/arm64/boot/Image ../rt-kernel/boot/firmware/kernel8.img
$ cd ../rt-kernel/boot
$ ln -s firmware/kernel8.img

## Make compressed archive of the target directory and transfer to CM4
$ cd ..
$ tar czf ../rt-kernel.tgz *
$ cd ..
$ rsync rt-kernel.tgz <user>@<ip>:

### The following steps performed on the CM4 as normal non-root user ###
### sudo privileges required.

## Assuming rt-kernel.tgz resides top-level of user's home directory ##
## go to top-level of home-dir
$ cd

# Create tmp directory and move rt-kernel.tgz into tmp/
$ mdkir tmp
$ mv rt-kernel.tgz tmp/
$ cd tmp
$ tar xzf rt-kernel.tgz

# Using sudo, copy new kernel files to appropriate destinations
$ sudo cp -rd boot/* /boot/
$ sudo cp -rd broadcom/bcm* /boot/
$ sudo cp -rd lib/* /lib/
$ sudo cp -rd overlays/* /boot/overlays/

重新启动 CM4。

© www.soinside.com 2019 - 2024. All rights reserved.