首页 > 其他分享 >设备树浅谈(一)

设备树浅谈(一)

时间:2022-10-20 10:36:28浏览次数:42  
标签:驱动程序 DTB 串口 DTS 驱动 设备 浅谈

1、 话不多说,直奔主题

设备树是Linux系统比较重要的一部分,可谓核心也它,细节也它。从大方面看,简单配置设备树,驱动则起来;从小方面看,配置设备树以及修改驱动程序,驱动挂载起来。

以前的NXP、三星6410以及龙芯开发平台,也结合代理商的协助,都是被驱动化的开发,设备树基本不碰,最多也就是编译,这样的情况很不利于对系统的深究以及日后开发的技术储备,

现在接触到更适合IPC方案的RK芯片-RV1126,撇去代理商的例如RP的封装,用最为原生的Linux以及驱动更加可能作为迁移能力的技术储备。

例如配置一个串口的驱动,因绝大部分的串口都是“祖传驱动“完成了架构和基础,所以只需要根据电路图配置串口的设备树:

Q1:pinctrl-0 什么意思?

 

Q2:status?

简单回答:

A1:pinctrl系统的某一个GPIO的简易定义。

A2:使能该节点。

 或许这样的回答会让你求知欲更强。

2. 了解DTX系列的概念

DTSI:该部分代码如同头文件定义的结构体或者变量,板级的代码均在这里体现,如:

 

 uart4 是作为一个serial在ff590000地址处,表明了具体内存地址的设备。

DTS: 该部分代码如同源文件的定义以及调用,针对不同的板级芯片,可以选择不一样的设备树(DTS),如:

 

 

DTC: 有GNU的gcc,同样有DTB的DTC,作为一个DT的编译器,它的工作是把DTS源代码编译为DTB,提供系统使用。(所以有设备修改驱动就要更新设备树,文件替换即可)

 

DTB: 该文件格式则为编译后的DTS,是最终产物。

DTX的相关概念比较容易理解,主要是一个源码到执行文件的过程。

3. 基于串口和SPI的标准例子阐述
A- 串口的设备树

 

 用到pinctrl系统就要用到

 

 

dtsi的作用非常大,因为复用的多,所以要针对电路图选择对应的引脚,pinctrl系统就是针对gpio实现,真正的意义如下:

 

 

 对比下,就一目了然。

 

B- SPI驱动,在完成SPI驱动程序后,下一个步骤就是整合设备树

 

 st7735s是一个自定义的节点,跟驱动程序匹配起来,该节点是挂载在SPI1这条总线上。

compatible:作为兼容的名称,驱动程序匹配。

status:状态

具体spi的参数,都在st7735s节点下配置,以及gpios的配置,也是在驱动挂载过程中体现的默认GPIO状态。

DTS这部分调用的是DTSI的代码或结构体,取spi1地址就可以拿到spi1的参数,对于配置一个设备,相对来讲,在完成

设备代码后,比较简单。

4. 编译kernel

 

 在进行kernel编译后,会出现dtb的生成,关键细节

 

 

 

DTB部分信息,跟DTS的结构一致。

 

标签:驱动程序,DTB,串口,DTS,驱动,设备,浅谈
From: https://www.cnblogs.com/real-watson/p/16808817.html

相关文章

  • 九鼎RK3399笔记三:测试迅为电子的杂项设备驱动
    Linux三大设备驱动字符设备:IO的传输过程是以字符为单位的,没有缓冲。比如I2C,SPI都是字符设备。块设备:IO的传输过程是以块为单位的。跟存储相关的,都属于块设备,比如TF卡。......
  • Matlab从移动设备获取加速度数据对步数进行计数
    本文分享如何从Android或iOS(我的手机是ios)移动设备收集加速度数据,并使用它来对行走步数进行计数。1、设置移动设备为了在MATLAB中从移动设备接收数据,移动设备上安装和设......
  • 04 设备树的处理流程
    1.内核对设备树的处理每个节点都会转化为一个device_node部分device_node会转化为platform_deviceof_platform.h文件中会把device_node转化为platform_device,实际使......
  • 视频融合平台EasyCVR出现设备通道启用异常,该如何解决?
    EasyCVR平台是我们支持协议最全面的视频平台,它能支持主流协议包括国标GB/T28181、RTMP、RTSP/Onvif协议,以及厂家的私有协议,如海康Ehome、海康SDK、大华SDK等。平台可拓展性......
  • Linux下编写ENC28J60网卡驱动,完善网络设备框架
    一、框架模型linux下设备驱动都有一套标准的结构,字符设备,块设备,网络设备都是自己的一套框架。编写驱动只需要把内核的框架搞清楚,然后照着结构填入参数,注册进内核,在应用层就......
  • 解决ios设备软键盘弹出导致页面整体被顶起
    问题ios设备:点击input,软键盘弹出,页面整体向上偏移需求当软键盘弹起,input改变位置并始终贴着软键盘,整体页面不上移动解决页面采用flex布局<divclass="flex"><d......
  • mui组件导致ios设备无法让input获取焦点
    问题页面使用了mui组件,其中有个input标签。在IOS,macOS设备上无法通过点击让input框获得焦点,导致无法输入。原因mui.css中有个样式,让页面内容无法被选中,影响了input获取......
  • 浅谈线段树
    浅谈线段树Segment_TreeByxiaruize引言OI中,有一种好玩的游戏,叫做码线段树,那么线段树是什么???线段树的目的线段树主要用于在区间上动态维护一些值(如最大值,最小......
  • 浅谈C语言中的变量
    一.定义变量的方法就是类型+变量名+数值,比如:inta=12;shortage=22;charch='w';二.变量的分类1.全局变量2.局部变量全局变量:定义在代码块({})之外的变量。局部......
  • 浅谈C语言中的常量(字面常量、const修饰的常变量、#define定义的标识符常量、枚举常量
    一.常量不会变的量就是常量,比如性别,血型等;二.常量的分类1.字面常量2.const修饰的常变量3.#define定义的标识符常量4.枚举常量1.字面常量2.const修饰的常变量    在......