电子工程师的网站
首 页 |  新闻资讯 | 最新产品 | 解决方案 | 技术参数
设计应用
电路图 | 技术资料 | 芯片资料 | 技术论坛
  现在位置: 首页 > 设计应用 > 嵌入式系统/ARM技术 > 详细信息
嵌入式系统/ARM技术:一种基于Java的可编程嵌入式系统设计
来源:   时间: 2007-9-26 8:03:20    

1. 概述
    
  传统的嵌入式系统设计的主要目标是找到一种优化的体系结构来完成单一的,特定的功能。对这样的系统来说,ASIC和核心处理器是作为特别的构件模块加以考虑的:设计者根据应用的要求选择适当的ASIC,根据给定的性能要求比如处理器主频,系统稳定性,以及对功耗的要求等选用适当的处理器内核。
    
  然而,在当今移动通信已经进入每个人的生活的今天,现在的嵌入式系统比如PDA等已经不同于传统意义上的嵌入式系统了,它们有自己的独特特点。客观需要要求它们能够支持多种应用功能如网页浏览,播放音频/视频文件,以及进行无线网络通信等。
    
  这样看来,传统的设计思路因为只面向单一的应用,无法满足多应用嵌入式系统的需求。而解决这一问题的良好途径便是向嵌入式系统引入可编程能力,以使得系统能够根据用户的不同要求实现对不同应用的支持。

  为了向系统中引入可编程能力,我们考虑在系统中嵌入FPGA,因为FPGA具有下列特点,使得它成为我们的首选:

  1.现在的FPGA的处理能力和逻辑容量已经接近于专用ASI

  C,功耗也比较低,能够满足我们系统设计的要求;

  2.由于FPGA具有的可重编程能力,使用了FPGA的嵌入式系统能够满足各种不同的应用要求;

  从嵌入式系统管理的角度来说,对网络通信的支持也是很有必要的,也是很有特色的一个应用,因为它使得从远端服务器下载新的应用程序并在本地运行成为可能。为实现对这个功能的支持,我们采用Java作为软件平台。因为Java运行在Java虚拟机之上,它能够下载并执行新的应用程序代码,并且无需在下载后重新启动系统。

  综上所述,这个新的嵌入式系统是基于Java的,有一个FPGA和标准处理器相连。我们通过网络下载Java代码和可以对FPGA进行编程的比特流。该系统也支持对FPGA的动态重新配置。为了实现硬件(FPGA)和软件(Java应用程序代码)之间的通信,又定义了一组本地API,以使得从Java应用层能够访问到底层的硬件。为了调用这些本地API,采用了Java本地接口(JNI)。在本文中,将一些Java函数(Java  method)用FPGA可编程硬件来实现,称之为硬件方法(HW method)。

2. 系统设计

  实现一个Java函数功能的对应的硬件方法实现的逻辑结构图如图1所示。

逻辑结构

  输入缓存和输出缓存分别用来接收输入参数和存储输出结果。控制缓存用于对硬件方法的控制和检测,比如向硬件方法发出启动指令,检查其所处的状态并判断操作是否完成等。该模块中的所有缓存都映射到处理器物理地址空间中,处理器可以使用正常的读写指令完成对这些缓存的访问。

  图2是该嵌入式系统的硬件平台,由一个标准处理器,一个FPGA和一个系统存储单元构成。它们之间通过共享的系统总线连接在一起。

嵌入式系统的硬件平台

  当处理器向一个硬件方法发出读写操作指令时,该硬件方法在其自己的地址解码器的帮助下向数据总线上发送对应的响应信号。在这里,我们可以认为是处理器发起的硬件/软件通信指令,而FPGA则是作为一个从属单元做出回应。因为在处理器发起初始指令后,就由可配置管理器来负责管理FPGA编程。这样一来,就实现了处理器和FPGA的并行运行。

逻辑结构

  如图3所示,我们选择Java作为软件平台,并且装载了一个嵌入式操作系统为Java实时应用程序提供基本的服务,比如线程和其它硬件管理等。

  通过系统管理器,可以从远程服务器下载Java应用程序。系统管理器主要实现了下面3种协议:
    
  1. 应用程序代码(包括可对FPGA进行编程的比特流)下载协议;
    
  2. 用于远程管理的系统维护相关的协议;
    
  3. 控制对嵌入式系统访问权限的认证协议。
    
