分类: LINUX
2009-04-17 13:16:57
1.1.1 设备的命名
V4L2的驱动程序是以内核模块的形式实现的,可以由系统管理员手动装载,或者在这个设备被第一次打开时自动装载。驱动程序模块被植入在“videodev”内核模块中。它将提供帮助功能和本文档叙述的一个普通的应用程序接口。
每一个这样装载的驱动程序用一个值为81的主要数字和值在0到255之间的次要数字注册一个或多个设备节点。给V4L2设备分配次要数字完全由系统管理员实现,这么做主要是为了解决设备间的冲突。选择次要数字的模块选项以一个带有“_nr”后缀的设备特殊文件命名。例如“video_nr”指向/dev/video的视频捕获设备。这个数字是与设备类型相联系的基准次要数字之间的一个偏移量。当这个驱动程序支持同样类型的多个设备时,可以分配至少两个次要数字,相互之间用逗号隔开:
>
insmod mydriver.o video_nr=0,1 radio_nr=0,1
在/etc/modules.conf中将可能会写为:
alias char-major-81-0 mydriver
alias char-major-81-1 mydriver
alias char-major-81-64 mydriver ①
options mydriver video_nr=0,1 radio_nr=0,1 ②
① 当一个应用试图去打开一个主要数字为81,次要数字是0、1、64的设备特殊文件时,装载“mydriver”(依赖“videodev”模块)。
② 用次要数字0和1注册前两个视频捕获设备(基准数字是0),并用次要数字64和65注册前两个无线电设备(基准数字是64)。
当模块选项中没有给出次要数字时,驱动程序将会报错。在第四章中将会介绍多种设备类型所用到的基准次要数字。显然,次要数字必须是唯一的。一旦这一数字已经在使用中,offending设备将不会被注册。
按照约定,系统管理员在/dev目录下创建了各种不同的带有这些主要数字和次要数字的设备特殊文件。在第四章中列出了这些被推荐作为不同V4L2设备类型的名称。
创建字符文件(用mknod命令)是一种特权操作,并且设备不能被主要数字和次要数字打开。这意味着应用程序无法为加载的或安装的驱动程序提供可靠地监控。用户就必须键入一个设备名,或者应用程序会尝试常用的设备名。