全志设备树添加设备树之踩坑全流程

香橙派的设备树添加设备树之踩坑全流程

最近在学习使用设备树,手头用的是orangepi的板子,但是也因为这样走了不少弯路

配置环境

设备树编译在源码目录下不能直接使用 make dtbs , 否则会出现一堆选项

首相要配置一下架构

export ARCH=arm64

然后配置交叉编译工具

export CROSS_COMPILE=你的交叉编译工具路径

之后使用make dtbs就没有问题

哪里取找设备树文件源码

先编译一遍sdk后放入开发板,进入以下路径

/boot/dtb 或者 /boot/dtb-xxx

image-20240503230441075

记住该目录,进入虚拟机,进入内核源码目录,然后按该路径寻找

内核源码路径/arch/arm64/boot/dts

该文件夹有一堆芯片的设备树文件夹,找到和你开发板上在 /boot/dtb/ 下名字一样的文件夹进去

image-20240503230747399

image-20240503230836943

屎坑开始

按照网上的说法,当你修改了设备树文件后,在源码路径下使用make dtbs,只需要将将生成的dtb和开发板 /boot/dtb/xxx/xxx.dtb 替换,然后reboot就可以了。可惜的笔者并没有成功,期间做过如下测试

  • 1.修改设备树文件,make dtbs 后,与开发板上的替换,没成功
  • 2.直接编译内核,将设备树编译到内核的deb中,然后替换,没成功
  • 3.全打包,及rootfs + kernel + u-boot,没成功
  • 4.进入u-boot终端,将/boot/dtb/sunxi/下的dtb文件写入dram,然后再把镜像写入dram,bootm(理论上说,这个最应该成功),没成功

最后笔者使用覆盖设备树(Devices-tree overlays),把设备树当插件一样,随意替换就行

覆盖设备树

无论在开发板上的dtb文件夹还是在源码下的dtb文件夹,这之中都有overlay文件夹,我们只需要将编译好的dtbo文件放入其中就行

image-20240503231812822

image-20240503231831055

进入其中,修改Makefile,加入要生成的dtbo文件(我这有两个)

image-20240503231931013

在该目录下加入你的设备树文件(dts),这里不赘述设备树插件如何写,相关链接如下

[10. 设备树插件(Device Tree Overlays) — 野火]嵌入式Linux驱动开发实战指南——基于LubanCat-RK系列板卡 文档 (embedfire.com)

然后回到源码目录下,进行make dtsb

代码没问题的话,此时overlay下面应该会生成dtbo文件

将该文件传到开发板的overlay文件夹下,reboot

本来笔者以为到这应该没用问题了,开始/proc/device-tree下依然没用对应的节点生成

Env.txt

第一次注意是在野火的教程下

image-20240503232524907

以为我之前也在香橙派的 /boot/ 下见到xxxEnv.txt,会开发板上一看,果真如此

image-20240503232717796

之后去查取,果然如此,类似配置文件一样,相关链接如下

Device Tree overlays - Armbian Documentation

image-20240503233342902

上面是一些规则,其实我也是看boot.cmd文件之后才推断出这是一个配置文件,其中这个overlay_prefix插件设备树的前缀,只要满足这个前缀的dtbo文件才会被选中

根据野火的说法,还需要加入overlays选项,只有在overlays中的文件才会被加入内核

image-20240503233837353

可以选择加入多个插件设备树文件,文件和文件之前用空格隔开,去掉前缀

才会被加入内核

[外链图片转存中…(img-CuxZ029i-1714750861456)]

可以选择加入多个插件设备树文件,文件和文件之前用空格隔开,去掉前缀

然后reboot,就可以在/proc/device-tree/下看到自己的节点了

  • 11
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值