[toc]
今天我们来给泰山派的板子更新内核
编译准备 && 编译环境
本次采用了一台8G内存+200GB存储的ubuntu22.04 LTS 虚拟机,架构为amd64。
内核版本:5.10.0-1012.12 (适配了rockchip内核)
内核的github地址:https://github.com/Joshua-Riek/linux-rockchip/tree/jammy
接着我们需要一份rk3566的SDK,没有SDK我们则无法编译板子的内核。本次选择是泰山派定制的SDK,地址为:链接:https://pan.baidu.com/s/1HtnpytCBBqBOqZi8mfV4VQ?pwd=qcxx
提取码:qcxx
在第五章的文件夹内,linux子文件内,有一个tspi_linux_sdk_repo_20240131.tar.gz文件,下载这个。并且下载Tspi_Linux_config.cfg这个配置文件。
注:内核是不变的,若使用的是其他的板子,则之后的编译环节需要用厂商提供的编译脚本编译,本文的编译命令仅供参考。
更改配置文件 && 配置内核
注意:默认在普通用户下进行各种操作
在安装完Ubuntu22.04之后,我们吧tspi_linux_sdk_repo_20240131.tar.gz移动到 Linux下的文件
1 | mkdir tspi #创建一个tspi文件夹 |
解压完毕之后文件目录如下:
1 | cd .repo/ |
接着,我们安装一些必要的工具,执行
1 | sudo apt-get update |
安装完毕之后开始把sdk同步出来,注意同步之前必须退到.repo文件的上一级。
1 | cd tspi/ #进入tspi文件,理论上现在打ls -all只有一个.repo文件 |
同步完毕的文件目录如下:
1 | app build.sh device envsetup.sh kernel mkfirmware.sh rkbin tools yocto |
现在我们就有了所有关于sdk的文件了。
由于我们需要更换内核,因此首先要做的事情是将sdk中的内核替换成我们比较新的版本。执行mv文件,将kernel文件更改名字为kernel_old
1 | cd tspi/ #进入tspi文件 |
然后,用git把内核拉下来
1 | git clone https://github.com/Joshua-Riek/linux-rockchip.git |
下载完之后有一个linux-rockchip的文件夹,这是新的内核文件,我们需要把他移植到tspi文件中并替换原有的Kernel文件,只需要用mv命令即可
1 | mv linux-rockchip ../tspi/kernel |
最后,我们将kernel_old中的设备树文件移植到新的kernel文件下即可完成新内核的移植。
1 | cp ~/tspi/kernel_old/arch/arm64/boot/dts/rockchip/tspi* ~/tspi/kernel/arch/arm64/boot/dts/rockchip |
然后编辑设备树目录下的Makefile文件
1 |
|
添加一行代码,编译的时候加上泰山派的用户的设备树文件
1 | dtb-$(CONFIG_ARCH_ROCKCHIP) += tspi-rk3566-user-v10-linux.dtb |
接着保存退出即可。
最后,我们需要安装gcc交叉编译工具。
地址:https://developer.arm.com/downloads/-/gnu-a/10-2-2020-11
下载gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xz文件
把下载完的文件解压到/home/用户(填自己的)文件下。如何配置环境变量
1 | vim ~/.bashrc |
加入下面三行
1 | export ARCH=arm64 |
上述命令里面的用户改成自己的即可。然后保存退出,打
1 | source ~/.bashrc |
使环境变量生效,然后输入
1 | aarch64-none-linux-gnu-gcc -v |
若能打印版本信息则说明安装成功。
1 | Using built-in specs. |
最后退出到tspi文件下,执行1
./build.sh kernel
若编译出现exit code 2的问题,请尝试挂梯子并开启Tun模式。
编译内核即可。该内核没有配置任何的设备,所以直接编译完更新是不能上网和干其他事情的。
编译成功后,可以在/tspi/rockdev文件夹下找到一个boot.img的文件,这个就是我们编译完的内核。
烧录内核
官方烧录方法:https://wiki.lckfb.com/zh-hans/tspi-rk3566/sdk-compilation/linux-compilation.html#%E4%B8%8B%E8%BD%BD
在官方提供的瑞芯微开发工具中点击 下载镜像->鼠标右键导入配置->选择Tspi_Linux_config.cfg配置文件即可。kernel位置在下载镜像->第五个选项的boot中,我们需要将编译完成的内核文件boot.img从ubuntu22.04虚拟机中上传到windows。接着接入板子,按住rec,按一下rst等待烧录工具发现Loader设备即可松开按键。需要的时间有点久。接着上传boot.img镜像到第五个选项中,把全部的钩取消,只留下boot那栏的,点击强制按地址写,然后点击执行等待内核烧录完成即可。
最后启动开发板,选择串口调试,在命令行输入
1 | uname -r |
即可查看内核版本是否正确。若烧录无误,将打印
1 | 6.1.75-ge21cf49ee9a4 |
即为更新成功。
下一章我们将配置wifi等各种外设,并打包烧录ubuntu22.04-arm64版本到开发板上