答案是:不需要转换,在platform_device中有一个成员struct device dev,这个dev中又有一个指针成员struct device_node *of_node,linux的做法就是将这个of_node指针直接指向由设备树转换而来的device_node结构。 例如,有这么一个struct platform_device* of_test.我们可以直接通过of_test->dev.of_node来访问设备树中的...
unflatten_device_tree():对设备树具体的解析,事实上在这个函数中所做的工作就是将设备树各节点转换成相应的struct device_node结构体。 下面我们再来通过代码跟踪仔细分析。 四、setup_machine_fdt // 根据传入的设备树dtb的首地址完成一些初始化操作mdesc =setup_machine_fdt(atags_vaddr); 1 2 登录后即可复制 _...
答案是:不需要转换,在platform_device中有一个成员struct device dev,这个dev中又有一个指针成员struct device_node *of_node。 linux的做法就是将这个of_node指针直接指向由设备树转换而来的device_node结构;留给驱动开发者自行处理。 例如,有这么一个struct platform_device* of_test.我们可以直接通过of_test->dev...
答案是:不需要转换,在platform_device中有一个成员struct device dev,这个dev中又有一个指针成员struct device_node *of_node,linux的做法就是将这个of_node指针直接指向由设备树转换而来的device_node结构。 例如,有这么一个struct platform_device* of_test.我们可以直接通过of_test->dev.of_node来访问设备树中的...
从上文贴出的程序来看,of_alias_scan()函数先是处理设备树chosen节点中的"stdout-path"或者"stdout"属性(两者最多存在其一),然后将stdout指定的path赋值给全局变量of_stdout_options,并将返回的全局struct device_node类型数据赋值给of_stdout,指定系统启动时的log输出。
of_find_compatible_node函数 (内核源码/include/linux/of.h) 1 struct device_node *of_find_compatible_node(struct device_node *from,const char *type, const char *compatible) 相比of_find_node_by_name函数增加了一个compatible属性作为筛选条件。
device_type = “memory”; reg = <0x00000000 0x20000000>; /* 512 MB */ }; 对于memory node,device_type必须为memory,由之前的描述可以知道该memory node是以0x00000000为起始地址,以0x20000000为结束地址的512MB的空间。 一般而言,在.dts中不对memory进行描述,而是通过bootargs中类似521M@0x00000000的方式传...
在platform_device部分有简单说明描述设备有两种方法:一种是使用platform_device结构体来指定;另一种是使用设备树来描述。 本篇笔记我们就来简单地学习一下设备树的一些知识。 什么是设备树 1.jpg 设备树简单理解就是描述设备信息(资源)的一棵树。设备树(Device Tree)用代码体现如下: ...
* @of_node: Associated device tree node. * @fwnode: Associated device node supplied by platform firmware. * @devt: For creating the sysfs "dev". * @id: device instance * @devres_lock: Spinlock to protect the resource of the device. ...