制作适用于Orangepi5的带有preempt-rt内核的Armbian

本文详细描述了如何通过git克隆最新Armbian源代码,编译并安装非实时内核,然后将其升级为支持实时操作系统的rt内核的过程,包括解决GitHub访问问题、添加devicetreeblob(dtb)文件等步骤。
摘要由CSDN通过智能技术生成

1. 首先git clone 最新的Armbian

apt-get -y install git
git clone --depth=1 --branch=main https://github.com/armbian/build

笔者git下来的版本号是 ca7f437fb5fb52f6c3cdb30eacdf6c3d3f34e18f  其余版本未经测试不保证能成功。

2.先编译一遍Armbian

cd build
./compile.sh

选择Do not change the kernel configuration  ----->   orangepi5--------> legancy  -----------> bookworm  --------> Image with desktop environment ---->xfce desktop

编译这一遍目的1是下载好编译环境,2是在生成的镜像中获得dtb文件(当然从源码中直接取dtb文件也是可以的)

由于墙的问题在国内访问github异常不稳定,解决办法请问度娘。经过漫长的等待编译完成,这时在 build/output/images 目录下应该生成了类似Armbian_23.08.0-trunk_Orangepi5_bookworm_legacy_5.10.160_xfce_desktop.img这样的镜像文件。

此时镜像文件可以直接烧录到SD卡插到orangepi5 就可以启动了。但是这时内核时非实时的。

3.修改Armbian将linux内核指定为rt内核

下载修改的文件

链接:https://pan.baidu.com/s/1cep0tEf3koViRvkPEXL5kw
提取码:hiel

一共修改了两个文件  build/config/sources/families/rockchip-rk3588.conf

和build/config/kernel/linux-rockchip-rk3588-legacy.config

第一个文件主要修改了所使用内核的github地址和分支,第二个文件是修改的内核配置文件。

按照对应的目录替换掉Armbian中的文件。然后重新编译(这次快多了,因为环境和大部分软件包在第一次编译时已经下好了)

cd build
./compile.sh

Show a kernel configuration  ----->   orangepi5--------> legancy  -----------> bookworm  --------> Image with desktop environment ---->xfce desktop

弹出内核配置后找到Preempt选项勾选real-time选项,保存后开始编译。

general setup ------->  Preemption Model ------> Fully Preemptiable Kernel (Real-Time)

编译完成后可以看到新生成的

Armbian_23.08.0-trunk_Orangepi5_bookworm_legacy_5.10.110_xfce_desktop.img

将新生成的img文件烧录的SD卡。

如果此时将SD可插入OPI5 ,内核启动时会出错,提示  can‘t find rk3588s-orangepi-5.dtb  这是缺少设备树文件导致的

4.添加dtb文件

从下面链接下载   rk3588s-orangepi-5.dtb  文件,当然也可以从步骤2生成的img文件中提取dtb

链接:https://pan.baidu.com/s/1-tmPycM-X5fDTB-qKNx5PQ
提取码:sgzt

将烧录好镜像的SD卡接到电脑上,会看到有boot分区,将rk3588s-orangepi-5.dtb 文件复制到该分区的 /dtb/rockchip 目录下。

重新将SD卡插到OPI5开发板上启动,初始化设置后顺利进入系统,打开终端输入uname -a 有Preempt-RT字样,说明已经更换为实时内核了。

preempt-rt是一个在Linux操作系统内核中实施实时(real-time)功能的一个软件补丁(patch),用于提高Linux操作系统的实时性能。在普通的Linux内核中,时间分片是通过时间片轮转法来实现的,这意味着任务可能会在中断的时候被打断,从而导致实时任务无法按时完成。而preempt-rt补丁则引入了抢占式调度(preemptive scheduling),可以在高优先级实时任务到来时,立即中断低优先级任务,从而确保实时任务按时完成。 preempt-rt补丁还引入了一些改进,比如提高了中断处理的实时性,减少了中断的延迟。此外,它还改进了内核对多核处理器的支持,能够更好地利用多核处理器的性能,提高系统的响应能力。这使得Linux操作系统可以用于处理实时应用,比如工业控制、自动驾驶和机器人等领域。 preempt-rt补丁不仅仅是一个补丁,它还需要与其他实时工具和库一起使用,比如实时定时器和实时优先级调度策略等,来共同实现实时功能。有了preempt-rt补丁,Linux操作系统就可以满足实时性要求更高的应用需求,使得开发者可以更自由地选择Linux平台来开发实时应用。 但是需要注意的是,preempt-rt补丁并不适用于所有场景。由于引入了更严格的实时约束,它可能导致系统的稳定性下降,对内存和处理器资源的需求也相应增加。因此,在使用preempt-rt补丁时,需要对系统进行全面评估,并根据实际需求进行权衡。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值