OF函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了OF函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2473字,纯文字阅读大概需要4分钟。
内容图文
![OF函数](/upload/InfoBanner/zyjiaocheng/991/dc42a52fca8f47d2be940552ca93e3d8.jpg)
Linux内核的OF操作函数
这些函数或结构体都在 include/linux/of.h 文件中定义。
使用OF函数查找到设备树中具体的某个节点
首先,我们在设备树中描述了设备的信息,当时Linux驱动程序如何获取到这些信息呢?
在驱动中使用OF函数可以获取到设备树中的所描述的设备信息。 of函数所有的函数名都以of开头,所以叫of函数。
驱动要想操作设备,首先要找到设备树中的节点,常用的查找节点of函数有5种:
- of_find_node_by_name 函数 //通过名字查找节点
- of_find_node_by_type 函数 //通过类型查找节点
- of_find_compatible_node 函数 //通过兼容性查找
- of_find_node_by_path 函数 //通过路径查找节点
- of_find_matching_node_and_match //通过of_device_id查找节点
节点结构体: 用一个 device_node结构体来描述设备树中的一个节点。
struct device_node {
const char *name; /* 节点名字 */
const char *type; /* 设备类型 */
phandle phandle;
const char *full_name; /* 节点全名 */
struct fwnode_handle fnode;
struct property *properties; /* 属性 */
struct property *deadprops; /* removes 属性 */
struct device_node *parend; /* 父节点 */
struct device_node *child; /* 子节点 */
struct device_node *sibling;
struct kobject kobj;
...
}
查找属性
-
of_find_property 函数 //查找指定的属性,返回值就是找到的属性,属性的所有内容都会被包含在这个结构体里。
-
of_property_read_u8 函数
of_property_read_u16 函数
of_property_read_u32 函数
of_property_read_u64 函数
用于读取只有一个整形值的属性,分别用于读取 u8、 u16、 u32 和 u64 类型属性值。 -
of_property_read_string 函数
of_property_read_string 函数用于读取属性中字符串值,也可以获取到属性,然后直接得到属性的值。 -
of_property_count_elems_of_size 函数 //用于获取属性中元素的数量,如果一个属性的值像一个数组一样,有多个元素,该函数就是用于获取元素的数量。
-
of_property_read_u32_index 函数 //当属性的值有多个的时候,用标号指定要读第几个元素,和数组下标类似。用于从属性中获取指定标号的 u32 类型数据值(无符号 32位),比如某个属性有多个 u32 类型的值,那么就可以使用此函数来获取指定标号的数据值。
-
of_property_read_u8_array 函数
of_property_read_u16_array 函数
of_property_read_u32_array 函数
of_property_read_u64_array 函数
这组函数读取属性中 u8、 u16、 u32 和 u64 类型的数组数据,比如大多数的 reg 属
性都是数组数据,可以使用这 4 个函数一次读取出 reg 属性中的所有数据。使用这个函数是数组空间可以用kmalloc来申请,kfree释放内存。kmalloc
属性结构体: Linux内核中用一个结构体来描述一个属性。
struct property {
char *name; //属性名字
int length; //属性长度
void *value; //属性值
struct property *next;//下一个属性
unsigned long _flags;
unsigned int unique_id;
struct bin_attribute attr;
}
内容总结
以上是互联网集市为您收集整理的OF函数全部内容,希望文章能够帮你解决OF函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。