对设备树DTS中interrupt相关属性的一点理解

更新时间:2023-05-12 13:15:14 阅读: 评论:0

对设备树DTS中interrupt相关属性的⼀点理解
Dts中相关符号的含义
**
怎样确认当前系统⽤的哪个设备树⽂件?
**
cd /proc/device-tree  //这个就是当前系统⽤设备树⽂件
/ 根节点
@ 如果设备有地址,则由此符号指定
& 引⽤节点
冒号前的label是为了⽅便引⽤给节点起的别名,此label⼀般使⽤为&label
空属性并不⼀定表⽰没有赋值。如 interrupt-controller ⼀个空属性⽤来声明这个node接收中断信号
#并不表⽰注释,如#address-cells⽤来决定reg属性的格式
“” 引号中的为字符串,字符串数组:”strint1”,”string2”,”string3”
< > 尖括号中的为32位整形数字,整形数组<12 3 4>
[ ] ⽅括号中的为32位⼗六进制数,⼗六机制数据[0x11 0x12 0x13] 其中0x可省略
Linux DTS中和中断相关属性的解释和⽤法
1, ⾼通平台⽤的中断控制器的是 GIC(Generic Interrupt Controller),类似于STM32中的NVIC, GIC 是联系外设中断和 CPU 的桥梁,也是各 CPU 之间中断互联的通道(也带有管理功能),它负责检测、管理、分发中断.
2, GIC 中断类型有3种:SGI(Software-generated interrupt)、PPI(Private peripheral interrupt )、SPI(Shared peripheral interrupt)。
SGI: SGI为软件可以触发的中断,统⼀编号为0~15,⽤于各个core之间的通信。
PPI: PPI为每个 core 的私有外设中断,统⼀编号为 16-31 。例如每个 CPU 的 local timer 即 Arch Timer 产⽣的中断就是通过 PPI 发送给 CPU 的(安全为29,⾮安全为30)。
SPI: SPI 是系统的外设产⽣的中断,为各个 core 公⽤的中断,统⼀编号为 32~1019 ,如 global timer 、uart 、gpio 产⽣的中断。
所有外设中断都⽀持四种触发⽅式:
1, 上升沿触发
2, 下降沿触发
4, ⾼电平触发
8, 低电平触发
这四种⽅式定义在:Documentation/devicetree/bindings/interrupt-controller/
所以总结,exynos4412的GIC中断控制器(interrupt controller)通过中断类型、中断号、中断触发⽅式
这三个要素可以描述⼀个唯⼀指定的中断。
所以DTS中接在GIC的device node的interrupts属性也是⽤这三个要素来描述⼀个具体的中断。
431        interrupts =<0520>;
格式如:interrupts = <;中断类型 中断号 中断⽅式>
28  The 1st cell is the interrupt type;0for SPI interrupts,1for PPI
29  interrupts.
30
31  The 2nd cell contains the interrupt number for the interrupt type.
32  SPI interrupts are in the range [0-987].  PPI interrupts are in the
33  range [0-15].
34
35  The 3rd cell is the flags, encoded as follows:
36    bits[3:0] trigger type and level flags.
371= low-to-high edge triggered
382= high-to-low edge triggered(invalid for SPIs)
394= active high level-nsitive
408= active low level-nsitive(invalid for SPIs).
3, DTS中采⽤中断树来描述中断的连接信息以及级联情况等。但中断树和设备树的结构不⼀样,中断树是⼀个"倒树"。设备树都是从root 到leaf的顺序来描述的,⽐如DTS都有⼀个root node,cpus、mem等都是它的⼦节点,⽽cpus或者mem节点下⼜分cpu@0、cpu@1等⼦节点。但中断树不⼀样,中断产⽣设备中会嵌⼊⼀个interrupt-parent属性,这个interrupt-parent会被赋值⼀个phandle变量,通过phandle指明这个设备中断物理上的连接关系。但并不是所有的中断产⽣设备节点都会显式定义interrupt-parent属性。如果⼀个中断产⽣设备没有定义interrupt-parent,那他的interrupt-parent就是设备树中的parent。所以根据前⾯的描述,中断树的连接关系是先找中断产⽣设备device node,然后找到这个node连接的interrupt-parent,所以和DTS的device node组织结构相⽐是倒过来的。
中断域是定义中断描述符的上下⽂(context)。⼀个中断域的根可以是interrupt-controller也可以是⼀个interrupt nexus。
1.interrupt-controller: 它是⼀个物理设备,需要驱动⽀持来处理连接到它的中断。
2.interrupt nexus(interrupt-map): 实现从⼀个interrupt domain转化到另⼀个interrupt domain。通过定义interrupt-map属性来实现。例如PCIE的中断需要映射到系统的IRQ。
3.interrupt-cells: ⼀个中断描述符所需的数⽬
4.interrupt-parent: 为了让中断树能反映实际上的物理连接层次关系,定义了interrupt-parent属性。⽐如⼀颗SoC,有外部中断通过GPIO⼦系统然后连接到GIC上;也有SoC集成的UART,I2C等控制器上的中断直连到GIC上。外部中断的interrupt-parent可以设为GPIO,⽽UART的interrupt-parent则可设置为interrupt-controller(GIC)
interrupt-map
除了描述中断的连接关系,在DTS中可能还需要描述中断映射的关系。从⼀个中断domain映射到另⼀个中断domain。⽐如exynos4412的mct设备

本文发布于:2023-05-12 13:15:14,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/888083.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:中断   连接   设备   属性   描述   触发   需要   关系
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图