資料介紹
分享到:嵌入式系統(tǒng)是以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。嵌入式軟件的基本體系結(jié)構(gòu)包括嵌入式實(shí)時(shí)操作系統(tǒng)RTOS(RealTime operating Systerrl)、嵌入式設(shè)備驅(qū)動(dòng)程序、嵌入式應(yīng)用程序編程接口(中間件)和嵌入式應(yīng)用程序。
現(xiàn)階段,計(jì)算機(jī)應(yīng)用的普及、互聯(lián)網(wǎng)技術(shù)的實(shí)用以及納米微電子技術(shù)的突破,正有力推動(dòng)著21世紀(jì)的工業(yè)生產(chǎn)、商業(yè)活動(dòng)、科學(xué)實(shí)驗(yàn)和家庭生活等領(lǐng)域自動(dòng)化和信息化進(jìn)程。全過程自動(dòng)化產(chǎn)品制造、大范圍電子商務(wù)活動(dòng)、高度協(xié)同科學(xué)實(shí)驗(yàn)以及現(xiàn)代化家居生活,為嵌入式產(chǎn)品造就了嶄新而巨大的商機(jī)。除了溝通信息高速公路的交換機(jī)、路由器和調(diào)制解調(diào)器,構(gòu)建計(jì)算機(jī)集成制造系統(tǒng)(CIMS)所需的數(shù)據(jù)傳輸系統(tǒng)DCS(Data Communication System)和機(jī)器人以及規(guī)模較大的家用汽車電子系統(tǒng),最有產(chǎn)量效益和時(shí)代特征的嵌入式產(chǎn)品應(yīng)數(shù)因特網(wǎng)上的信息家電(information appliances),如網(wǎng)絡(luò)可視電話、網(wǎng)絡(luò)游戲機(jī)、電子商務(wù)、商務(wù)通(PDA)、移動(dòng)電話以及多媒體產(chǎn)品(如電視機(jī)頂盒、DVD播放機(jī)、電子閱讀機(jī))。
眾所周知,“一次編程,到處使用”的Java軟件概念原本就是針對(duì)網(wǎng)上嵌入式小設(shè)備提出的,幾經(jīng)周折,目前SUN公司已推出了J2ME(Java 2 P1atform Micro Edition)針對(duì)信息家電的Java版本,其技術(shù)日趨成熟,開始投入使用。SUN公司Java虛擬機(jī)(JVM)技術(shù)的有序開放,使得Java軟件真正實(shí)現(xiàn)跨平臺(tái)運(yùn)行,即Java應(yīng)用小程序能夠在帶有JVM的任何硬軟件系統(tǒng)上執(zhí)行。加上Java語言本身所具有的安全性、可靠性和可移植性等特點(diǎn),對(duì)實(shí)現(xiàn)瘦身上網(wǎng)的信息家電等網(wǎng)絡(luò)設(shè)備十分有利,同時(shí)對(duì)嵌入式設(shè)備特別是上網(wǎng)設(shè)備軟件編程技術(shù)產(chǎn)生了很大的影響。
1 Java的性能問題及幾種解決方案
Java程序也有其本身的缺陷,那就是其效率問題。由于Java是一種介于解釋型和編譯型之間的語言,其對(duì)內(nèi)存的管理是通過JVM虛擬機(jī)來實(shí)現(xiàn)的,同樣的程序,如果用編譯型語言C來實(shí)現(xiàn),其運(yùn)行速度一般要比Java快得多。因此,提高Java的性能就顯得十分重要。
迄今為止,人們?yōu)樘岣逬ava的運(yùn)行速度而做出的許多努力,主要集中在程序設(shè)計(jì)的方法和模式選擇方面。但是由于算法和設(shè)計(jì)模式的優(yōu)化是通用的,對(duì)Java有效的優(yōu)化算法和設(shè)計(jì)模式,對(duì)其他編譯語言也基本適用,因此不能從根本上改變Java程序與編譯型語言在執(zhí)行效率方面的差異。
另外,JIT(Just In Time,及時(shí)編譯)技術(shù)也是一個(gè)比較好的思想。它的基本原理是,首先,通過Java編譯器把Java源代碼編譯成與平臺(tái)無關(guān)的二進(jìn)制字節(jié)碼。然后,在Java程序真正執(zhí)行之前,系統(tǒng)通過JIT編譯器把Java的字節(jié)碼編譯為本地化機(jī)器碼。最后,系統(tǒng)執(zhí)行本地化機(jī)器碼,不用對(duì)字節(jié)碼進(jìn)行解釋。這樣做的優(yōu)點(diǎn)是,大大提高了Java程序的性能,縮短了加載程序的時(shí)間;同時(shí),由于編譯的結(jié)果并不在程序運(yùn)行期間保存,因此也節(jié)約了存儲(chǔ)空間。缺點(diǎn)是,由于JIT編譯器對(duì)所有的代碼都想優(yōu)化,因此同樣也占用了很多時(shí)間。
動(dòng)態(tài)優(yōu)化技術(shù)即提前編譯為機(jī)器碼的技術(shù)(dynamicopttmization,ahead of time technology)是提高Java性能的另一個(gè)嘗試。動(dòng)態(tài)優(yōu)化技術(shù)充分利用了Java源碼編譯、字節(jié)碼編譯、動(dòng)態(tài)編譯和靜態(tài)編譯的技術(shù)。其輸入是Java的源碼或字節(jié)碼。而輸出是經(jīng)過高度優(yōu)化的可執(zhí)行代碼和動(dòng)態(tài)庫(WindoW中是.dil文件,UNIX中是共享庫.a.so文件)。其優(yōu)點(diǎn)是能大大提高程序的性能,缺點(diǎn)是破壞了Java的可移植性,也對(duì)Java的安全帶來了一定的隱患。
2 JNI技術(shù)
實(shí)際上,有一種通常被忽視的技術(shù)可以在很大程度上解決這個(gè)難題,那就是JNI(Java Native Interface,Java本地化方法)。圖1是JNI技術(shù)實(shí)現(xiàn)的一般步驟。
?。?)編寫Java類代碼
其中,需要JNI實(shí)現(xiàn)的方法應(yīng)當(dāng)用native關(guān)鍵字聲明。在該類中,用System.1oadLibrary()方法加載需要的動(dòng)態(tài)鏈接庫。關(guān)鍵代碼如下:
?。疌ompute.java
public class Compute{
public native double comp (double params);
static{
//調(diào)用動(dòng)態(tài)鏈接庫
System.loadLibrary(“mathlib”);
}
?。?)編譯成字節(jié)代碼
在這個(gè)過程中,由于采用了native關(guān)鍵字聲明,Java編譯器會(huì)忽視沒有代碼體的JNI方法部分。
?。?)生成相關(guān)JNI方法的頭文件
這個(gè)過程的實(shí)現(xiàn)一般是通過利用jlavah-jni * class生成的,也可以手工生成該文件;但是由于Java虛擬機(jī)是根據(jù)一定的命名規(guī)范完成對(duì)JNI方法的調(diào)用,所以手工編寫頭文件需要特別小心。
上述文件產(chǎn)生的頭文件部分代碼如下:
?。疌ompute.h
;
extern“C”{
JNIEXPORT jdoubleJNICALL Java_Compute_comp(JNI-Env *, jobject, jdoubleArray);
;
JNI函數(shù)名稱分為三部分:首先是Java關(guān)鍵字,供Java虛擬機(jī)識(shí)別;然后是調(diào)用者類名稱(全限定的類名,其中用下劃線代替名稱分隔符);最后是對(duì)應(yīng)的方法名稱,各段名稱之間用下劃線分割。
JNI函數(shù)的參數(shù)也由三部分組成:首先是JNIEnv *,是一個(gè)指向JNI運(yùn)行環(huán)境的指針;第二個(gè)參數(shù)隨本地方法是靜態(tài)還是非靜態(tài)而有所不同一一非靜態(tài)本地方法的第二個(gè)參數(shù)是對(duì)對(duì)象的引用,而靜態(tài)本地方法的第二個(gè)參數(shù)是對(duì)其Java類的引用;其余的參數(shù)對(duì)應(yīng)通常Java方法的參數(shù),參數(shù)類型需要根據(jù)一定規(guī)則進(jìn)行映射。
現(xiàn)階段,計(jì)算機(jī)應(yīng)用的普及、互聯(lián)網(wǎng)技術(shù)的實(shí)用以及納米微電子技術(shù)的突破,正有力推動(dòng)著21世紀(jì)的工業(yè)生產(chǎn)、商業(yè)活動(dòng)、科學(xué)實(shí)驗(yàn)和家庭生活等領(lǐng)域自動(dòng)化和信息化進(jìn)程。全過程自動(dòng)化產(chǎn)品制造、大范圍電子商務(wù)活動(dòng)、高度協(xié)同科學(xué)實(shí)驗(yàn)以及現(xiàn)代化家居生活,為嵌入式產(chǎn)品造就了嶄新而巨大的商機(jī)。除了溝通信息高速公路的交換機(jī)、路由器和調(diào)制解調(diào)器,構(gòu)建計(jì)算機(jī)集成制造系統(tǒng)(CIMS)所需的數(shù)據(jù)傳輸系統(tǒng)DCS(Data Communication System)和機(jī)器人以及規(guī)模較大的家用汽車電子系統(tǒng),最有產(chǎn)量效益和時(shí)代特征的嵌入式產(chǎn)品應(yīng)數(shù)因特網(wǎng)上的信息家電(information appliances),如網(wǎng)絡(luò)可視電話、網(wǎng)絡(luò)游戲機(jī)、電子商務(wù)、商務(wù)通(PDA)、移動(dòng)電話以及多媒體產(chǎn)品(如電視機(jī)頂盒、DVD播放機(jī)、電子閱讀機(jī))。
眾所周知,“一次編程,到處使用”的Java軟件概念原本就是針對(duì)網(wǎng)上嵌入式小設(shè)備提出的,幾經(jīng)周折,目前SUN公司已推出了J2ME(Java 2 P1atform Micro Edition)針對(duì)信息家電的Java版本,其技術(shù)日趨成熟,開始投入使用。SUN公司Java虛擬機(jī)(JVM)技術(shù)的有序開放,使得Java軟件真正實(shí)現(xiàn)跨平臺(tái)運(yùn)行,即Java應(yīng)用小程序能夠在帶有JVM的任何硬軟件系統(tǒng)上執(zhí)行。加上Java語言本身所具有的安全性、可靠性和可移植性等特點(diǎn),對(duì)實(shí)現(xiàn)瘦身上網(wǎng)的信息家電等網(wǎng)絡(luò)設(shè)備十分有利,同時(shí)對(duì)嵌入式設(shè)備特別是上網(wǎng)設(shè)備軟件編程技術(shù)產(chǎn)生了很大的影響。
1 Java的性能問題及幾種解決方案
Java程序也有其本身的缺陷,那就是其效率問題。由于Java是一種介于解釋型和編譯型之間的語言,其對(duì)內(nèi)存的管理是通過JVM虛擬機(jī)來實(shí)現(xiàn)的,同樣的程序,如果用編譯型語言C來實(shí)現(xiàn),其運(yùn)行速度一般要比Java快得多。因此,提高Java的性能就顯得十分重要。
迄今為止,人們?yōu)樘岣逬ava的運(yùn)行速度而做出的許多努力,主要集中在程序設(shè)計(jì)的方法和模式選擇方面。但是由于算法和設(shè)計(jì)模式的優(yōu)化是通用的,對(duì)Java有效的優(yōu)化算法和設(shè)計(jì)模式,對(duì)其他編譯語言也基本適用,因此不能從根本上改變Java程序與編譯型語言在執(zhí)行效率方面的差異。
另外,JIT(Just In Time,及時(shí)編譯)技術(shù)也是一個(gè)比較好的思想。它的基本原理是,首先,通過Java編譯器把Java源代碼編譯成與平臺(tái)無關(guān)的二進(jìn)制字節(jié)碼。然后,在Java程序真正執(zhí)行之前,系統(tǒng)通過JIT編譯器把Java的字節(jié)碼編譯為本地化機(jī)器碼。最后,系統(tǒng)執(zhí)行本地化機(jī)器碼,不用對(duì)字節(jié)碼進(jìn)行解釋。這樣做的優(yōu)點(diǎn)是,大大提高了Java程序的性能,縮短了加載程序的時(shí)間;同時(shí),由于編譯的結(jié)果并不在程序運(yùn)行期間保存,因此也節(jié)約了存儲(chǔ)空間。缺點(diǎn)是,由于JIT編譯器對(duì)所有的代碼都想優(yōu)化,因此同樣也占用了很多時(shí)間。
動(dòng)態(tài)優(yōu)化技術(shù)即提前編譯為機(jī)器碼的技術(shù)(dynamicopttmization,ahead of time technology)是提高Java性能的另一個(gè)嘗試。動(dòng)態(tài)優(yōu)化技術(shù)充分利用了Java源碼編譯、字節(jié)碼編譯、動(dòng)態(tài)編譯和靜態(tài)編譯的技術(shù)。其輸入是Java的源碼或字節(jié)碼。而輸出是經(jīng)過高度優(yōu)化的可執(zhí)行代碼和動(dòng)態(tài)庫(WindoW中是.dil文件,UNIX中是共享庫.a.so文件)。其優(yōu)點(diǎn)是能大大提高程序的性能,缺點(diǎn)是破壞了Java的可移植性,也對(duì)Java的安全帶來了一定的隱患。
2 JNI技術(shù)
實(shí)際上,有一種通常被忽視的技術(shù)可以在很大程度上解決這個(gè)難題,那就是JNI(Java Native Interface,Java本地化方法)。圖1是JNI技術(shù)實(shí)現(xiàn)的一般步驟。
?。?)編寫Java類代碼
其中,需要JNI實(shí)現(xiàn)的方法應(yīng)當(dāng)用native關(guān)鍵字聲明。在該類中,用System.1oadLibrary()方法加載需要的動(dòng)態(tài)鏈接庫。關(guān)鍵代碼如下:
?。疌ompute.java
public class Compute{
public native double comp (double params);
static{
//調(diào)用動(dòng)態(tài)鏈接庫
System.loadLibrary(“mathlib”);
}
?。?)編譯成字節(jié)代碼
在這個(gè)過程中,由于采用了native關(guān)鍵字聲明,Java編譯器會(huì)忽視沒有代碼體的JNI方法部分。
?。?)生成相關(guān)JNI方法的頭文件
這個(gè)過程的實(shí)現(xiàn)一般是通過利用jlavah-jni * class生成的,也可以手工生成該文件;但是由于Java虛擬機(jī)是根據(jù)一定的命名規(guī)范完成對(duì)JNI方法的調(diào)用,所以手工編寫頭文件需要特別小心。
上述文件產(chǎn)生的頭文件部分代碼如下:
?。疌ompute.h
;
extern“C”{
JNIEXPORT jdoubleJNICALL Java_Compute_comp(JNI-Env *, jobject, jdoubleArray);
;
JNI函數(shù)名稱分為三部分:首先是Java關(guān)鍵字,供Java虛擬機(jī)識(shí)別;然后是調(diào)用者類名稱(全限定的類名,其中用下劃線代替名稱分隔符);最后是對(duì)應(yīng)的方法名稱,各段名稱之間用下劃線分割。
JNI函數(shù)的參數(shù)也由三部分組成:首先是JNIEnv *,是一個(gè)指向JNI運(yùn)行環(huán)境的指針;第二個(gè)參數(shù)隨本地方法是靜態(tài)還是非靜態(tài)而有所不同一一非靜態(tài)本地方法的第二個(gè)參數(shù)是對(duì)對(duì)象的引用,而靜態(tài)本地方法的第二個(gè)參數(shù)是對(duì)其Java類的引用;其余的參數(shù)對(duì)應(yīng)通常Java方法的參數(shù),參數(shù)類型需要根據(jù)一定規(guī)則進(jìn)行映射。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 嵌入式軟件開發(fā)的特點(diǎn)、設(shè)計(jì)流程、嵌入式軟件的結(jié)構(gòu)
- 嵌入式軟件開發(fā)需要懂的硬件基礎(chǔ)
- 嵌入式軟件開發(fā)做什么?嵌入式開發(fā)培訓(xùn)學(xué)哪些
- 嵌入式軟件開發(fā)環(huán)境
- 嵌入式軟件開發(fā)基礎(chǔ)實(shí)驗(yàn)報(bào)告4×4鍵盤控制
- 嵌入式軟件開發(fā)基礎(chǔ)實(shí)驗(yàn)報(bào)告數(shù)碼管顯示
- 嵌入式Linux與物聯(lián)網(wǎng)軟件開發(fā)C語言內(nèi)核深度解析書籍的介紹
- 基于嵌入式軟件開發(fā)中構(gòu)件技術(shù)的研究 6次下載
- 嵌入式軟件開發(fā)概述 1次下載
- ARM嵌入式軟件開發(fā) 64次下載
- 嵌入式軟件開發(fā)中構(gòu)件技術(shù)的研究 32次下載
- Eclipse嵌入式軟件開發(fā)平臺(tái) 55次下載
- 嵌入式軟件開發(fā)與Embedded-GIS 36次下載
- 嵌入式系統(tǒng)軟件開發(fā)環(huán)境中調(diào)試器的設(shè)計(jì)
- 嵌入式軟件開發(fā)系列教程 (很多本書)
- 嵌入式系統(tǒng)中的實(shí)時(shí)操作系統(tǒng) 263次閱讀
- 嵌入式軟件開發(fā)和軟件開發(fā)的區(qū)別 1738次閱讀
- 基于功能安全的汽車嵌入式軟件單元驗(yàn)證技術(shù)研究 847次閱讀
- 嵌入式軟件架構(gòu)設(shè)計(jì)之程序分層 1024次閱讀
- 基于UML嵌入式軟件開發(fā)環(huán)境的自動(dòng)取款機(jī)系統(tǒng)的應(yīng)用方案 3608次閱讀
- 基于嵌入式軟件的JNI技術(shù)應(yīng)用解析 1020次閱讀
- 詳解嵌入式軟件開發(fā)到FPGA開發(fā) 6329次閱讀
- 嵌入式軟件開發(fā)編程規(guī)范介紹 4206次閱讀
- 嵌入式軟件開發(fā)的這些編程規(guī)范你了解嗎 3809次閱讀
- 嵌入式開發(fā)和底層開發(fā)有什么區(qū)別 1.5w次閱讀
- 關(guān)于嵌入式軟件開發(fā)測試的十大秘訣 2257次閱讀
- 不得不看!關(guān)于嵌入式軟件開發(fā)的四點(diǎn)建議總結(jié) 7200次閱讀
- 嵌入式系統(tǒng)開發(fā)中驅(qū)動(dòng)程序設(shè)計(jì)的5個(gè)方法盤點(diǎn) 3057次閱讀
- 在Nios II平臺(tái)下搭建RTEMS嵌入式開發(fā)簡析 1510次閱讀
- 學(xué)嵌入式開發(fā)入門_學(xué)嵌入式開發(fā)需要看哪些書籍 2.4w次閱讀
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多