驱动——设备树属性获取相关实验
创始人
2024-02-11 05:17:34

 完成设备树属性获取相关实验

通过键名获取数值相关API获取设备树属性

1、要获取的属性如下所示:

/*mynode@0x12345678{

     compatible = "hqyj,mynode";//字符串

     astring="hello 22071";//字符串

     uint  =<0xaabbccdd 0x11223344>;//32位无符号整数

     binarry=[00 0c 29 7b f9 be];//二进制数据

     mixed ="hello",[11 22],<0x12345678>;//字符串,二进制数据。32位无符号整数

  };

*/

2、获取属性的相关API:

①字符串类型属性获取API:

int of_property_read_string(const struct device_node *np, const char *propname, const char **out_string)

功能:读取字符串类型的值

参数:

np:节点结构体指针

proname:键名

out_string:指获取到的字符串的首地址

返回值:成功返回0,失败返回错误码

 ②获取32位无符号整型的值:

int of_property_read_u32_index(const struct device_node *np, const char *propname, u32 index, u32 *out_value)

功能:获取32位无符号整型的值

参数:

np:节点结构体指针

propname:键名

index:索引号

out_value:获取到的值

返回值:成功返回0,失败返回错误码

 ③获取32位无符号整型数组

int of_property_read_variable_u32_array(const struct device_node *np, const char *propname, u32 *out_values, size_t sz_min, size_t sz_max)

功能:获取一个u32位数组

参数:

np:节点结构体指针

proname:键名

out_values:存放数据的数组名

sz_min:期待读取到的元素的最小个数

sz_max:期待读取到元素的最大个数

返回值:成功返回读取到的个数,失败返回错误码

④获取无符号8位类型的数组

int of_property_read_variable_u8_array(const struct device_node *np, const char *propname, u8 *out_values, size_t sz_min, size_t sz_max)

作用:读取u8类型的数组

参数:

np:节点结构体指针

proname:键名

out_values:存放数据的数组名

sz_min:期待读取到的元素的最小个数

sz_max:期待读取到元素的最大个数

返回值:成功返回读取到的个数,失败返回错误码

 int of_property_read_u8_array(const struct device_node *np, const char *propname, u8 *out_values, size_t sz)

作用:读取u8类型的数组

np:节点结构体指针

proname:键名

out_values:存放数据的数组名

sz:数组成员的个数

返回值:成功返回0,失败返回错误码

 3、设备树实现代码如下所示: 

#include
#include
#include/*mynode@0x12345678{compatible = "hqyj,mynode";//字符串astring="hello 22071";//字符串uint  =<0xaabbccdd 0x11223344>;//32位无符号整数binarry=[00 0c 29 7b f9 be];//二进制数据mixed ="hello",[11 22],<0x12345678>;//字符串,二进制数据。32位无符号整数};
*/
struct property *pr;
struct device_node *node;
int len,i,ret;
unsigned int val;
unsigned int array[2];
unsigned char brr[6];
const char *str;static int __init mycdev_init(void)
{node = of_find_node_by_path("/mynode@0x12345678");if(NULL==node){printk("of find node by path error\n");return -EFAULT;}printk("of find node by path success\n");//获取compatible属性信息--字符串ret = of_property_read_string(node,"compatible",&str);if(ret){printk("of property read string error\n");return -EFAULT;}printk("value=%s\n",str);//获取astring属性信息--字符串ret = of_property_read_string(node,"astring",&str);if(ret){printk("of property read string error\n");return -EFAULT;}printk("value=%s\n",str);//获取uintu信息--32位无符号整数ret = of_property_read_variable_u32_array(node,"uint",array,2,2);if(ret<0){printk("of property read variable u32 index error\n");return -EFAULT;}printk("value:%#x %#x\n",array[0],array[1]);//获取binarry信息--二进制数据ret = of_property_read_u8_array(node,"binarry",brr,6);if(ret<0){printk("of property read variable u32 index error\n");return -EFAULT;}printk("value:=%#x %#x %#x %#x %#x %#x\n",brr[0],brr[1],brr[2],brr[3],brr[4],brr[5]);//获取mixd信息--字符串,二进制数据,32位无符号整型ret = of_property_read_string(node,"mixed",&str);if(ret){printk("of property read string error\n");return -EFAULT;}printk("value=%s ",str);ret = of_property_read_u8_array(node,"mixed",brr,8);if(ret<0){printk("of property read variable u32 index error\n");return -EFAULT;}printk("%#x %#x ",brr[6],brr[7]);ret = of_property_read_u32_index(node,"mixed",2,&val);if(ret<0){printk("of property read u32 index error\n");return -EFAULT;}printk("%#x\n",val);return 0;
}
static void __exit mycdev_exit(void)
{}
module_init(mycdev_init);
module_exit(mycdev_exit);
MODULE_LICENSE("GPL");

 4、实验现象

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...