第七章 驱动程序开发-LED驱动-7.7.设备树的引入

本文介绍了设备树在驱动程序开发中的作用,特别是针对LED驱动。内容包括设备树简介,讲解了什么是设备树,并通过ZDYZ的43章内容举例说明。接着,讨论了设备树的语法,并提到查看IMX6ULL的设备树文件及其编译过程。最后,探讨了基于设备树的platform_device和platform_driver的匹配以及如何获取资源,强调了内核如何处理设备树中的reg和IRQ属性。
摘要由CSDN通过智能技术生成

7.7.1.设备树简介

什么是设备树?到处可以听得见的名词,先看了一下ZDYZ的43章,引用:

     “cpu0 这个设备节点信息,这个节点信息描述了I.MX6ULL 这颗 SOC 所使用的 CPU 信息,比如架构是 cortex-A7,频率支持 996MHz、792MHz、528MHz、396MHz 和 198MHz 等等。”  先简单了解下就ok。

    设备树下的GPIO操作:

     “其实对于大多数的 32 位 SOC 而言,引脚的设置基本都是这两方面,因此 Linux 内核针对 PIN 的配置推出了 pinctrl 子系统,对于 GPIO的配置推出了 gpio 子系统。”

7.7.2.设备树语法

    可以看下开发手册,这里不多说了。

    体验:查看下6ull的设备树文件.dts,从compatible看出它可以兼容"fsl,imx6ull-14x14-evk", "fsl,imx6ull",从model中看出是"Freescale i.MX6 ULL 14x14 EVK Board",也就是抄的官网的EVK板子。

Make编译看下,make dtbs V=1,生成.dtb文件。

7.7.3.设备树的使用

    基于设备树的platform_device和platform_driver是如何匹配的呢?看OF style match过程。当匹配之后,platform_driver如何获取到platform_device的资源呢?前面是在platform_driver中使用一个platform_get_resource()获取,这里应该是类似的吧。

    如果设备树的节点中有reg、IRQ属性,内核会将reg属性转化成内存属性(IORESOURCE_MEM ),IRQ转化成中断属性(IORESOURCE_IRQ),然后就可以使用platform_get_resource()获取。对于不能转化成platform-device的设备怎么去获取呢?

    分为3类函数:找到节点、找到属性和获取属性。

    内核文档 Documentation/devicetree/bindings/做得好的厂家也会提供设备树的说明文档,找了一个pwm-backlight.txt看下,还能看懂的样子。

1 pwm-backlight bindings
  2
  3 Required properties:
  4   - compatible: "pwm-backlight"
  5   - pwms: OF device-tree PWM specification (see PWM binding[0])
  6   - brightness-levels: Array of distinct brightness levels. Typically these
  7       are in the range from 0 to 255, but any range starting at 0 will do.
  8       The actual brightness level (PWM duty cycle) will be interpolated
  9       from these values. 0 means a 0% duty cycle (darkest/off), while the
 10       last value in the array represents a 100% duty cycle (brightest).
 24 Example:
 25
 26     backlight {
 27         compatible = "pwm-backlight";
 28         pwms = <&pwm 0 5000000>; //5MHz?
 29
 30         brightness-levels = <0 4 8 16 32 64 128 255>; //CCR?
 31         default-brightness-level = <6>;
 32
 33         power-supply = <&vdd_bl_reg>;
 34         enable-gpios = <&gpio 58 0>;
 35     };                      

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值