<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于Java的FPGA可編程嵌入式系統

基于Java的FPGA可編程嵌入式系統

作者: 時(shí)間:2010-09-19 來(lái)源:網(wǎng)絡(luò ) 收藏

  1. 應用程序代碼(包括可對進(jìn)行編程的比特流)下載協(xié)議;

  2. 用于遠程管理的維護相關(guān)的協(xié)議;

  3. 控制對訪(fǎng)問(wèn)權限的認證協(xié)議。

  管理器包括socket連接的客戶(hù)端類(lèi)加載器。遠端應用程序可以下載到本地并按照下面的過(guò)程執行:

  1. 完成認證過(guò)程,系統進(jìn)入管理模式;

  2. 下載應用程序代碼,完成系統初始化,比如加載比特流到相應的存儲單元;

  3. 執行新的應用程序。

  在該系統中,為了簡(jiǎn)化起見(jiàn),預先映射硬件方法地址到確定的系統物理存儲區,目的是為了尋址操作的方便快捷。

  由于我們使用了軟件平臺,應用程序就無(wú)法直接訪(fǎng)問(wèn)底層的硬件。這就是說(shuō),運行在處理器虛擬機上的應用程序不能直接訪(fǎng)問(wèn)映射到中硬件方法的緩存區域。為解決這個(gè)問(wèn)題,理論上可以采用下面兩種方法:

  1. 修改虛擬機,使其具有對處理器物理地址的直接訪(fǎng)問(wèn)能力;

  2. 單獨設計一種Java本地接口(JNI),使得應用程序通過(guò)該接口提供的功能實(shí)現對硬件方法映射到的物理地址的訪(fǎng)問(wèn)。

  盡管第一種方案的效率較高,并且沒(méi)有引入額外開(kāi)銷(xiāo),但是修改Java虛擬機內核是相當繁雜的工作,同時(shí)也可能會(huì )引起潛在的系統不穩定。第二種方案雖然引入了一定的額外開(kāi)銷(xiāo),但便于移植和實(shí)現。因此,我們采用方案二,在Java虛擬機和Java本地接口之外又設計了一個(gè)本地通信庫。

  本地通信庫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, int 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數據類(lèi)型如整型(integer)、浮點(diǎn)型(float)、雙精度型(double)等。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

fpga相關(guān)文章:fpga是什么




關(guān)鍵詞: 嵌入式 系統 可編程 FPGA Java 基于

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>