核心点:
在根节点“/”下创建一名为“haled”的子节点文件。
haled{ #address-cell = <1>; //表示起始地址占用一个字节的长度。 #size-cells = <1>; //表示地址占用一个字节长 compatible = "alpa-led"; //表示属性的兼容属性为"alpa-led" status = "okay"; // 表示设置的状态为“okay” reg = < 0X020C406C 0X04 /* CCM_CCGR1_BASE */ 0X020E0068 0X04 /* SW_MUX_GPIO1_IO03_BASE */ 0X020E02F4 0X04 /* SW_PAD_GPIO1_IO03_BASE */ 0X0209C000 0X04 /* GPIO1_DR_BASE */ 0X0209C004 0X04 >; /* GPIO1_GDIR_BASE */ };
//表示驱动里面所要使用的寄存器物理地址 ,对应寄存器的首地址。
核心驱动代码:
//编写驱动入口函数
static int __init led_init(void) { u32 val = 0;
//获取设备树中的属性数据
dtsled.nd = of_find_node_by_path("/haled");
//获取compatible对应的属性内容
proper = of_find_property(dtsled.nd,"compatible",NULL);
//获取reg中的属性内容
ret = of_property_read_u32_array(dtsled.nd,"reg",regdata,10);
//核心将获取对应寄存器的地址
}
总结:设备数中的核心内容,领悟为主。