嵌入式机器视觉系统中ARM与DSP的数据通信设计方案
hpi_mmap_add=mmap(NULL,length,PROT_READ|PROT_WRITE,MAP_SHARED,hpi_fd,0)其中参数start指明描述字fd对应的“文件”在进程地址空间内的映射区的开始地址,必须是页面对齐的地址,通常设为NULL,让内核去自动选择开始地址。任何情况下,mmap的返回值为内存映射区的开始地址。这样通过对hpi_mmap_add操作,实现对起始地址为0x10000000的内存段操作。 3.3 驱动程序的内核加载方式 将编写好的驱动程序加载到系统内核,完成驱动硬件的工作。 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。所以自增写第一半字时,加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的双核系统是新型的嵌入式机器视觉系统构建方法,这里设计的通过HPI接口交换数据的双机通信方法,在机器视觉系统项目中被成功地应用证明,传输数据速度达到10 Mb/s,能够满足嵌入式系统对实时性的要求,具有广阔的应用前景。
- 嵌入式机器视觉系统中ARM与DSP的数据通信方法(11-20)
- 机器视觉系统中常用工业相机的分类(12-15)
- 机器视觉系统在汽车发动机装配线上的应用(08-20)
- 机器视觉系统在汽车制造行业的应用(06-08)
- Linux嵌入式系统开发平台选型探讨(11-09)
- 基于ARM体系的嵌入式系统BSP的程序设计方案(04-11)