DSP/ARM双核系统的通信接口设计

发布者:EnigmaticCharm最新更新时间:2012-12-04 来源: 维库开发网关键字:双核系统  通信接口  Linux 手机看文章 扫描二维码
随时随地手机看文章
  嵌入式系统的核心是嵌入式微处理器和嵌入式操作系统。早期的嵌入式系统硬件核心是各种类型的8位和16位单片机;而近年来32位处理器以其高性能、低价格,得到了广泛的应用。近年来,又出现了另一类数据密集处理型芯片DSP。DSP由于其特殊的结构、专门的硬件乘法器和特殊的指令,使其能快速地实现各种数字信号处理及满足各种高实时性要求。随着现代嵌入式系统的复杂度越来越高,操作系统已成为嵌入式系统不可缺少的部分。免费的嵌入式操作系统,如 Linux等,随着自身不断的改善,得到了飞速的发展。Linux是一个免费的、强大的、可信赖的、具有可伸缩性与扩充性的操作系统。Linux实现了许多现代化操作系统的理论,并且支持完整的硬件驱动程序、网络通信协议与多处理器的架构,其源码的公开更有利于操作系统嵌入式应用。

  基于上述分析,笔者开发了基于ARM和DSP芯片的双核嵌入式系统。系统充分利用了ARM和DSP的各自特点,既可以使用ARM和DSP芯片进行协同开发,也可以利用ARM或DSP进行独立开发。操作系统选用了Linux,以利于充分发挥系统的效能。

  1 系统的总体设计

  由于ARM芯片的控制性能较强,在嵌入式系统中ARM主要用于控制和少量的数据处理。这样,一方面要求CPU要低功耗和有足够的时钟频率来运行操作系统,以满足便携式的要求;另一方面也要求其有足够种类的接口,以利于性能的扩展。基于以上考虑,在开发平台中选用HY7202作为CPU。

  DSP作为数据运算部分,可以充分发挥其对数字信号处理的独特优势。TI公司的C54xx系列16位定点DSP以其高性价比普遍应用于各类通信、便携式应用当中。考虑到对数字视频和数字图像等大数据吞吐量应用场合的处理要求,选用TI公司的TMS320C5416芯片。其时钟频率最高可达到 206 MHz,系统总体框图如图1所示。


  系统软件平台结构如图2所示,软件平台分ARM部分和DSP部分,以及ARM和DSP的接口软件设计部分。ARM部分以Hynix公司PATCH的ARM Linux Version 2.4.18为操作系统,并在此基础之上移植Linux标准库GLIBC、LIBJPG、LIBPNG、IMLIB、LIBWWW、LIBFLASH及汉字库。图形界面以Microwindows 0.9及其控件库FLNX提供嵌入式图形界面平台。系统平台具有强大的网络通信功能,通过平台WEBSERVER、FTP、TELNET、INETD等网络工具和应用程序能方便地开发基于Internet的网络终端、远程控制、远程数据采集、远程数据处理产品。在应用程序层上,系统平台集成窗口管理程序, 全中文化网络浏览器(支持HTML、XML),Flash播放器(支持Flash4、Flash5、Flash6),文本编辑器,游戏等用于PDA开发, 机顶盒上网解决方案,以及可用于嵌入式数据采集、处理的虚拟示波器等。[page]


  DSP部分通过提供完整的HPI驱动程序(DSP部分)及通信协议,通过增加相应数据处理程控制算法程序,利用HPI并行接口与主机ARM通信进行数据交换,可用于各种实时处理,控制领域。

  此外,DSP和ARM可以各自作为独立的系统使用,它们均有完整的子系统软件。子系统之间联系的核心是DSP器件本身带有的HPI接口。

  2 ARM和DSP的通信接口设计

  (1) DSP的HPI口介绍

  HPI是TMS320C54X等芯片提供的一种并行端口,专门用于DSP和外部主机并行通信。HPI接口有标准HPI接口和增强型HPI接口。对于C5416和C5420DSP器件,它们的主机接口为增强型主机接口。标准HPI接口是一个8位总线接口,通过2个8位字节组合在一起形成1个16 字。增强型HPI接口分8位和16位两种。8位增强型主机接口和标准HPI接口操作时序一样,主要区别在于标准型只能访问2 KB专用RAM,而增强型可以访问DSP的整个RAM区。16位增强型HPI接口采用16位总线,只要一个主机操作就能完成访问操作。

  (2) HPI硬件连线

  HMS30C7202与TMS320C5416接口电路如图3所示。系统将HPI接口所有控制寄存器、地址寄存器、数据寄存器统一编址,映射到HMS30C7202物理地址0X0C000000开始的I/O内存空间。


  利用地址线RA[3:0]产生HPI访问所需的控制信号。A0与A1决定访问寄存器类型。A2决定访问的是第一个字节还是第二个字节:A2=0 时,表示写入的数据为第一个字节;A2=1时,表示写入的数据为第二个字节。在HPI-8中所有地址线和控制线是在HDS1和HDS2的下降沿采样,而不是由HR/W决定,因此HR/W通过地址线A3表示当前操作是读还是写,而数据锁存信号由nRCS3和nRW0相与后共同产生。KSCAN[2]设置为 HMS30C7202的PORTA中断输入脚,DSP通过中断方式与Linux底层HPI驱动程序通信。

  3 ARM和DSP的通信接口驱动程序设计

  Linux是Unix操作系统的一种变种。在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统,但它和DOS或Window 环境下的驱动程序有很大的区别。Linux驱动程序可以编译进内核,也可以模块形式动态地加入和卸载。Linux的这种特点可根据目标系统裁减内核,更适合于嵌入式系统。

  (1) Linux驱动程序基本原理

  在Linux中所有设备分为字符设备、块设备和网络设备三种,所有设备都看成普通文件,因此可以通过用操纵普通文件相同的系统调用来打开、关闭、读取和写入设备。系统中每个设备都用一种设备特殊文件来表示。

  在Linux中,设备驱动程序是一组相关函数的集合。它包含设备服务子程序和中断处理程序,每个设备服务子程序只处理一种设备或者紧密相关的设备。其目的就是从与设备无关的软件中接受抽象的命令并执行。当执行一条请求时,具体操作是根据控制器驱动程序提供的接口,并利用中断机制去调用中断服务子程序配合设备来完成这个请求。设备程序利用结构file_operations与文件系统联系起来。在Linux下驱动程序装载如图4所示。


  (2) HPI驱动程序

  HPI接口可用I/O端口方式,也可以用I/O存取方式。系统平台采用I/O存取方式,将HPI访问控制寄存器、数据寄存器、地址寄存器,映射到内存物理地址为0X0C000000开始的空间,通过访问存储器指令对HPI进行操作。HPI具体物理地址定义如下:

  #defineHPI_BASE0X0C000000//HPI基地址

  #define HPD_READ_LOWHPI_BASE+0X0012

  //读数据寄存器第一字节  

  #define HPA_WRITE_HIGHHPI_BASE+0X000C

  //写地址寄存器第二字节

  在Linux下,类似Windows,程序不能直接访问物理地址。设备驱动程序是内核的一部分,它像内核中其他代码一样运行在内核模式,驱动程序如果出错就会使系统受到严重破坏,因此需要将物理地址映射到内核空间。在Linux下通过virtul_address=(u32)ioremap (HPI_BASE,HPI_LENGTH)实现。驱动程序主要结构如下:

  struct file_operations hpi_fops={

  owner:THIS_MODULE,

  read: hpi_read,

  write: hpi_write,

  poll : hpi_poll,

  open: hpi_open,

  release: hpi_release,

  };

  HPI通信协议采用帧结构,由于增强型HPI接口允许访问DSP内部RAM所有空间,系统通信在DSP内部分配2 K字(16位)作为帧缓冲区,读写各1 K字,协议采用一位滑动窗口协议。帧格式如表1所列。


  结语

  本文介绍了使用ARM和DSP双CPU构成的双核嵌入式系统的硬件平台,以及源代码开放的Linux作为嵌入式系统中操作系统的方法,给出了系统设计的总体框图,详细介绍了ARM和DSP通信接口的设计。这一设计方法可以适用于大多数现代嵌入式系统的设计,有一定的实用价值。

