取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Xilinx Petalinux中如何确认dev下设备的对应关系

yolanda
Moderator
Moderator
0 0 200

BY Terry Ni

注意:本论坛博客所有内容皆来源于Xilinx工程师,如需转载,请写明出处作者及赛灵思论坛链接并发邮件至cncrc@xilinx.com,未经Xilinx及著作权人许可,禁止用作商业用途 


引言

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

 

反编译设备树

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

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

例如:

a.png

 

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

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

b.png

c.png

 

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

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

d.png

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

e.png

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

f.png

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

g.png

总结

用户需要使用某个设备的时候可以通过本文介绍的两种方法,结合设备树信息就可以明确的找到对应的设备了。如有任何问题,欢迎大家在XILINX中文论坛发帖提问。