设备树节点为vision_apps_core_heaps_lo: vision-apps-core-heap-memory-lo@94000000 { compatible = "shared-dma-pool"; reg = <0x00 0x94000000 0x00 0x0a800000>; no-map; };,我该如何在驱动中获得vision_apps_core_heaps_lo这个参数
时间: 2023-11-22 17:57:00 浏览: 33
在驱动中获取设备树节点的参数需要使用`of_get_property()`函数。具体步骤如下:
1. 获取设备节点
```
struct device_node *np = of_find_node_by_name(NULL, "vision_apps_core_heaps_lo");
if (!np) {
pr_err("Failed to find device node\n");
return -ENODEV;
}
```
2. 获取`compatible`属性值
```
const char *compatible;
if (of_property_read_string(np, "compatible", &compatible)) {
pr_err("No compatible string in device node\n");
return -EINVAL;
}
```
3. 获取`reg`属性值
```
u32 reg[3];
if (of_property_read_u32_array(np, "reg", reg, 3)) {
pr_err("No reg property in device node\n");
return -EINVAL;
}
```
这样就可以获取到`compatible`和`reg`属性值了,可以根据需要进行后续的处理。
相关问题
设备树节点为vision_apps_core_heaps_lo: vision-apps-core-heap-memory-lo@94000000 { compatible = "shared-dma-pool"; reg = <0x00 0x94000000 0x00 0x0a800000>; no-map; };,我该如何获得vision_apps_core_heaps_lo这个参数
在设备树中,每个节点(node)都有一个唯一的名称(name),例如这个节点的名称是vision_apps_core_heaps_lo。您可以通过查看设备树源文件(.dts或.dtsi文件)来确定节点名称。在该文件中,节点名称通常出现在节点定义的第一行,如下所示:
```
vision_apps_core_heaps_lo: vision-apps-core-heap-memory-lo@94000000 {
```
您可以通过解析设备树来获取节点信息。在Linux中,可以使用libfdt库来解析设备树文件,或者使用设备树工具(如dtc)将设备树文件转换为可读性更好的格式。另外,您还可以在运行时使用/sys/firmware/devicetree/base目录中的文件访问设备树节点信息。例如,要获取该节点的名称,可以执行以下命令:
```
cat /sys/firmware/devicetree/base/vision_apps_core_heaps_lo/name
```
请注意,上述命令仅适用于在Linux内核中解析设备树的情况下。如果您使用其他操作系统或者在用户空间中解析设备树,则需要使用相应的库或工具来获取节点信息。
bootargs = "qcom_dma_heaps.enable_bitstream_contig_heap=y kpti=0 ssbd=force-off lpm_levels.sleep_disabled=1 video=vfb:640x400,bpp=32,memsize=3072000 msm_rtb.filter=0x237
`bootargs` 是 Linux 内核启动时传递给内核的参数,它们很大程度上影响了系统的启动和运行方式。这里是您提供的 `bootargs` 参数:
1. `qcom_dma_heaps.enable_bitstream_contig_heap=y`:启用 bitstream 连续堆,即将 bitstream 分配到物理连续的内存区域,以提高 DMA 性能。
2. `kpti=0`:禁用内核页表隔离(KPTI),这是一种针对 Meltdown 和 Spectre 安全漏洞的内核保护机制。
3. `ssbd=force-off`:关闭 Speculative Store Bypass Disable(SSBD)保护机制。
4. `lpm_levels.sleep_disabled=1`:禁用低功耗模式,即防止系统进入睡眠状态。
5. `video=vfb:640x400,bpp=32,memsize=3072000`:配置虚拟帧缓冲(Virtual Frame Buffer),分辨率为 640x400,像素深度为 32 位,内存大小为 3072000 字节。
6. `msm_rtb.filter=0x237`:配置 MSM Ready To Boot(RTB)过滤器,0x237 是一个十六进制值,表示仅允许特定类型的 RTB 消息通过。