关键字:双核系统  通信接口  Linux 引用地址:DSP/ARM双核系统的通信接口设计

上一篇:基于Proteus的嵌入式应用系统仿真中的源码调试
下一篇:基于ARM和eCos的嵌入式WEB服务器设计

推荐阅读最新更新时间:2024-03-16 13:14

基于ARM-Linux和CDMA的远程视频监控系统
  引言   CDMA(码分多址)无线网络具有覆盖面广,高效、低成本的特点,CDMA网络的数据传输速率可达200kb/s,这里开发的嵌入式远程视频监控系统就是充分利用CDMA无线网络技术和嵌入式系统的特点而搭建的数据传输系统,特别适合边远偏僻或不具备常规网络传输条件的地方使用,例如车载视频监控系统、交通路口(车牌实时监视)及城市路灯的监控等。   1 嵌入式Linux系统   嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应对功能、可靠性、成本、体积、功耗要求严格的专用计算机系统,目前嵌入式系统已经无处不在,从汽车、家用微波炉、PDA(个人数字助理)、电视机、到工控生产现场、通信、仪器、仪表、汽车、船舶、航
[安防电子]
基于Linux-2.6.32.2在mini2440驱动分析一:串口驱动
串口驱动文件位于: linux-2.6.32.2/drivers/serial/s3c2440.c,省去非重点部分分析。 #include linux/module.h #include linux/ioport.h #include linux/io.h #include linux/platform_device.h #include linux/init.h #include linux/serial_core.h #include linux/serial.h #include asm/irq.h #include mach/hardware.h #include plat/regs-serial
[单片机]
08-S3C2440驱动学习(二)嵌入式linux-input子系统分析与应用
零、几个问题 (1)为什么有输入子系统: 针对输入设备的多样性和输入事件的多样性,内核通过输入子系统来实现输入设备的驱动、输入事件的提交及对输入事件的读取,并有统一的命名规则。 (2)分层分离结构 input子系统是对不同类型的输入设备进行统一处理的驱动程序。一个输入事件,如按键,按照: 驱动层-- 系统核心层-- 事件处理层-- 用户空间层 的顺序达到用户空间并传递给应用程序的。 input子系统组成 驱动层 核心层 事件处理层 (3)几个重要结构体 input_dev:物理输入设备结构体,包含设备信息。存在input_dev_list链表中 input_handler:事件处理结构体,实现事
[单片机]
08-S3C2440驱动学习(二)嵌入式<font color='red'>linux</font>-input子<font color='red'>系统</font>分析与应用
基于嵌入式ARM-Linux无线ZigBee协调器驱动设计
农田中大范围的环境信息监测已成为网络应用范围重点之一。针对农田布线不便的特点,ZigBee无线节点网络成为农田信息采集系统的首选,可对其所分布区域内的各种环境和检测对象的信息进行实时的监控 。然而,控制下层整个网络状态的核心是上位机ARM处理器,而且上位机与下位机通信大多以串口模式来实现 。但串口通信模式存在串口传输速率低(波特率双方一致)、传送距离短 、数据冗余差(数据校验)以及设计串口协议繁琐(帧格式)等不足。因此本文研究了ZigBee在ARM9内核中的协调器字符驱动,利用I/O传输数据,控制具有协调器驱动的设备在农田任何位置即可组网,以减少协调器的布局,实现方便快捷的动态数据监测。 1 田间监测系统的要求  因监测节点需要
[工业控制]
基于嵌入式ARM-<font color='red'>Linux</font>无线ZigBee协调器驱动设计
基于ARM9和Linux的液晶驱动终端设计
1 引言 目前.已有的液晶驱动终端主要采用微控制器与前、后台软件结合的方法进行设计,该类终端只能够显示字模方式的图片.该种类型的终端显示数据存放在自带的NANDFlash中, 在人机界面设计过程中对NAND Flash中的数据管理是以扇区为基本操作单元,图片下载需要专用的软件工具完成,增加了界面设计的逻辑复杂性与操作性。这里采用ARM9微控制器与 Linux操作系统结合的方法,设计出一种新型的液晶驱动终端。该终端通过FAT文件系统管理CF卡中数据资源,利用多线程技术实现串口命令解析与图型界面的显示,不仅能够显示字模与图片等数据资源,而且利用该设计方法可以实现调用MiniGUI图型库等资源,适用于工业测控、智能仪表等领域的人机界
[单片机]
基于ARM9和<font color='red'>Linux</font>的液晶驱动终端设计
OK6410A学习笔记三:嵌入式Linux驱动之LED驱动
开发环境: Windows7 + vmware workstation 6.5 + Ubuntu9.10 Linux Source Code: FORLINX_linux-3.0.1.tar.gz ARM CROSS GCC: arm-linux-gcc v4.3.2 源码: //s3c6410_led.c driver file #include linux/kernel.h #include linux/module.h #include linux/fs.h #include linux/mm.h #include linux/io.h #define DEV_MAJOR 176 #define DEV_N
[单片机]
OK6410A学习笔记三:嵌入式<font color='red'>Linux</font>驱动之LED驱动
ARM-Linux s3c2440 之中断分析(三)
Linux通过以下函数来注册中断以及中断相关的入口函数handle,只有先注册IRQ,才能正常使用。 int set_irq_chip(unsigned int irq, structirq_chip *chip) static inline void set_irq_handler(unsigned intirq, irq_flow_handler_t handle) static inline void set_irq_chained_handler(unsignedint irq, irq_flow_handler_t handle) 实现的代码如下: for(irqno = IRQ_E
[单片机]
戴尔拟推智能本将升级上网本版Linux
戴尔Linux客户端高级产品营销经理托德·芬奇(Todd Finch)周三在OpenSourceWorld会议上表示,该公司正在研究推出Linux智能本的可行性。未来数周内,戴尔还将把面向上网本的Ubuntu Linux升级为最新版本。    据国外媒体报道称,智能本与上网本相似,但配置ARM架构芯片。目前还没有得到主流PC厂商的青睐,高通和飞思卡尔等芯片厂商将提供智能本芯片。芬奇称,与x86芯片相比,ARM芯片在能耗和电池续航时间方面有优势。ARM芯片处理能力也越来越高了,智能手机软件越来越多就是一个佐证。    IDC分析师杰·周表示,在轻薄笔记本电脑中使用ARM芯片将使戴尔涉足智能本领域。戴尔曾多次表示将涉足智能
[手机便携]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

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