新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Java的FPGA可編程嵌入式系統(tǒng)

        基于Java的FPGA可編程嵌入式系統(tǒng)

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

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

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

          3. 控制對(duì)訪問(wèn)權(quán)限的認(rèn)證協(xié)議。

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

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

          2. 下載應(yīng)用程序代碼,完成系統(tǒng)初始化,比如加載比特流到相應(yīng)的存儲(chǔ)單元;

          3. 執(zhí)行新的應(yīng)用程序。

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

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

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

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

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

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

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

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




        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 连山| 合阳县| 花莲市| 涡阳县| 邢台县| 赤水市| 江都市| 正阳县| 洛隆县| 高陵县| 吐鲁番市| 呼玛县| 海阳市| 建始县| 新密市| 偃师市| 安远县| 苍南县| 颍上县| 界首市| 东丰县| 嘉义县| 定日县| 永州市| 盐城市| 南京市| 化隆| 潜江市| 太仓市| 会东县| 望奎县| 新源县| 诏安县| 喀什市| 太仓市| 利津县| 北海市| 紫阳县| 临夏市| 隆尧县| 定襄县|