系统管理器包括基于socket连接的客户端类加载器。远端应用程序可以下载到本地并按照下面的过程执行:
    
  1. 完成认证过程,系统进入管理模式;
    

  2. 下载应用程序代码,完成系统初始化,比如加载FPGA可编程比特流到相应的存储单元;
    
  3. 执行新的应用程序。
    
  在该系统中,为了简化起见,预先映射硬件方法地址到确定的系统物理存储区,目的是为了寻址操作的方便快捷。

  由于我们使用了Java软件平台,应用程序就无法直接访问底层的硬件。这就是说,运行在处理器Java虚拟机上的应用程序不能直接访问映射到FPGA中硬件方法的缓存区域。为解决这个问题,理论上可以采用下面两种方法:
    
  1. 修改Java虚拟机,使其具有对处理器物理地址的直接访问能力;
    
  2. 单独设计一种Java本地接口(JNI),使得应用程序通过该接口提供的功能实现对硬件方法映射到的物理地址的访问。
     
  尽管第一种方案的效率较高,并且没有引入额外开销,但是修改Java虚拟机内核是相当繁杂的工作,同时也可能会引起潜在的系统不稳定。第二种方案虽然引入了一定的额外开销,但便于移植和实现。因此,我们采用方案二,在Java虚拟机和Java本地接口之外又设计了一个本地通信库。

本地通信库API形式如下:
  
int hwWriteXXX(int addr, XXX p);
  
int hwWriteArrayXXX(int addr, XXX[] p);
  
XXX hwReadXXX(int addr);
  
XXX[] hwReadArrayXXX(int addr);
  
int hwConfig(int cf_mem_addr, i

nt bitstr_size);

Java本地接口层接口的形式如下:
  
class HWInterface{
  
static int ConfigStatus;

  public static native int setParam(CID hw_cid, object P)

  {

  if(type_of_P == XXX)

  err = hwWriteXXX(hw_cid.addr, (XXX)P);

  return err;

  }

  public static native int getResult(CID hw_cid, object R);

  public static native int setCMD(CID hw_cid, int cmd);

  public static native int getStatus(CID hw_cid);

  public synchronized static native int configHW( CID hw_cid);

  }

  在上面代码中,XXX表示基本的Java数据类型如整型(integer)、浮点型(float)、双精度型(double)等。

  Java应用程序通过类HWInterface提供的方法访问本地库。上面的代码中给出了setParam的具体实现。其中,CID是包括硬件方法映射到的缓存地址的一个对象,对应于每个硬件方法的CID都是唯一的,因此,该地址和缓存区大小都是事先已经确定了的。但是,由于系统中只有一个配置控制器,我们无法同时就两个或多个硬件方法向FPGA进行编程,也可以说同一时刻只能有一个硬件方法在使用配置控制器。为此,引入了一个静态变量ConfigStatus来反映配置控制器的当前状态。所以,访问配置控制器的函数configHW()是静态的同步的。

使用上面给出的接口,则下面这段代码

  methodA()

  {

  …;

  int a = objA.m1(2); //SW method

  int b = objB.m2(3); //HW method

  int c = a + b;

  …;

  }

  就应该写成下面的形式:

  methodA()

  {

  …;

  1      HWInterface.configHW(cid2); // cid2 is the ID of HW method m2

  2      Object P = new Integer(3);

  3      HWInterface.SetParam(cid2,P);

  4      HWInterface.startHW(cid2);

  5      int a = objA.m1(2);

  6      Object R = new Integer();

  7      While(HWInterface.getResult(cid2, R) == 0)
       
; //wait until HW method finished

  8      HWInterface.getResult(cid2, R);

  9      int b = ((Integer)R.getValue());

  10     int c = a + b;
…;

  }

  在上例中,为了执行FPGA中的函数objB.m2(),首先对FPGA进行编程(Line1)。然后,将参数拷贝到硬件方法的输 入缓存中(Line3),并对硬件方法进行初始化(Line4)。最后,采用了一个循环函数持续检查硬件方法缓存的状态(Line7,8),直至计算完成,然后拷贝得到结果(Line9)。

3. 系统实现

系统实现

   
  使用ARM710T处理器和Virtex的FPGA,根据上文给出的设计方案,我们实现了一个嵌入式系统开发平台。该平台包括一个网络接口,两个调试接口,一个PCI

主机接口和一个串行口。并移植了一个嵌入式操作系统和一个小巧的Java实时运行环境。如图4:

4. 总结
    
  本文用一种全新的思路,对传统的嵌入式系统进行了改进,实现了一种能够支持多种应用的嵌入式系统平台。利用FPGA的可编程性和Java平台良好的移植性能,该平台完全能够满足我们的设计要求。当然,也有不足之处,比如对配置控制器的状态的获取,可以考虑使用中断的方式来实现,而不是采用本文中的循环查询机制。这将在以后的工作中加以改进。

