- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
彭东林
作者
彭东林
pengdonglin137@163.com
平台
TQ2440
Linux-4.10.17
概述
在设备树中我们经常见到诸如#clock-cells、#dma-cells、#reset-
cells、#phy-cells、#iommu-cells、#pwm-cells、#hwlock-
cells、#io-channel-cells、#msi-cells、#power-domain-
cells、#interrupt-cells、#cooling-cells、“#sound-dai-cells”等
等 ,这种属性到底是干啥用的? 而有些节点会通过下面的属性引用其他设备树节点 ,
如dmas、resets、iommus、list、pwms、clocks、hwlocks、p
hys、gpios、cooling-device、power-domains、interrupts等 ,
这些属性又是干啥的?
正文
一、我的理解
带有cells字段属性的节点代表了某种资源管理者 ,以中断控制器节点为例 ,含
有#interrupt-cells的节点代表了一种中断资源的管理者 ,而其他使
用interrupts属性引用之前的中断控制器节点的设备树节点代表了某种资源的使用
者 ,也就是某个中断资源的使用者 ,同时在interrupts属性中也描述了所引用中断资源的
详细信息 ,比如中断类型(PPI or SPI)、中断编号、触发类型等等。而
#interrupts-cells属性的含义就是要引用该中断管理器的一个中断资源需要的参数个
数 ,比如前面说的“中断类型”、“中断编号”以及“触发类型”就需要三个参数来表示 ,每个
参数之间用空格隔开。
二、demo-controller
设备树既然写的这么清楚 ,那么Linux内核又是怎么样处理的呢?
为了弄清楚这个问题 ,我仿照of-dma.c添加了一个非常简单易懂的of-demo.c,我将
demo理解为某种资源 ,然后添加了demo-controller和demo-user两个驱动 ,分别表示
demo资源管理者驱动以及demo资源使用者驱动。此外 ,需要在设备树中分别为demo资源
管理者和demo资源使用者的节点。
对应的驱动我已经上传到github上面了:
1. git@:pengdonglin137/linux4.10.17.git b tq2440_dt
对应的commit id是f45a337dbde05fb2d23e26b3729111aef090a70e。
1、demo资源管理者节点
1. demo_controller_one: demo_controller@0 {
2. compatible demo_controller,one;
3. democontroller;
4. #democells 1;
5. };
6.
7. demo_controller_two: demo_controller@1 {
8. compatible demo_controller,two;
9. democontroller;
10. #democells 2;
11. };
12.
13. demo_controller_three: demo_controller@2 {
14. compatible demo_controller,three;
15. democontroller;
16. #democells 3;
17. };
上面表示了三中dem资源管理者 ,对于每一个demo资源管理者而言 ,想要引用该管理者的
一个demo资源需要的参数个数。
第4行的将#demo-cells赋值为1,表示要获取demo_controller_one这个demo资源管
理者的一个demo资源需要1个参数
第10行的2表示获取demo_controller_two这个demo资源管理者的一个demo资源需要2
个参数
第16行的3表示获取demo_controller_three这个demo资源管理者的一个demo资源需
要3个参数
2、demo资源的使用者
1. demo_user_one: demo_user@0 {
文档评论(0)