嵌入式机器视觉系统中ARM与DSP的数据通信方法

发布者:朱雀最新更新时间:2011-05-30 关键字:机器视觉系统  数据通信 手机看文章 扫描二维码
随时随地手机看文章

DSP对数字信号和数值算法具有强大的运算处理能力,因而在信号采集与处理中被广泛应用,但其在任务管理、实时控制、人机交互等方面不占优势。而ARM微控制器则控制功能强大,可以加载嵌入式操作系统,且能够提供良好的人机交互、任务管理、网络通信等方面功能。因此,发挥DSP和ARM处理器各自的优势,采用ARM+DSP结构的设计方案已成为嵌入式系统的研究热点,倍受关注。通过嵌入式机器视觉系统的设计实例,阐述ARM与DSP有机结合的设计思想,重点研究ARM与DSP之间的数据通信。

1 嵌入式机器视觉系统总体方案
   
采用ARM+DSP结构的机器视觉系统总体结构如图l所示。以三星公司高性能ARM处理器S3C2440作为主控制器,配置并移植Linux操作系统,同时以TI公司的DSP芯片TMS320C5402为图像处理的协处理器,通过对DSP芯片自带的HPI接口的硬件连接方案和驱动程序设计,将二者有机地结合起来,各自发挥其独特优势,协调配合,完成目标采集、处理与视觉跟踪。


     首先由智能摄像机采集现场运动目标的图像,由ARM控制将数据存放在ARM与DSP的公共存储区域中,并通知信号处理模块DSP调用各种算法(帧间差分、图像分割、特征提取、形心计算等)对视频图像进行处理,完成目标的识别与定位,并将结果信息传给ARM处理器,由ARM控制步进电机,调整PTZ摄像机位姿(水平转动P-Pan、垂直转动T-Tilt、景深伸缩Z-Zoom),使其对准运动目标,实现实时跟踪。此外,ARM处理器还负责多任务管理、人机交互及中断报警等。
    作为双核系统,双核各自拥有很好的性能,于是主机ARM与协处理器DSP之间能否进行快速可靠的数据交换,直接决定机器视觉系统的运行效率。在硬件设计方面,采用主机并行接口HPI实现主机ARM与协处理器DSP之间的硬件直连,设计简单方便,时钟频率可达到DSP时钟频率的1/5,能够支持DSP与主机之间的高速数据传输。在软件设计方面,则移植嵌入式Linux操作系统,将HPI看作字符设备完成了驱动程序的设计。

2 双机通信硬件设计
2.1 HPI接口简介

    主机接口(HPI)是TI公司C54x系列定点信号处理器(DSP)内部自带的接口部件,通过它可以方便地实现DSP与其他主机连接。C54x中的主机接口主要有3种类型:标准8位主机接口HPI-8,增强8位主机接口HPI-8,增强16位主机接口HPI-16。增强型的HPI可以允许主机访问DSP所有的片上RAM单元,而标准主机接口只允许访问固定的2 K片上RAM。本文中用到的TMS320C5402拥有增强HPI-16主机接口。它由以下5部分组成:
    1)HPI存储器(DARAM)  传送主机与DSP之间的数据,在一个机器周期内能被访问2次,可以用作通用的双导址数据RAM或者程序RAM。
    2)HPI地址寄存器(HPIA)  只有主机能对其进行直接访问。该寄存器中存放着当前寻址的HPI存储单元的地址。
    3)HPI控制寄存器(HPIC)  地址002CH,主机和DSP都能对他直接访问,用来保存HPI操作的控制和状态位。
    4)HPI数据锁存器(HPID)  只有主机能对它进行直接访问。如果当前进行的是读操作,则HPID中存放的是要从HPI存储器中读出的数据;如果当前进行写操作,则HPID中存放的是将要写到HPI存储器的数据。
    5)HPI控制逻辑  处理HPI与主机之间的接口信号。
    接口电路中使用的引脚及其作用是:HD[15:O]:并行、双向、三态的数据总线,不传递数据时为高阻态;HHWIL:半字定义选择引脚,用来表示第一或者第二半字。当低电平时表示第一半字;当高电平时表示第二半字。:读/写输入信号。高电平表示主机要读HPI,低电平表示写HPI。若主机没有读/写选通,则可以用一根地址线代替。HCNTL0和HCNTLl控制引脚表示访问那个内部HPI寄存器和访问寄存器的类型。表l是具体功能说明。:输入主要作为HPI的使能信号,而信号控制HPI数据传递;它们三者生成内部选通信号就绪信号引脚,高电平表示HPI已经准备好执行1次数据传送;低电平表示HPI正忙。HINT:主机外部中断信号,用于HPI向主机发出中断。地址选通信号,仅用于复用方式。对于地址/数据总线分开的主机,必须把信号连接到高电平。


