开发者分享 | Petalinux中如何确认 dev 下设备的对应关系

本文转载自:XILINX开发者社区微信公众号

本文来自 XILINX 嵌入式产品应用工程师 Terry Ni

通常 Kernel 一加载起来,大家能在/dev目录下可以看到一大堆的设备。这些设备都是 Kernel 加载初始化过程中,由内核和驱动创建出来的。那么哪个设备才是我真正要用的设备。下面就几个常用的外设来和大家一起梳理一下。

反编译设备树

首先第一步是要获得完整的设备树信息。通过将 dtb 文件反编译成 dts 文件,你就可以获得最终的设备树文件了。方法是使用dtc小工具,把在你 petalinux 工程下image/linux/system.dtb 文件反编译成 dts 文件。命令如下:

dtc -I dtb -O dts -osystem.dts system.dtb

有了最终的 dts 文件,就相当于我们已经有一个所有设备的清单。在这个清单中,我们可以看到每个设备在kernel 中都会有一个对应的地址。这个地址就可以和你 Vivado 工程中设置的地址一一对应。

例如:

查看启动信息,确认设备节点

在 Kernel 启动过程中,设备驱动如果能成功完成初始化,一般会打印出对应的设备名称。例如,如果在 VIVADO 工程中使能了 PS 侧的 UART0,那么你可以在 kernel 启动完成之后,通过 dmesg 指令来查找 UART0 被注册成了哪个串口设备。

所以如果使用的是自己的硬件平台,那么尽量不要使用预设的名称,这样可以避免导入多余的设备树信息从而导致编译失败或者最终功能不正确。


查看设备初始化信息,确认设备节点

如果驱动在初始化工程中没有打印出设备名称的话,怎么才能知道对应的设备是哪个呢?比如 I2C 设备,用 dmesg 并没有找到 VIVADO 工程中使能的 I2C 对应的是哪个设备。

然后在 /dev 下,你可以看到多达9个的 i2c 设备。

这个时候,我们可以去/sys/bus/i2c/device 目录下来确认每个 I2C 设备对应的节点

进入我们要确认的 I2C 设备,比如 I2C-0 这个设备,再用 ls -l 的指令,就可以看到这个设备对应的是设备树中具体的哪个节点了。

总结
用户需要使用某个设备的时候可以通过本文介绍的两种方法,结合设备树信息就可以明确的找到对应的设备了。

最新文章