Linux下视频远程监控系统设计与实现4
- 格式:pdf
- 大小:384.70 KB
- 文档页数:12
或 u esr e ) 核 注销设备, 时 ngt bd ( r i l v 从内 中 e k 同 释放占 主设 用的 备号。
2 设备的 打开与释放 ) 打开设 通过调 i 一pri s 构中的函数。e ) 备是 用f e tn结 lo ao e pn 来完成的, ( 它是 驱动程序用来为 今后的 操作完成初始化准备工作的。 在大部分驱动程序中, oe ) p( n 通常需要完成下列工作: 1 .检查设备相关错误,如设备尚未 准备好等。 2 .如果是第一次打开,则初始化硬件设备。 3识 设 备号, 有必 更新 操作 前 指针f o . 别次 如果 要则 读写 的当 位置 os p
程序的设计需要较多得考虑 P I C 总线的使用特性。
311 u 下设备驱动结构 .. Lnx i
了 解设备驱动程序的 基本结构 ( 或者称为框架) 对开发人员而言是非常 , 重要的,L u i x的设备驱动程序大致可以 n 分为如下几个部分:驱动程序的注 册与注销、设备的打开与释放、设备的读写操作、设备的控制操作、设备的 中断和轮询处理。
万方数据
西南交通大学硕士研究生学位论文
第 1页 6
oe) 数时 的 个设备 件指 p( nP 分配 一 A 文 针,bv mp t m a通过系 调用m a) t _ 统 mp实 (
际完成设备存储空间到用户程序空间的地址映射。 驱动程序在内 开辟了3 个帧大小的视 存中 2 频缓冲区队 每个缓冲区的 列,
中断返回
图 3 B88 - t 驱动中断 模块流程 3 7 处理
万方数据
西南交通大学硕士研究生学位论文
第1页 7
325 .. 控制和数据读写模块
B 7驱 程 通过bvo 结 中 函 t it ,向 用 序 序 t8 动 8 t fs 构 的 数bvol t p _ t c0 应 程 提 _
读取中断状态寄存器 be (T7 ITSA ) ta B 88 N _ T rd s e T
清除中断 状态寄 存器 b ret, 88 N T T t i(aB 7J 毛SA ) w tst T 入的中断状态寄存
5 信息,判断属性
根据判断结果,分别调用具体 的O T中断处理程序
西南交通大学硕士研究生学位论文
第1页 2
第 3章 Lnx i 下视频采集编码实现 u
31 u 下 P I . i L x C n 设备驱动
视频采集部分所使用的是基于 B88 C 总线视频捕捉卡, t 的P I 7 作为一个 PI C 总线主设备,B88 t 不需要额外的板上缓存来存储视频数据。基于B88 7 t 7 的视频采集卡有效地利用了P I C 总线提供的 3 B 3 / M S的传输速率, D A 在 M 通道的控制下, 2 3 位的的图象数据通过P I C 总线传送。因此对于视频卡驱动
4 )设备的控制操作 除了 读写操作外, 应用程序有时还需要对设备进行控制,这可以通过设
备驱 程序中 函 it ) 完 it ) 用 与具 备 动 的 数 ol 来 成。ol 的 法 体设 密切关联,因 c ( c(
此需要根据设备的实际情况进行具体分析。 5 )设备的中断和轮询处理 对于不支持中断的硬件设备,读写时需要轮流查询设备状态,以便决定 是否继续进行数据传输。如果设备支持中断,则可以按中断方式进行操作。
第 1页 3
字符 备的 操作 对比 读写 相 较简单, 设 直接使 数 rd) wi( 用函 e ( a 和 r ) t 就可 e 以 但如 块设 话, 要调 数b c d) b c ̄ ( 了。 果是 备的 则需 用函 lk e (和 lkw t ) o 一a r o r i e
来进行数据读写,这两个函数将向设备请求表中增加读写请求,以便 Lnx i u 内核可以对请求顺序进行优化。由于是对内存缓冲区而不是直接对设备进行
331 的能力 . VL . 4 查询接口
使用 VDO G A i t调用 C C P l 来获得一个视频设备的能力信息。 II o c 通过这
个 it命 来 充 ve c al 构 并 返回 个 构体的 柄。 ol 令 填 io bi c d a iy结 体 且 这 结 p t 句
供对 件 控 接口 最终调 2 c n c na ( 和I 的 硬 进行 制的 。 用i l t o n d c s n ) i e n 完成 O口
控制信息交换。
视频卡的 模块主要完成的 读写 是将f pve 数据 i ri 域的 传递给d a l it e a 指针 t
的 作, 种方 视频数 操 这 式的 据读写需 建 要 立在己 经为f_ri 域建 与 i i t 立了 l ve e p
1 )驱动程序的注册与注销
向 系统增加一个驱动程序意味着要赋予它一个主设备号, 这可以 通过在
驱动 (或者 e s bd (来完 gt h v e r gt l v e k
成。 而在关闭 字符设备或者块设备时, 则需要通过调用 ur i r e( n gt cr v ) es h e d
计数加 1( 用来标记当前使用该视频卡驱动的 用户态应用程序的数目) 。 在 bv a 模块中, e e tr s e l 完成资源释放工作, fe ke 设备文件句柄 t r h ,销 毁视频数据缓冲区队列v e u qe , io f u 用户计数减 1 db ue e
323 .. 内存映射模块
操作的,因 此能很大程度上加快读写 速度。 如果内 存缓冲区中 没有所要读入 的数据,或者需要执行写操作将数据写入设备, 那么就要执行真正的数据传
输, 是 过 用 据 构b d er( 的 数rutn) 完 。 这 通 调 数 结 l e s c中 函 e ee( 成的 k s vt u q sf s 来
视频采集卡I 存的地址映射时才能顺利进行。 O内
326 .. 卸载设备模块
卸载设备模块与初始化设备模块是相对应的,主要是调用函数 pi gt dv ( 从 L u cur i r e ) i x内核中注销 P I n s rr e e i n C 设备驱动程序: 调用
bvu esr io注销 v e lu (ix下通用视频系 t ngt v e t ri d _ e io ix n d 4n L u 统调用 接口) 、 r i fe 释放中断资源。 er q
万方数据
西南交通大学硕士研究生学位论文 第1 页 4 在用模块方式实现 P I C 设备驱动程序时,通常至少要实现以下几个部 分:初始化设备模块、中断处理模块、 设备打开模块、 数据读写和控制模块、 设备释放模块、设备卸载模块、驱动装载模块、驱动卸载模块。
32 u 下 B88 . nx T7 视频卡驱动实现 L i
驱动程序采用模块化的设计结构,视频采集芯片为 B 88 整个视频卡 T7 驱动的结构框如图 31 -:
oe 块 p模 n
ma mp 模
块
it 块 ol c 模
cs le o 模块
B88 t 公共处理模块 7
图 31 7 驱动模块图 - B88 t
321 .. 驱动程序加载模块
当 Lu i x内核启动并完成对所有 P I n C 设备进行扫描、登录和分配资源 等初始化操作的同时, 会建立起系统中 所有 P I C 设备的拓扑结构,此后驱动 程序需要对B88 t 视频卡设备进行初始化,具体步骤如图3 : 7 - 2
配置 好所有的 PI 备, C 设 包括中 断号以 I 及 / O基址, 在 / c c 中 并 文件p /i o rp 列出 所有找到的 P I C 设备,以 及这些设备的 参数和属性。 Lu i x驱动程序通常使用结构 (r t 来表示一 n su ) tc 种设备,而结构体中的
变量则代表某一具体设备,该变量存放了 与该设备相关的所有信息。好的驱 动程序都应该能驱动多个同 种设备,每个设备之间用次设备号进行区分,如 果采用结构数据来代表所有能由该驱动程序驱动的设备, 那么就可以简单地 使用数组下标来表示次设备号。
312 设备特点 .. P! C
PI C 设备上有三种地址空间: C 的 】 空间、 C 的存储空间和 P I PI / O PI C 的配置空间。C U 可以访问 P I P C 设备上的所有地址空间,其中 】 / O地址空 间和内 存地址空间提供给设备驱动程序使用, 而配置空间则由 L u i x内核中 n 的 PI C 初始化代码使用。内 核在启动时负责对所有 P I C 设备进行初始化,
33 视频采集系统调用接口 . L V 4
V 1 全称为 V e L u,它主要提供给应用程序与 4的 io ix d4n 视频捕捉有关的 A I bv是 V1 P. t t 4 的驱动,它的功能只是从 视频卡的硬件上取出 数据, 而在
lu i x上, n 我们要用 lu i x提供 自 n 带的视频开发包 v1 4 来为我们的上层应用 程序提供一个上层应用程序与下层硬件之间的一个中间层。
内存映射用来将设备内存映射到进程内 存中, 这样可以增加读取的速度 fe i l 适用于大量数据的读写。在 B88 t 视频驱动中具体调用 bv 7 t t
*l su v aa c * a i tc m t t 实现内 射, f , t r su v ) e r e r m 存映 其中 f i l e为用户 程序调用
中断申请 rqe i eus r t q
初始化中断 i口r e(v n qgt i r b)
图 32 7 驱动程序加载流程图 - B88 t
322 n r l s 模块 . Oe 和 ee e . p a
在byOe这个 n 模块里主 成 设 件句 h k ao ;进 t- t p 要完 分配 备文 柄f= mlc 并 lQ 行f初 化参 h 始 数设置, 后初 化视 缓 链表 v e u q u it用户 而 始 频 存 io f e ( db u n) e i;
万方数据