2.2 接口电路及其工作原理
   
S3C2440与TMS320C5402通过HPI连接的接口电路如图2所示,二者连接简洁方便,不必使用任何的附加电路。工作时,ARM首先初始化控制寄存器HPIC和地址寄存器HPIA,然后对HPID进行读写。初始化HPIC、HPIA时,通过A2、A3、A4、A5对应的地址进行操作,设置寄存器访问控制HCNTL0、HCNTL1、读写控制和半字访问HHWIL,配置好HPIC,并在HPIA中写入HPI存储器的起始地址。因为ARM主机具有独立的地址总线和数据总线,采用非复用方式,所以将HAS信号接高电平(VCC)。S3C2440的nWAIT信号与HPI的信号逻辑上反向,之间用反相器连接。  S3C2440通过片选信号nGCS2、读使能信号nOE、写使能信号nWE三者生成内部选通信号,控制对HPI的读写。

[page]

3 软件设计
3.1 Linux驱动程序
    Linux操作系统引入设备文件的概念,即把每一个设备都看作一个文件,像对待文件一样对设备进行操作。在Linux操作系统下,设备文件主要有3种类型:字符设备、块设备、网络设备,各自对应一种类型的设备驱动程序。本文设计的HPI接口的驱动程序属于字符设备驱动程序。
    Linux下的驱动程序是为相应的设备编写多个基本函数,填充file_operations结构体。其中定义了实现各种操作函数。如下所示:
   
    其中,open和release完成设备的打开和关闭。mmap为内存地址映射操作。驱动程序的设计是通过实现个中操作函数的基本功能,为相应的设备在应用层提供统一的接口。
    下面是本文中的HPI接口的驱动程序的设备入口hpi_open函数,它负责打开、准备设备。

    任何时候对字符设备(HPI)接口进行打开操作,都会调用设备的open入口点(hpi_open)。所以open函数(hpi_open)必须对将要进行的I/O操作(对DSP读写数据)做好必要的准备工作,例如设备是独占的,则open函数(hpi_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之间构造了新的页表。
    2)在构造好新页表之后,可以调用mmap函数完成映射,从图2可以看到硬件连接图中的连接DSP片选信号的是引脚nGCS2,从图3中查出它在内存空间对应的位置是0x10000000。mmap函数的原型是:mmap(void*start,sizelength,int prot,int flags,int fd,off_toff-set)。用以下语句获得映射后的地址:
    hpi_mmap_add=mmap(NULL,length,PROT_READ|PROT_WRITE,MAP_SHARED,hpi_fd,0)其中参数start指明描述字fd对应的“文件”(也就是/dev/hpi设备)在进程地址空间内的映射区的开始地址,必须是页面对齐的地址,通常设为NULL,让内核去自动选择开始地址。任何情况下,mmap的返回值为内存映射区的开始地址。这样通过对hpi_mmap_add操作,实现对起始地址为0x10000000的内存段操作。[page]


3.3 驱动程序的内核加载方式
   
在完成了嵌入式Linux驱动程序的编写测试工作后,下一步就是将编写好的驱动程序加载到系统内核,完成驱动硬件的工作。通常有以下两种做法:
    1)驱动程序直接编译入内核 采用这种方式编译的驱动程序在内核启动时就已经在内存中,运行时不需要再自行加载驱动,可以保留专用的存储器空间。
    2)驱动程序的模块加载 采用模块加载方式的驱动程序将会以模块形式存储在文件系统里,需要时动态载入内核即可,使得驱动程序按需加载,不用时节省内存,并且驱动程序相对独立于内核,升级灵活,授权方式灵活。本文就采用此种方式。
    因为采用的是模块加载方式,所以还需要借助两个重要的函数init_module()和cleanup_module(),完成模块的注册和卸载。具体源码可以参见/usr/src/linux/kemel/module.c。在2.3版本以后采用了新的方法命名这两个函数,定义exampie_init()代替init_module()函数,example_cleanup()代替cleanup_module()函数。在程序的最后用下面两行代码进行声明:
    module_init(S3C2440_HPI_init);
    module_exit(S3C2440_HPI_exit);
3.4 接口具体应用的设计方法
   
