Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2309173
  • 博文数量: 395
  • 博客积分: 10994
  • 博客等级: 上将
  • 技术积分: 5586
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-17 19:49
文章存档

2014年(1)

2013年(10)

2012年(74)

2011年(303)

2010年(7)

分类: 嵌入式

2012-02-21 15:58:21

请问:linux环境下,/dev/目录下的内容与/proc/下文件devices中的内容有什么区别?我在目 标板上做实验时发现,当我向板子上加载驱动模块时,devices文件中有变化,而/dev下根本没有变化,/dev/下不也应该是设备接点吗,为什么为 模块建立设备接点时,/dev/下却没有变化呢? 
请各位帮帮忙,谢谢!!!


/proc/devices/中的设备是通过insmod加载到内核的,它可产生一个major供mknod作为 参数。 
/dev/*.* 是通过mknod加上去的,格式:mknod device1 c/b major minor 如:mknod dr1 c 254 0,用户通过此设备名来访问你的驱动。

设备 文件 ,设备编号  #ll  -a /dev  在每一行都可以看到设备文件、设备编号(主、次) 
对于每种硬件设备,系统内核有相应的设备驱动程序负责对它的处理。而在Unix 中,使用设备文件的方式来表示硬件设备,每种设备驱动程序都被抽象 为设备文件的形式,这样就给应用程序一个一致的文件界面,方便应用程序和操作系统之间的通信。 

习惯上,所有的设备文件 都放置在/dev 目录下。 

/proc/devices/中的设备是通过insmod加载到内核的,它可产生一个major供mknod作为 参数 。 
/dev/*.* 是通过mknod加上去的,格式:mknod device1 c/b major minor 如:mknod dr1 c 254 0,用户通过此设备名来访问你的驱动。

mknod - make block or character special files
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
    option 有用的就是 -m 了
    name   自定义
    type   有 b 和 c 还有 p
    主设备号
    次设备号

主 设备号是由/usr/src/linux/include/linux/major.h定义的,如下定义了一个DOC设备: 
#define IGEL_FLASH_MAJOR 62 

假如有一个命令mknod doc b 62 0 : 
其中的doc为定义的名 字,b指块设备,0指的是整个DOC。如果把0换为1,则1指的是DOC的第一个分区。2是第2个,依次类推。

阅读(3284) | 评论(0) | 转发(3) |
给主人留下些什么吧!~~