mycdev.c
- #include <linux/init.h>
- #include <linux/module.h>
- #include <linux/of.h>
-
- struct device_node *node; //解析得到的设备树节点对象指针
- struct property *pr; //属性结构体指针
- int len;
- u32 a;
- u32 b[2];
- const char *str;
- u8 c[6];
- static int __init mycdev_init(void)
- {
- int i;
- //解析设备树节点信息
- node = of_find_node_by_path("/mynode@0x12345678");
- if(node == NULL)
- {
- printk("解析设备树节点失败\n");
- return -ENXIO;
- }
- printk("获取节点信息成功\n");
- //获取u32数值
- of_property_read_u32_index(node,"unit",0,&a);
- printk("%#x\n",a);
- printk("u32\n");
- //获取u32数组
- of_property_read_variable_u32_array(node,"unit",b,2,2);
- printk("%#x,%#x\n",b[0],b[1]);
- printk("u32数组\n");
- //获取字符串类型的值
- of_property_read_u8_array(node,"binarry",c,6);
- for(i=0;i<6;i++)
- {
- printk("%#x\n",c[i]);
- }
- printk("u8\n");
- return 0;
- }
- static void __exit mycdev_exit(void)
- {
-
-
- }
- module_init(mycdev_init);
- module_exit(mycdev_exit);
- MODULE_LICENSE("GPL");