利用编写好的驱动程序,用户可以编写出不同的应用接口程序。下面给出自增写的方法:
    根据图2的接口电路,A2,A3,A4,A5对应的接口分别是HCNTI0,HCNTL1,,HHWIL,当自增模式写低半字时,它们的值应该分别是:HCNTL0=0,HCNTL1=1,,HHWIL=O,即A[5:2]=0010,在HPI_VA_BASE上增加偏移就可以对控制口线控制。所以自增写第一半字时,加00000100即:0x04,当自增模式写高字节时,它们的值应该是HCNTL0=0,HCNTL1=1,,HHWIL=1,即A[5:2]=1010。所以自增写第二半字时,加00101000即:0x28。对HPI控制寄存器写地址用如下宏定义:
   
    另外,在自增写过程中,对于作为接收端的DSP处理器,需要明确:1)是否准备就绪,可以进行写入数据,HPI-16中可以通过HPIC寄存器查询HRDY的状态,当HRDY为1时,即表明HPI已经准备就绪;2)指明要写数据的区域址,即dsp_add_w=(hpi.hpi_dsp_add),这是从应用程序传过来的参数,以确定写数据区域的起始地址。自增写的代码和注释如下:



4 结束语
   
通过一个嵌入式机器视觉系统工程实例,阐述了嵌入式系统中,用ARM+DSP的双核结构加载Linux操作系统,通过HPI接口进行通信和交换数据的设计方法,设计了HPI接口连接的硬件电路和Linux环境下的驱动程序,描述了该接口的具体应用设计方法。
    ARM+DSP的双核系统是新型的嵌入式机器视觉系统构建方法,而这里设计的通过HPI接口交换数据的双机通信方法,在机器视觉系统项目中被成功地应用证明,传输数据速度达到10 Mb/s,能够满足嵌入式系统对实时性的要求,具有广阔的应用前景。但在应用中需要注意的是:HPI接口的读写过程都涉及到公共的寄存器(HPI的控制寄存器、地址寄存器和数据寄存器)及HPI接口提供给主机(host)端读写的内存的相关操作,所以在特定的应用程序、驱动程序的设计中,一定要用信号量等互斥机制加以保护,否则,会出现读写错乱的现象。

 

关键字:机器视觉系统  数据通信 引用地址:嵌入式机器视觉系统中ARM与DSP的数据通信方法

上一篇:基于ARM处理器与GPRS技术的水厂监控系统
下一篇:基于ARM设计的嵌入式数控系统方案

推荐阅读最新更新时间:2024-03-16 12:36

单片机设计:多路数据通信设计方案
  本文介绍了利用MCS51单片机一组串行口完成两组不同类型串行口RS-232 和RS485数据通信。通过实例,介绍了各串行口通信特点,硬件电路实现,和软件设计中分时切换RS-232串口数据输出打印,和RS485串口采样数据收集等I/O功能。   1.引言   MCS51单片机标准构成只有一组全双工UART串行口,P3.0-RXD收、P3.1-TXD发,如果要完成多路串口收发,一般使用外部扩展芯片,例如:GM8123/25,完成一扩多路串口,但是,由于增加扩展芯片,造成硬件成本增加,PCB板面增大,抗干扰性下降等不良因素,因此能尽量使用现有串口,利用分时切换技术,完成串行口不同类型,不同端口的数据传送是优先选择。   2.硬
[单片机]
单片机设计:多路<font color='red'>数据通信</font>设计方案
单片机数据通信怎么学?这个工具要用好:串口通信
刚开始学单片机的你,是不是会因用程序把LED点亮而感到高兴,会因用程序把数码管点亮而感到高兴。这是好事,这也是想继续学习下去的动力。 但是到了与数据相关的实验时,却感觉很难有所进步。有时候,把驱动写好了,下载到单片机后,一点反应都没有,可是又不知道问题出在哪里,数据通信又不像LED那样可以用万用表测出到底有没有电。 这是学习单片机和STM32的一道坎。又或者说,这是一条河,阻拦着你的去路的河,有一条河你会怎么办?过去的方法很多,但是笔者觉得较快的方法就是借助原有工具渡过去。过去之后你会发现河的那边是一个不一样的世界。 那这个原有的工具是什么呢?那就是 串口通信 。 串口通信介绍 串口通信是指外设和计算机间,通过数据信号
[单片机]
在EPP模式下利用并口实现与DSP高速数据通信
    摘要: DSP与PC机之间进行高速数据通信是DSP的一个重要应用。本文分析了并口处于EPP模式下与ADSP21060之间的高速数据交换的原理,同时详细讨论了其硬件设计的结构图及其相应的并口程序设计。     关键词: 计算机并口 EPP DSP FIFO 随着技术的进步和大量外设的增加,不仅要求计算机并行口可以连接打印机,而且可以连接到其他外设,并要求能够双向传输数据,对高速外设还要求高速数据传输,如DPS。在科技飞速发展的今天,DSP的处理能力和速度也快速提高,广泛用户在科学研究、军事及通信等电子领域。在这些应用中免不了要和PC机进行高速数据传输。计算机并口传统的传输模式为SPP(标准并口),数据传
