香橙派5B的RKNPU驱动更新
查看RKNPU的驱动版本
查询当前RKNPU驱动的版本
cat /proc/rknpu/version
可以看到当前的RKNPU驱动版本为:0.8.2,我们将RKNPU的驱动版本到0.9.6
abd准备
请确保香橙派上abd已经启动
Ubuntu PC安装abd指令:(香橙派官方要求的Ubuntu PC版本为22.04)
sudo apt-get update
sudo apt-get install -y adb
使用Type-C 数据线连接Ubuntu PC和香橙派,并使用下面的命令查看下有没有识别到 adb 设备
adb devices
在Ubuntu PC 上执行以下命令,即可登录开发板的 linux 系统
adb shell
配置香橙派的编译环境-orangepi-build
orangepi-build 是基于 armbianbuild 编译系统修改而来的,使用 orangepi-build 可以编译出多个版本的 linux 镜像。
首先下载 orangepi-build 的代码,命令如下所示:
sudo apt-get update
git clone https://github.com/orangepi-xunlong/orangepi-build.git -b next
注意,Orange Pi 5B 开发板是需要下载 orangepi-build 的 next 分支源码的,上面的 git clone 命令需要指定 orangepi-build 源码的分支
orangepi-build 下载完后会包含下面的文件和文件夹
- build.sh: 编译启动脚本
- external: 包含编译镜像需要用的配置文件、特定的脚本以及部分程序的源
码等 - LICENSE: GPL 2 许可证文件
- README.md: orangepi-build 说明文件
- scripts: 编译 linux 镜像的通用脚本
注意:从github下载的orangepi-build的代码,下载完后你可能会发现orangepi-build中并没有包含u-boot和linux内核的源码,也没有编译u-boot和linux内核需要用到交叉编译工具链,这是正常的,因为这些东西都存放在其它单独的github 仓库或者某些服务器上了(下文会详述其地址)。orangepi-build 在脚本和配置文件中会指定 u-boot、linux 内核和交叉编译工具链的地址,运行 orangepi-build时,当其发现本地没有这些东西,会自动去相应的地方下载的。
编译内核
需要科学上网!!!
参考自视频:https://www.bilibili.com/video/BV1VH4y1N75y/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=7fc00062d9cd78f73503c26f05fad664
其提供的香橙派5B内核源码地址:
https://github.com/kaylorchen/linux-orangepi/tree/kaylor
orangepi-bulid 编译系统编译 linux 内核源码时首先会将 linux 内核源码和 github服务器的 linux 内核源码进行同步,所以如果想修改 linux 内核的源码,首先需要关闭源码的更新功能(需要完整编译过一次 linux 内核源码后才能关闭这个功能,否则会提示找不到 linux 内核的源码,如果是从百度云盘下载的源码压缩包,则没有这个问题,因为 linux 的源码都已缓存好了),否则所作的修改都会被还原,方法如下:
设置 userpatches/config-default.conf 中的 IGNORE_UPDATES 变量为“yes
设置配置文件
sudo vim userpatches/config-default.conf
# 里面有一个选项忽略更新,如果不设置为yes,则会强制更新内核源码,由于我们是手动更新,故要设置yes
IGNORE_UPDATES="yes"
在PC ubuntu上运行 build.sh 脚本(得加 sudo 权限)
cd orangepi-build
sudo ./build.sh
选择 Kernel package,然后回车
然后会提示是否需要显示内核配置界面,如果不需要修改内核配置,则选择第一个即可,如果需要修改内核配置,则选择第二个
接着选择开发板的型号
选择一个分支,选择第二个老的稳定版本的
编译内核源码时完成的提示信息说明如下
- 编译生成的内核相关的 deb 包的路径
[ o.k. ] Target directory [ * ] - 编译生成的内核镜像 deb 包的包名
[ o.k. ] File name [ * ] - 编译使用的时间
[ o.k. ] Runtime [ * ] - 最后会显示重复编译上一次选择的内核的编译命令,使用下面的命令无需通过图形界面选择,可以直接开始编译内核源码
[ o.k. ] Repeat Build Options [* ]
查看编译生成的内核相关的 deb 包
cd output/debs
linux-dtb-legacy-rockchip-rk3588_1.0.0_arm64.deb # 包含内核使用的 dtb 文件
linux-headers-legacy-rockchip-rk3588_1.0.0_arm64.deb # 包含内核头文件
linux-image-legacy-rockchip-rk3588_1.0.0_arm64.deb # 包含内核镜像和内核模块
将编译好的 linux 内核的 deb 包上传到开发板的 linux 系统
adb push linux-image-legacy-rockchip-rk3588_1.0.8_arm64.deb /home/orangepi
然后登录到开发板,卸载已安装的 linux 内核的 deb
adb shell
sudo apt purge -y linux-image-legacy-rockchip-rk3588
再安装刚才上传的新的 linux 内核的 deb 包
dpkg -i linux-image-legacy-rockchip-rk3588_1.0.8_arm64.deb
然后重启开发板,再查看内核相关的修改是否已生效
cat /proc/rknpu/version
orangepi-build 完整目录结构说明
orangepi-build 第一次运行的时候会去下载交叉编译工具链、u-boot 和 linux 内核源码,成功编译完一次 linux 镜像后在 orangepi-build 中可以看到的文件和文件夹有
-
build.sh: 编译启动脚本
-
external: 包含编译镜像需要用的配置文件、特定功能的脚本以及部分程序的源码,编译镜像过程中缓存的 rootfs 压缩包也存放在 external 中
-
kernel: 存放 linux 内核的源码,里面名为 orange-pi-5.10-rk3588 的文件夹存放的就是 RK3588/RK3588S 系列开发板 legacy 分支的内核源码,内核源码的文件夹的名字请不要手动修改,如果修改了,编译系统运行时会重新下载内核源码
-
LICENSE: GPL 2 许可证文件
-
README.md: orangepi-build 说明文件
-
output: 存放编译生成的 u-boot、linux 等 deb 包、编译日志以及编译生成的镜像等文件
-
scripts: 编译 linux 镜像的通用脚本
-
toolchains: 存放交叉编译工具链
在 x64 的PC电脑中使用 orangepi-build 编译镜像需要下载交叉编译工具链。
orangepi-build第一次运行的时候会自动下载交叉编译工具链放在toolchains文件夹中,每次运行 orangepi-build 的 build.sh 脚本后,都会检查 toolchains 中的交叉编译工具链是否都存在,如果不存在则会重新开始下载,如果存在则直接使用,不会重复下载。
交叉编译工具链在中国境内的镜像网址为清华大学的开源软件镜像站
https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/
toolchains 下载完后会包含多个版本的交叉编译工具链,开发板只会使用其中的两个
编译 linux 内核源码使用的交叉编译工具链为
gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu
编译 u-boot 源码使用的交叉编译工具链为
gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu
-
userpatches: 存放编译脚本需要用到的配置文件