基于ARM 与TMS320C6416的接口设计.doc_第1页
基于ARM 与TMS320C6416的接口设计.doc_第2页
基于ARM 与TMS320C6416的接口设计.doc_第3页
基于ARM 与TMS320C6416的接口设计.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于ARM S3C2410与TMS320C6416的接口设计摘要:以Samsung公司的ARM9系列的S3C2410和TI公司的TMS320C6416为例,详细介绍S3C2410芯片外部I/O与C6416芯片HPI口硬件连接技术和基于ARM uClinux的HPI驱动程序开发。设计结果实现了接口数据稳定快速读写,此设计方案对其他双核接口设计开发有很好的指导作用。 Web技术和多媒体技术的发展成为新一代嵌入式实时监控系统的重要特性。多媒体的JPEG,MPEG2/4等标准视频数据格式及各种库函数都使用32位格式和32位的编程软件,这对32位的嵌入式微处理器的实时性提出更高的要求。ARM+DSP双核嵌入式系统,以32位ARM为核心CPU,DSP作为协处理器负责视频采集压缩,从而减轻ARM核心CPU的负担,使之更好地发挥网络传输和协调控制的功能,进一步提高系统的实时性和稳定性。 本研究结合实验室的基于虚拟动态模拟的远程机器人状态检测与智能控制技术的设计方案,主要研究ARM S3C2410处理器与DSP C6416芯片的连接软硬件设计,并介绍ARM与DSP连接的HPI接口驱动程序的编程实现方法。1 系统硬件结构设计 系统整体结构框图如图1所示。 系统实现在本地通过浏览器,视频终端显示远程机器人状态视频信息,并通过本地指令控制台对机器人进行控制。S3C2410实现远程上位机功能,协调与DSP之间数据交换,并将数据通过网络发送到本地。此外S3C2410通过CAN总线上ARM7 S3C44B0控制机器人智能节点。2 S3C2410与TMS320C6416硬件连接设计2.1 ARM外部I/O与HPI硬件连接 S3C2410与TMS320C6416硬件接口如图2所示, S3C2410的两根地址线ADDR3:2接HPI口的HCNTL1:0,以实现ARM对HPI口3个寄存器的访问。S3C2410用ADDR4代替读写选通信号连接HPI口的HR/W。S3C2410片选信号nGCS1接到HPI片选HCS上,将DSP的HPI接口作为外部物理地址映射到S3C2410相应的内核空间,位于外部I/O接口BANK1地址0x080000000x0FFFFFFF上。2.2 接口工作原理 S3C2410外部I/O对HPI接口3个寄存器(HPIA,HPIC和HPID)分别实现了ARM与DSP软件握手与中断请求,锁存ARM访问DSP存储单元地址,以及数据交换。S3C2410访问顺序,首先是初始化HPIC寄存器和HPIA寄存器。接下来是HPID寄存器数据读写。对于HPID读操作,S3C2410完成对HPIA访问后,DSP的EDMA自动将数据从HPIA寄存器所指定的地址预取到HPID。HPID有两个地址,s3C2410对一个地址访问,HPIA保持不变,访问其外一个地址时,HPIA地址自动加一。对于写操作原理类似,S3C2410完成对HPID的写操作后,EDMA将数据写到HPIA指定的存储地址单元里。s3c2410同样对HPID两个地址进行访问,HPIA地址随新数据的写入而更新,从而实现s3C2410对HPID的连续写入。3 HPI接口设备驱动程序软件设计3.1 Linux设备驱动程序 Linux设备类型分为3种:字符设备,块设备和网络设备。本设计将HPI外设归类于字符设备。在系统内部,字符设备驱动程序都提供类似文件操作的open,close,read,write,ioctl等函数人口,详见中的fileoperations数据结构。初始化字符设备时,设备驱动程序向Linux登记,并在字符设备向量表中增加一个device_struct数据结构条目,这个设备的主设备表示符用做这个向量表的索引。HPI设备驱动程序在内核与用户空间注册注销及系统调用过程如图3所示。3.2 HPI设备驱动程序设计3.2.1 HPI接口设备数据结构及其文件系统接口定义 HPI接口设备数据结构是自定义的,它完成各个不同系统调用之间的协调工作,因此在设备驱动中是全局数据结构变量。具体定义如下:Struct HPI_DEVICEdevfs_handle_t devfs; /devfs devicechar isopen; /device status:1=opened,0=closedint MajorID;kdev_t MinorID;U16 DriverType;char *HpiBaseBufRead:char *HpiBaseBufWrite;wait_queue_head_t rd_wait; /read timeoutsstruct semaphore sem; /lock to prevent concurrent reads or writes#if defined(DMA_SUPPORT) /DMADMA_CHANNEL_INFO DmaInfoNUMBER_OF_DMA_CHANNELS;Spinlock_t LockDmaChannel;#endifstruct file_operations hpi_fops; 文件系统接口定义是用户使用HPI设备的接口,合理定义设备驱动程序在内核中的源码就能简化应用程序的设计。Static struct file_operations hpi_fops=owner:THIS_MODULE,open:hpi_open,read:hpi_read,write:hpi_write,ioctl:hpi_ioctl,mmap:hpi_mmap,release:hpi_release,;3.2.2 读取HPI接口数据 HPI设备驱动程序的开发大多数工作都集中在struct file_operations中接口函数的编写上,这些函数是应用程序通过内核操作硬件设备的人口函数,下面将给出对HPI接口读数据的关键代码。#define HPI_BASEADDR 0x08000000 /BANK 1#define bHPI(Nb) _REG1(HPI_BASEADDR+(Nb)#define HPIC_WRITE bHPI(0x0)#define HPIC_READ bHPI(0x40)#define HPIA_WRITE bHPI(0x10)#define HPIA_READ bHPI(0x50)#deftne HPID_WRITE bHPI(0x20)#define HPID_READ bHPI(0x60)Static ssize_t hpi_read(struct file *file,char *buf,size_t count,loff_t *oppos)Struct HPI_DEVICE *pHpiDevice;int i,hpi_size;size_t ret;down(&(pHpiDevice-sem);hpi_size=1024;for(i=0;iHpiBaseBufReadi)= HPID_READ;/读取1K到HpiBaseBufRead缓冲区IBUF_SIZE =hpi_size:ret=copy_to_user(buf,(_U8 *)(&pHpiDevice-HpiBaseBufRead),IBUF_SIZE) ? -EFAULT:ret;up(&(pHpiDevice-sem);return IBUF_SIZE;4 结束语 随着DSP对密集复杂数据处理能力的加强,ARM对控制和网络功能的进一步完善,基于两

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论