五、(正点原子)设备树下的LED驱动

        在前面我们的字符设备驱动LED中,我们是直接在驱动文件中定义相关LED寄存器的物理地址,通过io_remap函数内存映射的到虚拟地址,操作寄存器的虚拟地址来对LED的初始化和操作,二现在我们使用设备树来向Linux内核传递相关寄存器物理地址。

一、修改设备树文件

        1、创建子节点        

        我们在"/"根节点下创建一个"alphaled"的子节点来存储我们LED的寄存器信息,通过获取这个节点的信息来对LED的初始化。

        在Linux内核源码中,我们使用的设备树文件是imx6ull-alientek-emmc.dts所以,在这个设备树文件中,在根节点"/"添加我们的子结点(一般在根节点的最后添加):

         2、添加子节点属性

        ①、compatible属性

        兼容性属性,一般是描述我们的设备的,所以我们设备compatible属性"alientek,alphaled",正点原子的阿尔法开发板。

        ②、status属性

        表示这个设备的状态,前面设备树中我们已经了解过了,所以我们这里直接设置status属性值为"okay"。如果不知道的可以查看四、(正点原子)Linux设备树-优快云博客

        ③、#address-cells和#size-cells属性

        表示我们创建的这个节点的子结点的reg的值。都设备为一,表示此节点的子结点的起始地址和地址长度为一个字长。

        ④、reg属性

        描述我们的LED需要使用到的寄存器的物理地址信息。使用到的寄存器我们可以参考《IMX6ULL参考手册》查看,这里我就不仔细介绍了,具体使用到的寄存器有:

        1、CCM_CCGR1(打开GPIO时钟)                                                                        20C_406Ch

        2、SW_MUX_CTL_PAD_GPIO1_IO03(将GPIO复用为GPIO模式)                 20E_0068h

        3、SW_PAD_CTL_PAD_GPIO1_IO03(设置GPIO的电器属性)                       20E_02F4h

        4、GPIO1_DR(GPIO的数据)                                                                           209_C000h  

      &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tofu_Cabbage

你的打赏是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值