Linux内核编程11期:设备树(device tree)
设备树(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芯片架构、总线机制
- 对设备树运行机制有系统理解
- 熟练掌握设备树的编程接口(驱动开发中常用)
本期课程一共35个课时,课程总时长:08小时39分15秒,和本次课程相关的PPT文档、代码、流程图(PDF版本)已上传网盘,已购课学员请及时下载观看学习。
课程的详细目录如下:
- 为什么要引入 device tree?
- 如何编译和运行 device tree?
- 使用设备树接口编写platform驱动
- SoC芯片架构:总线和片选
- SoC芯片架构:桥接(bridge)
- SoC芯片架构:extend bus
- device tree 基本语法:node
- device tree 基本语法:property
- 设备树实例分析:CPU node
- 设备树实例分析:memory node
- 设备树实例分析:外设(PrimeCell)
- 设备树实例分析:中断控制器
- 设备树实例分析:中断映射
- 设备树实例分析:时钟(clock)
- extend bus(上):I2C 设备
- extend bus(下):内存映射设备
- 设备树实例分析:GPIO
- 设备树实例分析:pinmux(上)
- 设备树实例分析:pinmux(下)
- dts 和 dtsi 文件的分离
- property 的 overwrite
- dtb 二进制文件格式
- platform device 自动展开分析(上)
- platform device 自动展开分析(下)
- I2C 设备的自动展开
- 哪些 node 会自动展开为平台设备?
- 设备树节点解析:CPU node
- 设备树节点解析:memory node
- 设备树节点解析:chosen node(上)
- 设备树节点解析:chosen node(下)
- 设备树节点解析:aliases node
- 设备树节点解析:获取 IRQ number
- 设备树节点解析:获取 Register 地址
- 设备树节点解析:GPIO
- Device Binding and Guidelines
本期课程已发布到CSDN学院:https://download.csdn.net/course/detail/37149https://download.csdn.net/course/detail/37149
Linux内核编程11期:设备树(device tree)相关推荐
- Linux设备模型、平台设备驱动、设备树(device tree)、GPIO子系统以及pinctrl子系统介绍
文章目录 一.Linux设备模型介绍 (1)设备驱动模型总体介绍 (2)设备驱动模型文件表现 (3)设备驱动模型工作原理 [1]总线 [2]设备 [3]驱动 [4]注册流程 二.平台设备驱动介绍 (1 ...
- Linux内核编程12期:设备树overlay与ConfigFS文件系统
在嵌入式Linux下,设备树(device tree)用来描述硬件平台的各种资源,Linux内核在启动过程中,会解析设备树,获取各种硬件资源来初始化硬件. 设备树的overlay功能是指可以在系统运行 ...
- linux内核编程13期:内存管理
内管管理子系统是Linux内核中比较复杂的一个模块,也是很多Linux开发者的"梦魇",无论是Linux新手.运维.应用开发者,还是有多年经验的驱动工程师,在学习内存管理时,面对错 ...
- Linux 设备树device tree 使用手册
摘要:设备树使用手册Thispagewalksthroughhowtowriteadevicetreeforanewmachine.Itisintendedtoprovideanoverviewofd ...
- 设备树Device Tree详解
原文:https://www.cnblogs.com/aaronLinux/p/5496559.html 目录 1. 设备树(Device Tree)基本概念及作用 2. 设备树的组成和使用 2.1 ...
- 嵌入式编程笔记之六--设备树初体验
设备树的起源 设备树(Device Tree)是一种描述硬件资源的数据结构,它由 uboot 传递给 Linux 内核,被内核解析,内核根据设备树中的硬件描述信息加载利用相应驱动资源.在引入设备树之前 ...
- Linux 内核编程指南
Linux 内核编程指南 PeterJay Salzman MichaelBurian OriPomerantz Copyright© 2001 Peter Jay Salzman 2007−05 ...
- Linux内核编程接口函数
Linux内核编程接口函数 转载请注明出处: http://blog.csdn.net/drivelinux/article/details/8656280 字符设备相关函数 1.alloc_chrd ...
- linux内核静态添加sdio设备,Linux下sdio设备扫描过程
前言 本文基于Linux version 3.10.52版本代码分析sdio设备的扫描过程,同时选择sdio wifi设备作为分析对象,在分析过程中,附带上sdio的协议内容,帮助初学人员学习sdio ...
- 初探linux内核编程,参数传递以及模块间函数调用
一.前言 我们一起从3个小例子来体验一下linux内核编程.如下: 1. 内核编程之hello world 2. 模块参数传递 3. 模块间函数调用 二.准备工作 首先,在你的linux系统上面安装l ...
最新文章
- python判断操作系统类型
- 备战618,京东如何保障系统稳定性?
- 建立新冠病毒群体免疫屏障——数学建模
- kabina 使用说明_Kibana安装及使用说明
- 徐明星解读区块链与物联网的重要联系
- ajax获取checkbox循环出来的值_Django:前后端异步加载数据(循环大法)
- tensorflow实现残差网络(mnist数据集)
- LINUX编译OPENJDK:unsupported cpu xxx
- STM32 IIC实验中关于AT24Cxx的读写
- 徐家骏:我在华为工作十年的感悟 (转)
- 输入今天日期输出明天日期
- GCC编译过程及使用
- abp core Oracle,ABP适配Oracle全过程
- 南京高中计算机老师,30个全省第一!南京老师又出名了!
- HTML5实现动态时钟
- 薛定谔 | 小分子叠合
- 关于GR/IR—业务流程篇
- 更多有效反链推广 增加反向链接十个方法
- 英特尔前高管的IC职业生涯分享(文字版)写给想进入IC设计的同学们!
- 保姆级教程,小白也能2周搞定3个月的Web开发任务!
热门文章
- Qt实现职工信息管理系统
- 十大网站压力测试软件-- WEB压力测试工具介绍
- java 解析二进制文件保存为txt文件
- 微信8.0.0中的[烟花]\[炸弹]原来还可以这样玩(JAVA脚本)程序员的快乐,很简单,快来看!!!
- 判断是否是微信浏览器还是企业微信浏览器
- PostgreSQL 存储过程(Procedures)和函数(Functions)的区别
- 如何写简历,Web前端简历
- 【Keras】LSTM和Bi-LSTM神经网络
- mdt 计算机名_MDT配置数据库
- 在计算机桌面中选择了隐藏如何显示,怎么把隐藏电脑桌面游戏找到