mycdev.c
#include <linux/init.h>
#include <linux/module.h>
#include <linux/of.h>
struct device_node *dnode; //解析得到的设备树节点对象指针
struct property *pr;
unsigned int lenth;
static int __init mycdev_init(void)
{
//解析设备树节点信息
dnode = of_find_node_by_name(NULL,"mynode");
if(dnode == NULL)
{
printk("解析设备树节点失败\n");
return -ENXIO;
}
//解析uint属性
pr = of_find_property(dnode,"unit",&lenth);
if(pr == NULL)
{
printk("属性解析失败\n");
return -ENXIO;
}
printk("name=%s,value %x,%x\n",pr->name,__be32_to_cpup((u32 *)pr->value),__be32_to_cpup((u32 *)pr->value+1));
pr = of_find_property(dnode,"binarry",&lenth);
if(pr == NULL)
{
printk("属性解析失败\n");
return -ENXIO;
}
int i;
for(i=0;i<lenth;i++)
{
printk("name=%s,value=%x\n",pr->name,*((u8 *)pr->value+i));
}
return 0;
}
static void __exit mycdev_exit(void)
{
}
module_init(mycdev_init);
module_exit(mycdev_exit);
MODULE_LICENSE("GPL");