相关信息
发表评论
打印本页 关闭本页
FPGA助力高端存储器接口设计
    高性能系统设计师在满足关键时序余量的同时要力争获得更高性能,而存储器接口设计则是一项艰巨挑战。双倍数据速率SDRAM和4倍数据速率SDRAM都采用源同步接口来把数据和时钟(或选通脉冲)由发射器传送到接收器。接收器接口内部利用时钟来锁存数据,此举可消除接口控制问题(例如在存储器和FPGA间的信号传递时间),但也为设计师带来了必须解决的新挑战。   关键问题之一就是如...
>>详细内容
赛灵思SPARTAN-3A系列FPGA又添低功耗器件
    赛灵思公司(Xilinx)日前宣布其XtremeDSP信号处理解决方案产品系列新增功耗优化的Spartan-3A DSP器件。这个目前业已投入量产的FPGA新器件,为低成本且低功耗FPGA领域的应用如军事通信战术无线电系统、无线接入点和便携式医疗设备等,提供了高性能的数字信号处理(DSP)能力。   与标准器件产品相比,Spartan-3A DSP低功耗(LP)器件的静态功耗降低了50%,而在待机模式下静态功耗的降低...
>>详细内容
ARM推出首款专门针对FPGA优化的处理器Cortex-M1
    ARM公司日前发布了第一款专门针对FPGA应用而优化的ARM Cortex-M1处理器。ARM Cortex-M1处理器扩展了ARM Cortex处理器系列,可帮助OEM厂商在一个通用架构下对不同性能需求进行标准化。Actel作为一家核心合作伙伴已与ARM紧密合作,并成为首个获得授权可为其FPGA客户提供Cortex-M1处理器的公司。   2007年4月2日至5日在美国加利福尼亚州圣何塞举行的嵌入式系统大会(Embedded System...
>>详细内容
莱迪思推出业界首个真正的90纳米非易失FPGA器件
    莱迪思半导体公司日前公布了其第三代非易失FPGA器件,LatticeXP2系列。LatticeXP2具有增强的性能,双倍增加的逻辑容量达40K查找表(LUT)、性能改进了25%、还加入了专用DSP块,而每个功能的价格减少达50%。对1.2伏加工工艺的功耗进行了优化,静态功耗减少了33%。设计使用了业界最先进的非易失FPGA工艺,莱迪思与代工伙伴富士通合作开发了90纳米嵌入式闪存工艺,LatticeXP2具有“瞬时...
>>详细内容
利用FPGA实现基于RU算法编码器(LDPC编码器)的设计
  引言   低密度奇偶校验(Low Density Parity Check Code,LDPC)码是一类具有稀疏校验矩阵的线性分组码,不仅有逼近Shannon限的良好性能,而且译码复杂度较低, 结构灵活,是近年信道编码领域的研究热点,目前已广泛应用于深空通信、光纤通信、卫星数字视频和音频广播等领域。LDPC码已成为第四代通信系统(4G)强有力的竞争者,而基于LDPC码的编码方案已经被下一代卫星数字视频广播标准D...
>>详细内容
从FPGA实现的角度对大约束度Viterbi译码器中路径存储单元的设计
  1 引言   Viterbi译码算法是一种最大似然译码算法,目前广泛应用于各种数据传输系统,特别是卫星通信和移动通信系统中。近年来随着FPGA技术的迅速发展,使得基于FPGA实现Viterbi译码的算法成为研究的热点。   由于Viterbi译码器的复杂性随约束长度k成指数增加,大约束度不但使Viterbi译码器硬件复杂度大为增加,同时也限制了译码速度。而其中以加比选(Add Compareselect,ACS)运算...
>>详细内容
已有(
)位对此新闻感兴趣的网发发表了看法 >>更多评论
内 容:
     
 
热点新闻
一周排行
关于我们 | 服务项目 | 付款方式 | 广告服务 | 联系我们 | 友情链接 | 投诉 建议 合作 | 网站地图 | 加入收藏
Copyright © 2007-2008 WEEQOO.COM Corp.All Rights Reserved. 版权所有 经营许可证编号:浙B2-20050339 法律声明
维库电子旗下网站:维库电子市场网 | ChinaICMart | 维库电子开发网 | 维库电子人才网
总部:杭州市下城区朝晖路182号国都发展大厦1号楼80A
电话:0571-85889139-8007 QQ:303939539 | MSN:zh1226@hotmail.com |  邮箱:laz8258@163.com dzsc51@163.com