Linux 设备树相关函数

一:设备树相关解析函数
int of_property_read_string_index(struct device_node *np,const char *propname, int index,const char **out_string)
功能:读字符串数组键值对中指定的字符串
参数:
@np 设备数中的设备节点
@propname 属性名
@index 数组中的哪一个字符串
@out_string 二级指针,用来获取存放字符串指针的地址

int of_property_read_u8_array(const struct device_node *np,const char *propname,u8 *out_values, size_t sz);
	功能:获取无符号8位整型数组值    
	参数:    
		@np		设备节点结构体指针    
		@propname	属性名    
		@out_values 	存放u8类型数据的地址    
		@sz			获取数组元素的个数
	int of_property_read_string_array(struct device_node *np,const char *propname,const char **out_strs,size_t sz)
	功能:读字符串数组
	参数:    
		@np		设备节点结构体指针    
		@propname	属性名   
		 @out_strs       存放字符串类型数据的地址    
		 @sz			获取数组元素的个数

NFS网络文件系统配置文件:
在这里插入图片描述
NFS服务器重启:
在这里插入图片描述
获取设备树相关信息:

#if 0
//设备树节点
qf_test:qf_edu@4001A000{		 	 
#address-cells = <1>;	 
#size-cells = <1>;	 
compatible = "qf-edu,io-test";	 
device_type = "mydemo";	 
word-array = <32 45 67 89>;	 
bi-array = [BC 20 11 FE];	 
str-list = "hello","world";	 
reg = <0x10001000 100 0x20000000 100>;   
};
#endif
devnod = of_find_node_by_path("/qf_edu@4001A000");	
if(devnod == NULL){		
printk(KERN_ERR "of_find_node_by_path failed...\n");		
return -EAGAIN;	
} 
of_property_read_string(devnod,"compatible", &str); 
printk(KERN_INFO "---compatible = %s---\n",str);

在这里插入图片描述

of_property_read_u32_array(devnod,"reg",reg_addr,4);
for(i = 0; i < 4 ;i++)    
printk(KERN_INFO "---reg_addr[%d] = 0x%x---\n",i,reg_addr[i]);

在这里插入图片描述

of_property_read_u8_array(devnod,"bi-array",mac_addr, 4);	
for(i = 0; i < 4;i++)		
printk(KERN_INFO "---mac_addr[%d] = 0x%hhx---\n",i,mac_addr[i]);

在这里插入图片描述

of_property_read_string_array(devnod,"str-list",str_arr, 2);	
for(i = 0; i < 2;i++)		
printk(KERN_INFO "---str_arr[%d] = %s---\n",i,str_arr[i]);

在这里插入图片描述
二:platform平台总线驱动和设备树匹配

   platform_driver  --->>>  device_driver  
   					--->>> const struct of_device_id *of_match_table;        
   						--->>>char compatible[128];

在这里插入图片描述
匹配成功,调用probe函数指针指向的函数获取设备资源。
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

路漫漫其远,吾求索

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值