天嵌 ARM开发社区

 找回密码
 注册
查看: 3448|回复: 5

TQ210 /dev下的设备节点创建

[复制链接]
eddy_tianqian 发表于 2014-6-12 22:35:06 | 显示全部楼层 |阅读模式
TQ210 /dev/目录下的设备节点是如何创建的呢?
1. mknod
2. mdev
3. device_create()

但在光盘的linux源码和开发板启动的系统中均没找到/dev/目录下设备节点创建的线索。请专家给些提示,谢谢~
s1005056 发表于 2014-6-13 16:45:08 | 显示全部楼层
可以參考
http://www.armbbs.net/forum.php?mod=viewthread&tid=19665
的第二章跟第七章

如果沒有回答到eddy_tianqian的問題的話,還請補充想要知道的方向
 楼主| eddy_tianqian 发表于 2014-6-13 23:13:16 | 显示全部楼层
s1005056 发表于 2014-6-13 16:45
可以參考
http://www.armbbs.net/forum.php?mod=viewthread&tid=19665
的第二章跟第七章

非常感谢s1005056的热心回复,但对于原有的问题还是存在疑问。对于在帖子中提到的/dev目录下设备文件的创建方式devfs_register()主要存在于2.6以前的代码中,除了mknod方式外,现在大多使用udev/mdev(busybox集成工具)或device_create()完成。同时,我的TQ210板子上运行的是开发板光盘上的2.6.35.7内核,在该源码中也没找到对devfs_register()的调用。

我想弄明白TQ210板子上/dev目录下的设备节点文件是通过什么方式创建的。目前我的发现是:
1.不是mknod方式:原因在于我在开发板附带光盘的2.6.35.7代码中,没有找到对mknod的使用;
2.不是udev/mdev方式:在/etc/目录下村镇mdev.conf文件,但从该文件的内容上看,它主要完成热插拔相关的一些操作,主要是针对u盘之类的设备挂载,不可能创建/dev/目录下的全部设备节点;
3.不是device_create()方式:在drivers/目录下存在device_create()函数的使用,但数量并不多,不足以创建/dev/目录下的所有设备节点;

所以,总结来说,到目前并未找到/dev/目录下所有设备节点创建的方式。希望弄清楚该过程的朋友能指点一二,谢谢~
s1005056 发表于 2014-6-16 10:40:32 | 显示全部楼层
回頭翻了一下書,書上說是使用device_create函數創建設備文件的,於是查看了一下device_create的程式碼從註解上看起來應該也是註冊用的函數 [device_create - creates a device and registers it with sysfs]




再繼續追下去可以看到device_create -> device_create_vargs ->device_register -> device_add -> device_create_file -> ...
下面附上程式碼截圖















避免回文過長,關於device_create tracing source code就先到這邊
下一篇再討論關於device_create函數使用數量不多的問題

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
s1005056 发表于 2014-6-16 11:09:34 | 显示全部楼层
本帖最后由 s1005056 于 2014-6-16 11:11 编辑
eddy_tianqian 发表于 2014-6-13 23:13
非常感谢s1005056的热心回复,但对于原有的问题还是存在疑问。对于在帖子中提到的/dev目录下设备文件的创 ...

由於設備文件創建的方式不是只有使用udev+device_create的方式,還有其他的方式可以進行創建,例misc_register也能進行設備文件創建,而misc_register內也呼叫了device_create函數



另外還有platform_device_add函數也可以創建設備文件,而該函數中則是直接呼叫device_add





在kernel原始碼(Kernel 3.0.8 for Android)中搜尋device_add確實只有100個左右的呼叫,但是有幾個是被放在xxx_add_device, or xxx_device_probe函數當中,表示當某些設備要建立設備文件時,不會直接呼叫device_add而是透過xxx_add_device, or xxx_device_probe函數,因此只看device_add的引用數是不準確的。


因此關於設備文件的建立流程,應該是從device_create -> device_create_vargs ->device_register -> device_add -> device_create_file -> ... 一路trace下去就是了


以上為個人學習心得,如果有什麼不對的地方還請版上高手們指點


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| eddy_tianqian 发表于 2014-6-24 23:38:48 | 显示全部楼层
s1005056 发表于 2014-6-16 11:09
由於設備文件創建的方式不是只有使用udev+device_create的方式,還有其他的方式可以進行創建,例misc_reg ...

沿着你的思路,对照源码看了下,果然创建设备节点有很多种方式。多谢指点。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-4-29 06:58 , Processed in 1.078125 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表