嵌入式机器视觉系统中ARM与DSP的数据通信设计方案
1 嵌入式机器视觉系统总体方案
采用ARM+DSP结构的机器视觉系统总体结构如图l所示。以三星公司高性能ARM处理器S3C2440作为主控制器,配置并移植Linux操作系统,以TI公司的DSP芯片TMS320C5402为图像处理的协处理器,通过对DSP芯片自带的HPI接口的硬件连接方案和驱动程序设计。
由智能摄像机采集现场运动目标的图像,由ARM控制将数据存放在ARM与DSP的公共存储区域中,并通知信号处理模块DSP调用各种算法对视频图像进行处理,并将结果信息传给ARM处理器,由ARM控制步进电机,调整PTZ摄像机位姿使其对准运动目标,实现实时跟踪。ARM处理器还负责多任务管理、人机交互及中断报警等。双核系统的双核各自拥有很好的性能,主机ARM与协处理器DSP之间能否进行快速可靠的数据交换,直接决定机器视觉系统的运行效率。
2 双机通信硬件设计
2.1 HPI接口简介
主机接口(HPI)是TI公司C54x系列定点信号处理器(DSP)内部自带的接口部件,通过它可以方便地实现DSP与其他主机连接。增强型的HPI可以允许主机访问DSP所有的片上RAM单元,而标准主机接口只允许访问固定的2 K片上RAM。这里用到的TMS320C5402拥有增强HPI-16主机接口。由以下5部分组成:
1)HPI存储器(DARAM) 传送主机与DSP之间的数据,在一个机器周期内能被访问2次;
2)HPI地址寄存器(HPIA) 只有主机能对其进行直接访问。该寄存器中存放着当前寻址的HPI存储单元的地址;
3)HPI控制寄存器(HPIC) 地址002CH,主机和DSP都能对他直接访问,用来保存HPI操作的控制和状态位;
4)HPI数据锁存器(HPID) 只有主机能对它进行直接访问;
5)HPI控制逻辑 处理HPI与主机之间的接口信号。
2.2 接口电路及其工作原理
3 软件设计
3.1 Linux驱动程序
在Linux操作系统下,设备文件有3种类型:字符设备、块设备、网络设备,各自对应一种类型的设备驱动程序。这里的HPI接口的驱动程序属于字符设备驱动程序。
Linux下的驱动程序是为相应的设备编写多个基本函数,填充file_operations结构体。其中定义了实现各种操作函数。如下所示:
open和release完成设备的打开和关闭。mmap为内存地址映射操作。下面是本文中的HPI接口的驱动程序的设备入口hpi_open函数,它负责打开、准备设备。
任何时候对字符设备(HPI)接口进行打开操作,都会调用设备的open入口点(hpi_open)。所以open函数(hpi_open)必须对将要进行的I/O操作做好必要的准备工作,例如设备是独占的,则open函数必须将设备标记成忙状态,如上面例程中的①处两行所示。
3.2 驱动程序中映射的实现
由于在Linux系统中,用户应用程序不能直接对驱动程序的内存空间进行操作,因此必须用到内存映射机制。内存映射是指把内核中的特定的内存空间映射到用户空间的内存中去。
mmap系统调用映射一个设备,意味着使用户空间的一段地址关联到设备内存上,实际上就是对设备的访问。
mmap方法是file_operations结构的一部分,要实现映射必须分两步:
1)调用内核中的remap_page_range函数,它的功能是:构造用于映射一段物理地址的新页表,实现了内核空间与用户空间的映射,其原型如下:
函数参数的确切含义如下:unsigned long virt_add为重映射开始处的虚拟地址。这个函数为虚地址空间virt_add和virt_add+size之间的范围构造页表。unsigned long phys_add为虚拟地址应该映射到的物理地址。unsigned long size为被重映射的区域的大小,以字节为单位。pgprot_t prot为新VMA所请求的“保护”属性。驱动程序不必修改保护,在vma->vma_page_prot中找到的参数可不加改变地使用。
本课题中使用mmap调用的代码如下:
这样就为DSP的HPI接口所对应的总线物理地址:0x10000000(对应nGCS2)在vma->vm_start和vma->vm_end之间构造了新的页表。
hpi_mmap_add=mmap(NULL,length,PROT_READ|PROT_WRITE,MAP_SHARED,hpi_fd,0)其中参数start指明描述字fd对应的“文件”在进程地址空间内的映射区的开始地址,必须是页面对齐的地址,通常设为NULL,让内核去自
- 嵌入式机器视觉系统中ARM与DSP的数据通信方法(11-20)
- 机器视觉系统中常用工业相机的分类(12-15)
- 机器视觉系统在汽车发动机装配线上的应用(08-20)
- 机器视觉系统在汽车制造行业的应用(06-08)
- Linux嵌入式系统开发平台选型探讨(11-09)
- 基于ARM体系的嵌入式系统BSP的程序设计方案(04-11)