在嵌入式Linux下,设备树(device tree)用来描述硬件平台的各种资源,Linux内核在启动过程中,会解析设备树,获取各种硬件资源来初始化硬件。

设备树的overlay功能是指可以在系统运行期间动态修改设备树。

一般情况下,如上图所示,设备树经过DTC编译器编译为二进制的hello.dtb文件,加载到内存,随Linux内核一起启动后,一般就无法更改了。

如果我们想修改设备树,需要修改hello.dts文件文件,重新编译成二进制文件:hello.dtb,然后重新启动内核,重新解析。有了设备树的overlay功能,省去了设备树的重新编译和内核重启,我们可以直接编写一个设备树插件:overlay.dts,编译成overlay.dtbo后,直接给设备树“打补丁”,在运行期间就可以动态添加节点、修改节点...

设备树的overlay功能,在很多场合都会用得到,会让我们的开发更加方便:

  • 外界插拔设备,无法在设备树中预先描述:耳机
  • 树莓派 + FPGA开发板
  • 基于I2C的温度传感器
  • 管脚的重新配置:PIN multiplexing
  • 修改bootcmd、分区
  • ...

设备树的overlay功能,目前还没有加入到内核mainline(linux-5.10.x),但目前有些开发板和配套的BSP已经支持了,支持在系统运行期间动态修改设备树文件。如果你手头的开发板或内核平台还没有支持device tree overlay,可以学习本期课程,学习内核中设备树overlay的实现原理,如何给内核打补丁,使内核支持设备树的overlay功能。有了本期课程的学习基础,明白了设备树overlay的实现原理和运行机制,你就可以尝试在自己的开发板平台上实现这个功能了。

本期课程的主要内容如下:

  • 在开发板上如何实现设备树的overlay功能
  • Configfs文件系统的配置与挂载
  • Configfs编程接口
  • 如何编写设备树 overlay插件
  • 设备树 overlay的编译和运行
  • 设备树overlay运行机制分析

本期课程适合哪些人学习:

  • 嵌入式驱动工程师
  • 嵌入式BSP工程师
  • 嵌入式软件工程师
  • 想从事嵌入式开发的同学

本期课程一共14节,课程时长:02小时43分钟08秒。课程的详细目录如下:

  • 01 什么是设备树的overlay?
  • 02 设备树overlay实现原理分析
  • 03 ConfigFS 的编译与挂载
  • 04 ConfigFS 的核心数据结构
  • 05 通过ConfigFS加载二进制文件
  • 06 创建ConfigFS子目录
  • 07 创建ConfigFS多级子目录
  • 08 ConfigFS mkdir 过程分析
  • 09 实现设备树的overlay功能
  • 10 向设备树动态添加节点(上)
  • 11 向设备树动态添加节点(下)
  • 12 设备树overlay加载过程分析
  • 13 设备树overlay解析过程分析
  • 14 同时加载多个设备树overlay

全球首家讲解设备树overlay的视频教程。https://download.csdn.net/course/detail/37322https://download.csdn.net/course/detail/37322

Linux内核编程12期:设备树overlay与ConfigFS文件系统相关推荐

  1. linux内核编程13期:内存管理

    内管管理子系统是Linux内核中比较复杂的一个模块,也是很多Linux开发者的"梦魇",无论是Linux新手.运维.应用开发者,还是有多年经验的驱动工程师,在学习内存管理时,面对错 ...

  2. Android 驱动(12)---Linux DTS(Device Tree Source)设备树详解

    Linux DTS(Device Tree Source)设备树详解 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) Linux DTS(Device Tr ...

  3. Linux 内核编程指南

    Linux 内核编程指南   PeterJay Salzman MichaelBurian OriPomerantz Copyright© 2001 Peter Jay Salzman 2007−05 ...

  4. 初探linux内核编程,参数传递以及模块间函数调用

    一.前言 我们一起从3个小例子来体验一下linux内核编程.如下: 1. 内核编程之hello world 2. 模块参数传递 3. 模块间函数调用 二.准备工作 首先,在你的linux系统上面安装l ...

  5. linux内核_Linux驱动编程的本质就是Linux内核编程

    由于Linux驱动编程的本质属于Linux内核编程,因此我们非常有必要熟悉Linux内核以及Linux内核的特点. 这篇文章将会帮助读者打下Linux驱动编程的基础知识. 本篇文章分为如下三个小节进行 ...

  6. Linux内核编程接口函数

    Linux内核编程接口函数 转载请注明出处: http://blog.csdn.net/drivelinux/article/details/8656280 字符设备相关函数 1.alloc_chrd ...

  7. 高通平台msm8953 Linux DTS(Device Tree Source)设备树详解之二(DTS设备树匹配过程)

    本系列导航: 高通平台8953  Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) 高通平台8953 Linux DTS(Device Tree Source ...

  8. 高通平台8953 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇)

    本系列导航: 高通平台8953  Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) 高通平台8953 Linux DTS(Device Tree Source ...

  9. linux内核编程(一)

    这些天在学习linux内核编程,就在这里小小的show以下. 首先编写如下的linux代码.并命名为hello.c 这里你应该注意亮点: 第一.linux内核编程,不同于普通的用户态下的编程:有一个入 ...

最新文章

  1. 关于分页的解决方案收集
  2. 深入探究Java中equals()和==的区别是什么
  3. MaskRCNN路标:TensorFlow版本用于抠图
  4. 陶哲轩实分析 命题 7.3.4 (Cauchy 准则) 证明
  5. android开发歌词滑动效果_一些Flutter开发中的“坑”
  6. LINUX下载编译opusfile/opus-tools
  7. Monkey Test - 命令
  8. java开发autocad_.NET AutoCAD二次开发之路(四、文字篇)
  9. 33岁学做软件测试还来得及? 4个建议送给你!
  10. 【学习笔记】计算机网络-DNS层次查询
  11. robots协议文件的写法及语法属性解释
  12. 高德地图大头针功能_有关于高德地图的大头针下落动画。还有就是高德地图的设置...
  13. 怎么下载优酷视频呢,你可以这样下
  14. FPGA时序约束分享04_output delay 约束
  15. ocsp和ldap 区别_《脑梗塞ocsp分型和治疗》.ppt
  16. VMware虚拟机安装macos Big Sur 11.1.0 (20C69)镜像CDR/ISO下载
  17. [编程题]神奇的口袋 - Java
  18. delphi xe 解析复杂json
  19. AD之PCB绿色报错的消除
  20. CRC校验值是如何计算出来的?

热门文章

  1. JS设置样式的两种方式
  2. iphone11系列的尺寸_iPhone11系列三款手机别乱选!性能差异大不同,对比完差距真大...
  3. 人工智能实践——Restauraut+ 食物识别分析与营养规划系统
  4. 项目管理中冲突的六种解决方法
  5. English语法_时间副词
  6. android 建立工程文件,Android 项目开发必备-建立属于你的build.gradle文件
  7. 在外远程查看家里内网监控
  8. Revit幕墙:这些命令在幕墙嵌板中的妙用及快速幕墙
  9. OringinPro2021学习版从申请到使用——全程保姆级教程
  10. 影刀RPA的视频教程