前言

建议:去原文链接观看,排版、观感便于学习。

链接:

参考:用到野火提供的工具脚本。

9. Linux设备树插件

设备树插件(Dynamic DeviceTree)与 Linux4.4 后引入。

设备树插件可以理解为设备树的补丁。可以动态加载到系统中,无需重新编译整个设备树。

9.1 格式

设备树插件是有相对固定的格式的,相当于多穿一件衣服而已。

格式如下

/dts-v1/;
/plugin/; / {
fragment@0 {
target-path = "/";
__overlay__ {
/*在此添加要插入的节点*/
};
};
};

分析

  • /dts-v1/:指定 dts 版本。
  • /plugin/:表示设备树插件中可以引用设备树中的节点。因为这些节点在设备树插件中是未定义的,所以,要加上本行code。
  • target-path = "/";:指定设备树插件加载的位置。(默认在根节点下
  • 我们要插入的设备及节点或者要引用(追加)的设备树节点放在 __overlay__ {…}; 内。
  • 其它都是固定的。

9.2 设备树插件的编译和加载

9.2.1 单独使用dtc工具编译

设备树和设备树插件都是使用 DTC 编译工具编译。

设备树编译后得到的是 .dtb 文件;

而设备树插件编译后得到的是 .dtbo 文件。

使用野火提供的一键式编译工具:

  • 地址:git clone https://gitee.com/Embedfire/ebf-linux-dtoverlays.git
  • 要编译的设备树插件源文件放在 ebf-linux-dtoverlays/overlays/ebf 目录下, 然后回到编译工具的根目录 ebf-linux-dtoverlays/ 执行 make 即可。
  • 生成的.dtbo位于 ~/ebf-linux-dtoverlays/output 目录下。
  • 注意:如果你在执行 make 后出现报错,可以尝试先卸载 device-tree-compiler(卸载命令为:sudo apt-get autoremove device-tree-compiler), 重新安装,然后在 ebf-linux-dtoverlays/basic/fixdep 文件的权限, 修改权限命令为:chmod 777 scripts/basic/fixdep

9.2.2 内核dtc工具编译设备树插件

编译设备树插件和编译设备树类似,这里使用内核中的dtc工具编译编译设备树插件。

编译命令:内核构建目录/scripts/dtc/dtc -I dts -O dtb -o xxx.dtbo xxx.dts

  • 意为编译 dts 为 dtbo

9.2.3 加载设备树插件

先拷贝设备树插件文件到开发板上。

9.2.3.1 使用 echo 命令加载

先在 /sys/kernel/config/device-tree/overlays/下创建一个新目录,名字自定义。

然后将 dtbo 固件 echopath 属性文件中或将 dtbo 的内容 catdtbo 属性文件中。

echo xxx.dtbo >/sys/kernel/config/device-tree/overlays/xxx/path
# 或
cat xxx.dtbo >/sys/kernel/config/device-tree/overlays/xxx/dtbo

删除设备插件:rmdir /sys/kernel/config/device-tree/overlays/xxx

9.2.3.2 uboot 加载

不同的板子可能不支持。

修改环境变量文件即可,进入/boot目录下 修改 vim uEnv.txt

【linux】驱动-9-设备树插件的更多相关文章

  1. Linux驱动之设备树的基础知识

    前期知识   1. 如何编写一个简单的Linux驱动(一)--驱动的基本框架   2. 如何编写一个简单的Linux驱动(二)--设备操作集file_operations   3. 如何编写一个简单的 ...

  2. 基于tiny4412的Linux内核移植 -- 设备树的展开

    作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...

  3. 基于tiny4412的Linux内核移植 -- 设备树的展开【转】

    转自:https://www.cnblogs.com/pengdonglin137/p/5248114.html#_lab2_3_1 阅读目录(Content) 作者信息 平台简介 摘要 正文 一.根 ...

  4. Android驱动之设备树简介

    目录 一.    设备树简介    2 1.    问题一:为什么需要设备树?    2 ①名词解释:    2 ②DT详细介绍:    2 ③DTS是DT的源文件,描述Device Tree中的设备 ...

  5. linux驱动之设备模型

    linux 设备驱动模型 inux2.6提供了新的设备模型:总线.驱动.设备.基本关系简要的概括如下: 驱动核心可以注册多种类型的总线. 每种总线下面可以挂载许多设备.(通过kset devices) ...

  6. 【Linux 驱动】设备驱动程序再理解

    学习设备驱动编程也有一段时间了,也写过了几个驱动程序,因此有对设备驱动程序有了一些新的理解和认识,总结一下.学习设备驱动编程也有一段时间了,也写过了几个驱动程序.因此有对设备驱动程序有了一些新的理解和 ...

  7. Linux 驱动框架---设备文件devfs

    设备文件系统 Linux引入了虚拟文件系统,从而使设备的访问可以像访问普通文件系统一样.因此在内核中描述打开文件的数据inode中的rdev成员用来记录设备文件对应到的设备号.设备文件也由一个对应的f ...

  8. linux驱动---字符设备的注册register_chrdev说起

    首先我们在注册函数里面调用了register_chrdev(MEM_MAJOR,"mem",&memory_fops),向内核注册了一个字符设备. 第一个参数是主设备号,0 ...

  9. linux驱动之设备号与创建设备节点

    设备号: 1.自己主动分配 major = register_chrdev(0,"first_drv",&first_sdv_fops);//注冊 注冊设备时给设备号写0, ...

随机推荐

  1. LGTM & code review

    LGTM & code review LGTM is an acronym meaning looks good to me, frequently used when reviewing d ...

  2. website 性能检测 & 前端性能优化

    website 性能检测 & 前端性能优化 https://cdn.xgqfrms.xyz/ https://mobile.xgqfrms.xyz/ PageSpeed Insights ht ...

  3. Chrome V8 系统架构

    Chrome V8 系统架构 Chromium 多进程多线程架构 design-documents https://www.chromium.org/developers/design-documen ...

  4. POST 非幂等

    POST 非幂等 HTTP幂等方法,是指无论调用这个url多少次,都不会有不同的结果的HTTP方法; 也就是不管你调用1次还是调用100次,1000次,结果都是一样的(前提是服务器端的数据没有被人为手 ...

  5. go-admin在线开发平台学习-2[程序结构分析]

    紧接着上一篇,本文我们对go-admin下载后的源码进行分析. 首先对项目所使用的第三方库进行分析,了解作者使用的库是否是通用的官方库可以有助于我们更快地阅读程序.接着对项目的main()方法进行分析 ...

  6. react小白笔记

    diff算法主要是同级比较,生成数组,进行数组替换 reducer可以接收state,但是绝不能修改state 纯函数指的是:给固定收入,就一定有固定的输出,而且不会有任何副作用[不能例如:new d ...

  7. 开源OA办公系统的“应用市场”,能够为协同办公开拓什么样的“前路”?

    在我们的日常生活中,应用市场这个词,总是与智能手机划上等号,不管使用的是iPhone还是安卓,总会接触到手机上的APP应用市场,我们可以在应用市场中,选择自己所需要的APP应用软件,下载使用后,可以让 ...

  8. Java基础语法:类型转换

    由于Java是强类型语言,所以有时候在进行运算时,需要用到类型转换. 整型.常量.字符类型数据可以混合运算. 运算中,不同类型的数据先转化为同一类型,然后再进行运算. 类型转换等级有低级到高级的划分, ...

  9. MongoDB 在评论中台的实践

    本文主要讲述 vivo 评论中台在数据库设计上的技术探索和实践. 一.业务背景 随着公司业务发展和用户规模的增多,很多项目都在打造自己的评论功能,而评论的业务形态基本类似.当时各项目都是各自设计实现, ...

  10. Linux操作php.ini文件

    有时你使用的是别人搭建好的环境,不知道php.ini在哪里,或者好久没有修改配置了,已经忘记了路径在哪,所以在操作文件之前,得先要找到.ini路径. 找php.ini 方式一 $ php -i | g ...