首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

以Linux为系统基于DSP的视频检测方案 02

以Linux为系统基于DSP的视频检测方案 02

 2.1 PCI总线设备驱动  PCI设备有3种物理空间:配置空间、存储器空间和I/O空间。配置空间是长度为256字节的一段连接空间,空间的定义如图3所示。在配置空间中只读空间有设备标识、供给商代码、修改版本、分类代码连同头标类型。其中供给商代码用来标识设备供给商的代码;设备标识用来标识某一特别的设备;修改版本标识设备的版本号;分类代码用来标识设备的种类;头标类型用来标识头类型连同是否为多功能设备。除供给商代码之外,其他字段的值由供给商分配。

  命令字段寄存器用来提供设备响应的控制命令字;状态字段用来记录PCI总线相关事件。
  基地址寄存器最重要的功能是分配PCI设备的系统地址空间。在基地址寄存器中,bit0用来标识是存储器空间还是I/O地址空间。基地址寄存器映射到存储器空间时bit0为“0”,映射到I/O地址空间时bit0为“1”。基地址空间中其他一些内容用来表示PCI设备地址空间映射到系统空间的起始物理地址。地址空间大小通过向基地址寄存器写全“1”,然后读取其基地址的值来得到。
  PCI设备的驱动过程主要包括下面几个步骤。
  首先,PCI设备的查找。在嵌入式操作系统中一般提供相应的API函数,在Linux操作系统中通过函数pcibios_find_device(PCI_VENDOR_ID,PCI_DEVICE,index,&bus,&devfn)能够找到供给商代码为PCI-ID,设备标识为PCI-DEVICE的第n(index+1)个设备,并且返回总线号和功能号,分别保存于bus和devfn中。
  第2步,PCI设备的配置。通过操作系统提供的API函数访问PCI设备的配置空间,配置PCI设备基址寄存器的配置、中断配置、ROM基地址寄存器的配置等,这样可以得到PCI的存储器空间和I/O地址空闲映射,设备的中断号等。在Linux操作系统中,访问PCI设备配置空间的API函数有pcibios_write_config_byte、pcibios_read_config_byte等,它们分别完成对PCI设备配置空间的读写操作。

  第3步,根据PCI设备的配置参数,对不同的设备编写初始化程序、中断服务程序以及对PCI设备存储空间的访问程序。
  2.2远程控制与通信链路的建立
  与Internet连接的数据链路方式主要有Ethernet方式和串行通信方式。Ethernet连接方式是一种局域网的连接方式,广泛应用于本地计算机的连接。通过Modem进行拨号连接的串行通信方式,可以实现远距离的数据通信,下面详细介绍串行通信接口协议方式。
  串行通信协议有SLIP、CSLIP以及PPP通信协议。SLIP和CSLIP提供一种简单的通过串行通信实现IP数据报封装方式,通过RS232串行接口和调试解调器接入Internet。但是这种简单的连接方式有很多缺陷,如每一端无法知道对方IP地址;数据帧中没有类型字段,也就是1条串行线路用于SLIP就不能同时使用其它协议;SLIP没有在数据帧中加上检验和,当SLIP传输的报文被线路噪声影响发生错误时,无法在数据链路层检测出来,只能通过上层协议发现。
  PPP(PointtoPointProtocal,点对点协议)修改了SLIP协议中的缺陷。PPP中包含3个部分:在串行链路上封装IP数据报的方法;建立、配置及测试数据链路的链路控制协议(LCP);
返回列表