设备树下Led驱动实验-读设备树中设备节点的新方法

本文介绍了如何在Linux系统中,利用设备树(DTS)和of_iomap函数从设备节点获取内存地址,从而实现对LED设备的初始化和控制。作者详细讲解了of_iomap的工作原理以及在驱动程序中的应用实例。

一.  简介

前面已经完成 从设备树文件读取 Led设备节点信息,Led的 IO初始化工作,最终实现Led灯的打开与关闭。

其中,从设备树文件读取 Led设备节点的属性 reg值,具体读取 (IMX6ULL芯片上)寄存器的地址。然后将读取的寄存器的物理地址转换为虚拟地址,这部分代码的实现,可以通过直接内存映射来实现,具体直接调用 of_iomap()函数即可完成。

二.  读取设备树中设备节点信息的新方法

1. 直接内存映射

of_iomap() 函数用于直接内存映射。of_iomap()函数的头文件为:

#include <linux/of_address.h>

注意: of_iomap()函数获取的 reg属性!!!

前面我们会通过 ioremap() 函数,来完成物理地址到虚拟地址的映射,采用设备树以后,就可以直接通过 of_iomap() 函数来获取内存地址所对应的虚拟地址, 而不需要使用 ioremap() 函数了。

当然了,你也可以使用 ioremap 函数来完成物理地址到虚拟地址的内存映射,只是在采用设备树以后,大部分的驱动都使用 of_iomap 函数了。

of_iomap() 函数本质上也是将 reg 属性中地址信息转换为虚拟地址,如果 reg 属性有多段的话,可以通过 index 参数指定要完成内存映射的是哪一段。

of_iomap 函数原型如下:
void __iomem *of_iomap(struct device_node *np, int index)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值