新闻中心

EEPW首页>嵌入式系统>设计应用> 基于嵌入式硬件平台的划片机视觉系统设计

基于嵌入式硬件平台的划片机视觉系统设计

作者: 时间:2016-12-02 来源:网络 收藏

3.2 ARM Linux设备驱动编写

Linux的内核是由设备管理、进程管理、文件系统和内存管理一起组成,Linux设备驱动可以分为字符类设备,网络接口类设备,块类设备和其他非标准驱动。PCI设备被看作是字符型设备。每个PCI外设都由一个总线号、一个设备号和一个功能号来标示,共有3个访问空间,即I/O端口、内存空间和配置寄存器。PCI配置空间由256个字节组成,且每个设备功能都有一个配置空间,用于决定PCI器件的工作方式和映射到系统中的地址。

添加系统的PCI设备驱动主要步骤:

(1)创建1个PCI设备,命令:mknod pci_dev c247 0,其中c表示字符设备,247表示主设备号,0代表次设备号。

(2)初始化外部设备,将函数pci_ dev_ init()添加到ARMlinux/linux/drivers/chal/mem.c文件的chr _dev_ init()中,chr _dev _init()将在系统启动时被调用,会完成设备驱动的初始化工作:

(3)设备驱动文件pci__dev.c的编写。设备注册接口函数,中断处理函数等构成了PCI设备驱动主要代码。即file_operationgs根据S3C2510的PCI配置寄存器所给定的基址来读写数据。PCI定义的I/O空间是32位地址空间,内存和I/O可使用相同的配置接口。

(4)PCI设备的加载。ARMlinux不支持设备驱动的动态加载,因此需要把驱动编译到ARM Linux内核中,首先需修改makefile文件,添加下行:obj_$(CONFIG_ PCI_ DEV)+=pci _dev.o接着修改config.in, 添 加 :boolpci _dev installCONFIGPCI DEV,添加这行的目的是为了在配置目标板Linux系统内核时以便对这个设备进行选择。最后在目标系统的makefile中添加设备节点:pci _dev,C,247,0这样在配置Linux内核时就可以选择pci_dev install,然后进行编译,这样PCI设备驱动就加载到了ARM Linux系统中。

4 主控单元图像采集编程

内核针对数码摄像头等视频设备提供V4L函数接口,V4L提供针对视频设备进行基本的I/O操作的接口函数如:open、read、write、close,中断处理,内存映射及I/O通道的控制ioctl等,并定义在struct file_operations数据结构体中。当应用程序对设备进行诸如open、read、Write、close等系统调用操作时,内核将通过file_operation结构访问驱动程序提供的函数接口.具体的采集程序如下:

PCI接口视频采集流程如图5所示。

V4L为视频采集图像提供两种方案①:read()直接读取,②:mmap()内存映射。read()通过内存缓冲区


上一页 1 2 3 下一页

评论


技术专区

关闭