域名解析后怎么做网站,给周杰伦做网站,南京制作网站多少钱,企业信息年报系统目录 前言#xff1a;
设备树插件的书写规范#xff1a;
设备树插件的编译#xff1a;
内核配置:
应用背景#xff1a;
举例#xff1a; 前言#xff1a; 设备树插件#xff08;Device Tree Blob Overlay#xff0c;简称 DTBO#xff09;是Linux内核和嵌入式系统…目录 前言
设备树插件的书写规范
设备树插件的编译
内核配置:
应用背景
举例 前言 设备树插件Device Tree Blob Overlay简称 DTBO是Linux内核和嵌入式系统中用于动态修改或扩展系统运行时的设备树配置的一种机制。它是对传统设备Device Tree Source简称 DTS的补充允许在不重新编译整个内核的情况下对硬件配置进行更改。本质也是个设备树文件。
设备树插件的书写规范
/dts-v1/; // dts 版本
/plugin/; //表示设备树插件/ {fragment0 { //固定的写法target-path xxx; //要覆盖替换的节点路径从根节点开始写__overlay__ { //固定写法/*在此添加要插入的节点*/};};fragment1 {target-path xxx; //要覆盖替换的节点路径__overlay__ {/*在此添加要插入的节点*/};};};设备树插件的编译
sdk/out/t113/kernel/build/scripts/dtc/dtc -I dts -O dtb -o xxx.dtb xxx.dts
sdk/.../dtc 使用sdk下的dtc
-I dts:指定输入文件格式为dts
-O dtb指定输出文件类型为dtb
-o xxx:指定输出文件名
xxx.dts:输入文件名称
内核配置:
Device Drivers - Device Tree and Open Firmware support - [*]Device Tree overlays应用背景 比如一个开发平台能适配许多的屏幕如果按以前的做法每次更换一个屏幕都得重新编译一次如果我们可以采用dtbo来实现的话就会很方便我们可以将每种屏幕都做一个对应的dtbo插件文件我们用到哪个屏幕就用对应的设备树插件去覆盖相应的节点。
举例 这里参考了同事提供的举例思路思路是新建一个设备树插件去覆盖掉现有的设备树节点。由于例证的平台用到了身边现有的全志T113平台看了一圈发现can比较容易验证,所以就采用can来验证。
1、查看设备树节点可以看到在根节点下有两个can这与平台上有两个can接口一致。 2、创建设备树插件用于后面覆盖这里我们将status设置为“disabled”如果后面能覆盖成功那么这两个can节点是肯定不能使用了。
/dts-v1/;
/plugin/;/ {fragment0 {target-path /can0x0;__overlay__ {/*在此添加要插入的节点*/#address-cells 1;#size-cells 0;compatible allwinner,sun8i-can;device_type can0;id 0;status disabled; //改为disabled};};fragment1 {target-path /can0x1;__overlay__ {/*在此添加要插入的节点*/#address-cells 1;#size-cells 0;compatible allwinner,sun8i-can;device_type can1;id 1;status disabled; //改为disabled};};};
3、编译设备树插件使用命令编译后就会生成设备树插件生成dtb文件。 4、编译得到dtb文件后我们需要想办法去覆盖掉原来的节点也就是让使用这个dtb文件这里借助同事提供的方法采用手动操作内存里的文件去实现。先将这个编译出来的文件放到boot-resource分区去以便我们操作。
操作之前先查看正常状态 5、先设置工作设备树地址 通过uboot启动信息可以获取到内核设备树地址0x44831e58就是内核设备树地址0x44851e58是uboot设备树地址我们需要内核设备树地址。 fdt addr 0x44831e58 //设置工作设备树
fdt命令参考文章uboot 命令行使用 fdt 命令查看设备树信息并得到完整的设备树的 dts 和 dtb 文件_uboot fdt命令-CSDN博客
6、加载设备树插件到内存中每个平台不一样根据实际操作
fatload mmc 2:1 0x43000000 kernel-overlay-can.dtb //从emmc的
boot-resource分区的 0x43000000地址加载kernel-overlay-can.dtb到内存
fdt resize 8192 //调整设备树的大小
7、设备树覆盖将内存0x43000000处的设备树插件覆盖到工作设备树
fdt apply 0x43000000
8、进入系统
9、验证可以看到已经找不到节点了