LINUX设备文件

本文转自:http://blog.csdn.net/maojun1986/article/details/5280771


1. 模块(驱动程序)

  模块(module)是在内核空间运行的程序,实际上是一种目标对象文件,可以动态装载到系统中作为内核的一部分运行。

  Linux下对于一个硬件的驱动,可以有两种方式:

   1.1 直接加载到内核代码

          启动内核时就会驱动此硬件设备。

   1.2 以模块方式加载

          编译生成一个.o文件。当应用程序需要时再加载进内核空间运行。

2. Linux系统的文件类型

    Linux文件系统包括:

   文本文件;二进制文件;目录文件;连接文件;设备文件;管道文件(用于进程间通信)

3. Linux 设备文件

  L i n u x将外设看作一个文件来管理, 用户使用外设就像使用普通文件一样。

  设备文件存放在/ d e v目录下,它使用设备的主设备号和次设备号来区分指定的外设。主设备号说明设备类型,次设备号说明具体指哪一个设备。

  e.g  / d e v / f d 0

   主设备号: f d是软盘驱动器( f l o p p y d i s k )

   次设备号: 0是软盘驱动器编号

  Linux下的/dev 目录中有大量的设备文件。主要是块设备文件和字符设备文件。

2.1 块设备文件

  块设备的主要特点是可以随机读写,而最常见的块设备就是磁盘,如/dev/hda1 、/dev/sda2、/dev/fd0等。

2.2 字符设备文件

  同块设备一样,我们一般都可以用service kudzu start命令来自动增加、删除或修改字符设备。最

常见的字符设备是打印机和终端,他们可以接受字符流。

  /dev/null是一个非常有用的字符设备文件,如果将程序的输出结果重定向到/dev/null,则看不到任何输出信息。

3. Linux硬件驱动架构

  Linux是这样来进行硬件驱动的:

  3.1 加载驱动模块文件

        加载的过程就是设备向系统注册,成功后系统反馈一个主设备号。

        e.g insmod *.o

  3.2 驱动根据主设备号在/dev下创建设备文件

        mknod用于创建

   3.3 访问设备

        应用程序通过open, read, write等命令完成对设备的访问

   /etc/modules.conf文件,它定义了一些常用设备的别名.

  关系图如下: (其中驱动模块是以.ko结尾的文件如果没有依赖其它的内核模块可以用insmod挂载,如果涉及到其它内核模块,可以用modprobe挂载)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值