前面两章我们了解了Linux驱动程序的基本框架,也了解了如何编译Linux的驱动程序。接下来我们有必要介绍Linux系统的设备了,这样我们才能清楚的知道应用程序和设备驱动程序是如何的工作的,或者说应用程序是如何控制驱动程序的,进而知道应用程序是如何通过驱动程序操作设备的。
Linux设备分类
Linux下的设备通常分为三类,字符设备,块设备和网络设备。
- 字符设备
root#ls -l /dev/ttyS[0-3] crw-rw---- 1 root root 4, 64 Feb 18 23:34 /dev/ttyS0 crw-r----- 1 root root 4, 65 Nov 17 10:26 /dev/ttyS1 crw-rw---- 1 root root 4, 66 Jul 5 2000 /dev/ttyS2 crw-rw---- 1 root root 4, 67 Jul 5 2000 /dev/ttyS3 |
- 块设备
root# ls -l /dev/hda[1-3] brw-rw---- 1 root root 3, 1 Jul 5 2000 /dev/hda1 brw-rw---- 1 root root 3, 2 Jul 5 2000 /dev/hda2 brw-rw---- 1 root root 3, 3 Jul 5 2000 /dev/hda3 |
- 网络设备
设备节点、设备驱动及设备的关联
当我们访问一个设备节点是,系统是如果知到使用哪个设备驱动及访问哪个设备的呢?这个是通过设备号来实现的。当我们创建一个设备节点时需要指定主设备号和次设备号。对于设备节点来说,名字不是重要的,设备号才是最重要的,它实际指定了对应的驱动程序和对应的设备。
- 主设备号
- 次设备号
后记
这一章我们了解了Linux设备、设备节点与设备驱动的关系,也了解了应用程序是如何通过设备驱动程序访问设备的。下一章我们就可以给Hello World程序添加读写功能了,并且为它创建一个设备节点,这样我们就可以通过应用程序来操作Hello World驱动程序的内容了。