[网络通信]
DTMF芯片HT9170在数据通信中的应用
    摘要: 双音多频(DTMF)技术是在电话机中实现电话号码快速传输的一种可靠技术,它以其很强的抗干扰能力和较高的传输速度广泛用于电话通信系统和数据通信系统。文中介绍了DTMF的技术原理和HOLTEK公司生产的DTMF芯片HT9170的结构功能,给出了它们在数字通信中的应用电路和具体的系统框图。     关键词: 双音多频 数据通信 解码 HT9170 1 DTMF的原理 DTMF(Double Tone MulitiFrequency,双音多频)作为实现电话号码快速可靠传输的一种技术,它具有很强的抗干扰能力和较高的传输速度,因此,可广泛用于电话通信系统中。但绝大部分是用作电话的音频拨号。另外,它也可
[网络通信]
简单的机器视觉系统一般包括哪几个部分?
机器人视觉系统一般由光学系统(光源、镜头、工业相机)、图像采集单元、图像处理单元、执行机构及人机界面等模块组成,一套最简单的机器视觉系统包括视觉成像部分、图像处理部分、运动控部分制等: 1.视觉成像部分 视觉成像又包含几个典型组件: 光源,镜头,工业相机。 光源和镜头都需要我们掌握光学知识,不同的打光方式,可以让相机对物体产生完全不同的成像;而镜头的倍率,焦距,视野等的选择不同直接决定了成像的逼真度。对于一名机器视觉工程师来说,掌握如何选择镜头,如何选择光源,如何确定打光方式是最基本的技能。 工业相机需要我们掌握光电知识,掌握相机传感器的区别,掌握图像成像的基本知识如清晰度,动态范围,视场角等等,这样我们才能根据需求和场景选择正
[机器人]
基于CPLD的OMAP-L137与ADS1178数据通信设计
   引 言   串行外围设备接口(Serial Peripheral Interface,SPI)总线技术是Motorola公司推出的一种高速同步串行输入/输出接口,近年来广泛应用于外部移位寄存器、D/A转换器、 A/D转换器、串行EEPROM、 LED 显示器等外部设备的拓展。SPI总线是一种三线同步总线(CLK、SI-MO、SOMI),可以共享,便于组成带多个SPI接口的控制系统。其传输速率可编程,连接线少,具有良好的拓展性。    ADS1178 是一款典型的具有SPI接口的A/D转换器,它可以方便地与带有SPI接口的处理器或控制器相连接。 OMAP -L137是一款处理能力强、外接存储空间大、集成度高、外设管理方便的
[单片机]
基于CPLD的OMAP-L137与ADS1178<font color='red'>数据通信</font>设计
RS-485总线理论及实际应用
1、 概述   随着数字技术的发展和计算机日益广泛的应用,现在一个系统往往由多台计算机组成,需要解决多站、远距离通信的问题。在要求通信距离为几十米到上千米时,广泛采用RS-485收发器。RS-485收发器采用平衡发送和差分接收,因此具有抑制共模干扰的能力,加上接收器具有高的灵敏度,能检测低达200mV的电压,故传输信号能在千米以外得到恢复。使用RS-485总线,一对双绞线就能实现多站联网,构成分布式系统,设备简单、价格低廉、能进行长距离通信的优点使其得到了广泛的应用 2、 RS-485总线的理论 在自动化领域,随着分布式控制系统的发展,迫切需要一种总线能适合远距离的数字通信。在RS-422标准的基础上,EIA研究出了一种支持
[嵌入式]
SEP3203处理器的FPGA数据通信接口设计
SEP3203处理器是由东南大学国家专用集成电路系统工程技术研究中心设计的16/32位RISC微控制器,面向低成本手持设备和其他通用嵌入式设备。该处理器内嵌ARM7TDMI处理器内核,为用户提供了面向移动终端应用的丰富外设、低功耗管理和低成本的外存配置,整个芯片可以运行在75 MHz。数据通信系统使用的主要功能模块如下:20 KB片上零等待静态存储器(eSRAM);外部存储器接口控制器(EMI);中断控制器(INTC);DMA控制器(DMAC)。 系统中使用的FPGA为Altera公司的Cyclone系列中的EP1C6Q240C8,拥有丰富的I/O资源和逻辑资源,外部接口遵循SRAM时序。它主要负责提供信号的A/D采样频率,并将A
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved