该内容需要权限查看
解锁内容
课程简介:
设备树(device tree)机制是Linux内核从linux-3.x版本开始引进的一种机制,目的是解决内核源码的arch/arm目录下代码混乱的问题:随着ARM生态的快速发展,在内核源码的arch/arm目录下,存放着几十种arm芯片和几百个开发板相关的源文件,很多开发板和处理器的中断、寄存器等相关硬件资源都在这个目录下以.c或.h的文件格式定义。而对于内核来说,与这些硬件耦合,会导致内核代码混乱不堪,每个开发板上运行的内核镜像都必须单独编译配置,无法通用。什么时候Linux内核能像Windows镜像那样,无论你的电脑什么配置,一个Windows安装包,都可以直接下载安装运行呢?
设备树机制,实现了Linux内核和硬件平台的解耦:每个硬件平台的硬件资源使用一个设备树文件(xxx.dts)来描述,而不是在arch/arm下以.c 或 .h 文件来定义。Linux内核是一个通用的内核,在启动过程中,在通过解析设备树中的硬件资源来初始化某个具体的平台。
引入设备树后,很多和内核驱动开发的工作也发生了变化:以往驱动工程师关注的头文件宏定义、寄存器定义,现在这些基本上不用关注,关注的重点则转向了如何根据硬件平台去配置和修改设备树文件。很多驱动的编程接口也发生了变化,开始慢慢使用device tree提供的编程接口去开发驱动。
本期课程主要面向嵌入式开发人员,分享Linux下驱动开发所需要的设备树知识和技能,学完本期课程,预期收获如下:
彻底看懂Linux设备树文件
能熟练修改和配置设备树文件
掌握基于设备树的platform driver驱动编写方法
掌握gpio和pinctrl的配置
学习SoC芯片架构、总线机制
对设备树运行机制有系统理解
熟练掌握设备树的编程接口(驱动开发中常用)
课程目录:
1为什么要引入device tree?[20:58]
2如何编译和运行device tree?[16:09]
3使用设备树接口编写platform驱动[17:12]
4SoC芯片架构:总线与片选[19:13]
5SoC芯片架构:桥接(bridge)[07:51]
6SoC芯片架构: extend bus[15:04]
7device tree基本语法: node[13:34]
8device tree基本语法: property[13:50]
9设备树实例分析: CPU node[17:40]
10设备树实例分析: memory[05:27]
11设备树实例分析: 外设[10:25]
12设备树实例分析:中断控制 器[16:09]
13设备树实例分析:中断映射[16:34]
14设备树实例分析:时钟[11:20]
15extend bus(上): I2C client[08:51]
16extend bus(下): memory mapped设备[21:39]
17设备树实例分析: GPIO[16:15]
18设备树实例分析: pinmux(上)[15:49]
19设备树实例分析: pinmux(下)[28:10]
20dts和dtsi文件的分离[13:09]
21设备树节点 property的overwrite[24:21]
22dtb二进制文件格式[07:59]
23platform device自动展开分 析(上)[17:54]
24platform device自动展开分 析(下)[16:45]
25I2C设备的自动展开[18:32]
26哪些node会自动展开为 platform_devi[18:30]
27设备树节点解析示例: CPU node[14:12]
28设备树节点解析示例: memory node[12:11]
29设备树节点解析示例: chosen node(上)[09:17]
30设备树节点解析示例: chosen node(下)[13:47]
31设备树节点解析示例: aliases node[07:50]
32设备树节点解析: 获取IRQ number[13:51]
33设备树节点解析: 获取register地址[08:17]
34设备树节点解析: GPIO[19:34]
35Device Bingdings & Guideli开始学习

评论(0)