当前位置:网站首页>设备树基本原理与操作方法
设备树基本原理与操作方法
2022-08-03 18:57:00 【ST小智】
活动地址:CSDN21天学习挑战赛
学习计划
**
1,学习目标
一周掌握设备树
2,学习内容
例如:
Linux设备树控制方法
掌握循环语句
3,学习时间
提示:可以添加计划学习的时间
例如: 周一至周五晚上 7 点—晚上9点
周六上午 9 点-上午 11 点
周日下午 3 点-下午 6 点
4,学习产出
提示:统计学习计划的总量
例如:
技术笔记 2 遍
CSDN技术博客 3 篇
学习的vlog 视频 1 个
**
学习日记
**
第一:为什么要使用设备树
在老的Linux内核的arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的描述不同板级硬件信息的代码,而这些板级信息对于内核来说不过是一些垃圾代码,因为不同的板级他们的硬件信息都不相同,这些都是硬件特有的信息,对内核而言没有任何的意义,但是往往这部分代码特别的多,造成内核的冗余。设备树的引入就是为了解决这个问题。
设备树是一种描述硬件的数据结构,在linux2.6版本上才开始使引入,采用了设备树之后,许多硬件的细节可以直接通过它传递给Linux,而不再需要在内核中进行大量的冗余编码,它通过bootloader将硬件资源传给内核,使得内核和硬件资源描述相对独立。
设备树可以描述的信息包括CPU的数量和类别、内存基地址和大小、总线和桥、外设连接、中断控制器和中断使用情况、GPIO控制器和GPIO使用情况、Clock控制器和Clock使用情况。
另外,设备树对于可热插拔的热备不进行具体描述,它只描述用于控制该热插拔设备的控制器。
第二:Linux设备树目标
https://www.kernel.org/doc/Documentation/devicetree/usage-model.txt
The “Open Firmware Device Tree”, or simply Device Tree (DT), is a data
structure and language for describing hardware. More specifically, it is a
description of hardware that is readable by an operating system
so that the operating system doesn’t need to hard code details of the
machine
提供一种语言来解耦硬件配置信息
第三:Linux设备树概述:dts、dtsi
DTS(device tree source)
DTS: .dts文件是设备树的源文件。
文件.dts是一种ASCII文本格式的设备树描述 ,一个.dts文件对应一个ARM的设备, 一般放置在内核的arch/arm/boot/dts/目录中 。
由于一个SoC可能对应多个设备(一个SoC可以对应多个产品和电路板),这些.dts文件势必须包含许多共同的部分,Linux内核为了简化,把SoC公用的部分或者多个设备共同的部分一般提炼为.dtsi,类似于C语言的头文件。其他的设备对应的.dts就包括这个.dtsi 。
目录:arch/arm64/boot/dts/mediatek/auto2735evb.dts
第四:Linux设备树语法
设备树用树状结构描述设备信息,它有以下几种特性:
DeviceTree的结构非常简单,由两种元素组成:
Node(节点)
Property(属性)
[label:] node-name[@unit-address] {
[properties definitions]
[child nodes]
}
边栏推荐
猜你喜欢
随机推荐
OSError: [WinError 123] 文件名、目录名或卷标语法不正确
【QT】入门心法
PreFixSum前缀和
APT级全面免杀与企业纵深防御体系的红蓝对抗
How does MySQL permanently support Chinese input once and for all?
高数---级数
POJ 3041 Asteroids(最大匹配数=最小点覆盖)
[Notes] Introduction to machine learning
MySQL——增删改查进阶
Rust:多线程并发编程
基于DMS的数仓智能运维服务,知多少?
分享即时通讯开发之WebSocket:概念、原理、易错常识、动手实践
Shell编程案例
POJ 1465 Multiple(用BFS求能组成的n的最小倍数)
梅科尔工作室-14天华为培训六
【Azure 事件中心】使用Azure AD认证方式创建Event Hub Consume Client + 自定义Event Position
【C语言学习笔记(六)】分支与跳转(if、else、continue、break、switch)
架构基本概念和架构本质
InnoDB 中不同SQL语句设置的锁
借助kubekey极速安装Kubernetes