鲁班猫4驱动实验环境搭建

鲁班猫4驱动实验环境搭建

1.1 搭建编译环境与获取源码

安装相关库和工具搭建编译环境

sudo apt update
sudo apt install gcc make git bc libssl-dev liblz4-tool device-tree-
compiler bison flex u-boot-tools gcc-aarch64-linux-gnu

查看板卡内核版本

uname -a

获取内核源码:

方式一:野火github仓库

rk356x板卡:

git clone -b stable-4.19-rk356x https://github.com/LubanCat/kernel.git

rk3588板卡:

git clone -b develop-5.10 https://github.com/LubanCat/kernel.git

方式二:野火提供的网盘资料

# 安装 7z 压缩工具
sudo apt install p7zip-full
# 创建 LubanCat_SDK 目录
mkdir /linux/LubanCat_SDK
# 将下载的 SDK 源码移动到 LubanCat_SDK 目录下
mv LubanCat_RK3588_Linux_SDK_xxx.7z ~/linux/LubanCat_SDK
# 进入 LubanCat_SDK 目录
cd ~/linux/LubanCat_SDK
# 解压 SDK 压缩包
7z x LubanCat_RK356x_Linux_SDK_xxx.7z
# 检出.repo 目录下的 git 仓库
.repo/repo/repo sync -l
# 进入内核目录
cd kernel
# 更新内核
git pull
# 也可以将 SDK 全部更新
# 将所有的源码仓库同步到最新版本
cd ../ && .repo/repo/repo sync -c

最后一步同步出错,可跳过

1.2编译内核

rk3588

安装交叉编译工具

# 获取编译工具链
git clone https://github.com/LubanCat/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.git
# 导出环境变量,需要根据实际指定编译工具链的绝对路径
export PATH=/root/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin:$PATH
# 查看编译工具链,如果 COLLECT_LTO_WRAPPER 变量为指定的路径,即配置成功
aarch64-linux-gnu-gcc -v

编译内核

# 清除之前生成的所有文件和配置
make mrproper
# 加载 lubancat_linux_rk3588_defconfig 配置文件,rk3588 系列均是该配置文件
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- lubancat_linux_rk3588_defconfig
# 编译内核,指定交叉编译工具,使用 8 线程进行编译,线程可根据电脑性能自行确定
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j8

1.3内核驱动

野火驱动教程源码获取,与kernel放置在同一目录下

# 从 github 获取
git clone https://github.com/LubanCat/lubancat_rk_code_storage

Makefile内容

KERNEL_DIR=/home/ma/linux/LubanCat_SDK/kernel/

ARCH=arm64
CROSS_COMPILE=aarch64-linux-gnu-
export  ARCH  CROSS_COMPILE

obj-m := hellomodule.o
all:
	$(MAKE) -C $(KERNEL_DIR) M=$(CURDIR) modules

.PHONE:clean

clean:
	$(MAKE) -C $(KERNEL_DIR) M=$(CURDIR) clean	


编译

make

加载内核驱动

复制驱动文件到/home/cat/ma/

scp hellomodule.ko cat@192.168.31.129:/home/cat/ma/

安装卸载内核驱动

cd /home/cat/ma/
# 加载内核模块
sudo insmod hellomodule.ko
# 查看当前加载的内核模块
lsmod
# 卸载内核模块
sudo rmmod hellomodule.ko

1.4 加载编译设备树

主要文件介绍

dtc:编译设备树源文件的工具,位置在/scripts/dtc/dtc

.dts:设备树源文件,位置在/arch/arm64/boot/dts/rockchip

.dtsi:设备树源文件的包含文件

.dtb:二进制的设备树文件

编译设备树

方式一:使用dtc编译

# 编译 dts 为 dtb
kernel/scripts/dtc/dtc -I dts -O dtb -o xxx.dtb xxx.dts
# 也可以下载 dtc 工具进行编译
sudo apt install device-tree-compiler
dtc -I dts -O dtb -o xxx.dtb xxx.dts

方式二:使用内核脚本编译:

# 加载配置文件
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- lubancat_linux_rk3588_defconfig
# 使用 dtbs 参数单独编译设备树
make ARCH=arm64 -j4 CROSS_COMPILE=aarch64-linux-gnu- dtbs

加载设备树

替换 板卡/boot/dtb/ 目录下的设备树文件

使用ls命令确定板卡使用的设备树文件

ls -l /boot/

rk-kernel.dtb 链接到了 dtb/rk3588-lubancat-4.dtb,替换rk3588-lubancat-4.dtb文件

查看设备树文件是否加载成功

ls /proc/device-tree

1.5 设备树插件

文件格式:dtbo

编译设备树插件:

方式一:使用dtc工具

kernel/scripts/dtc/dtc -I dts -O dtb -o xxx.dtbo xxx.dts

方式二:内核脚本编译

将自己的设备树插件添加到内核源码 arch/arm64/
boot/dts/rockchip/overlays 目 录 下, 并 修 改 arch/arm64/boot/dts/rockchip/
overlays/Makefile 文件,添加编译选项

加载设备树插件

使用scp将dtbo文件拷贝到开发板/boot/dtb/overlays/目录下,

设备树插件的配置文件也进行了软连接,方便不同板卡的配置文件进行加载,执行以下命令确认系统实际加载的配置文件

ls -l /boot/uEnv/

当前系统实际加载的配置文件为/boot/uEnv/uEnvLubanCat2.txt,将设备树插件写入 uEnvLubanCat2.txt,格式为“dtoverlay=< 设备树插件路径 >“

执行 reboot 命令重启系统

重启后可以在“/proc/device-tree”或者“/sys/firmware/devicetree/base/”目录下找到设备节点同名的文件夹,证明设备树插件已经加载成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值