許多M2M應用市場中,都免不了使用Java ME應用程式,除有助M2M模組的應用程式執行更為順暢外,也可縮短工程師產品設計時間,並進一步減少成本,因而內建Java程式的M2M模組也漸受歡迎。
Java ME以往稱作為J2ME,是針對行動裝置所設計的內嵌系統,可協助機器對機器(M2M)客戶充分發揮其應用程式的功能集。在絕大多數的M2M垂直市場中,都運用J2ME應用程式,包括智慧讀表、車隊管理與工業自動化解決方案等。
Java不僅廣泛應用在各式裝置上,並擁有眾多且熱心的開發者社群,算是全世界最廣泛使用的程式設計標準,因此對於開發成功M2M技術而言相當重要,此外,Java也是全球大學所使用的主要程式設計語言。
M2M模組結合Java大勢所趨
Java功能結合M2M模組廠商的特性,將成為強大的設計與工程產品,可為客戶或系統整合廠商帶來許多好處,包括根據X.509憑證,可提供高度安全與系統保護功能、機板除錯功能、穩定性高,系統不必重新開機,且具備完整的先占式時間切割和多執行緒功能。其他優勢還包含設計過程中可利用廠商提供的M2M應用程式介面(API)的功能集、無線下載Java應用程式空中通訊協定(Over The Air Protocol, OTAP)、增量Java更新、無線下載韌體、免費編譯器、Java模組內建1.7MB記憶體及加值工具包括混淆器、MES。
此外,Java還針對NetBeans(Oracle/SUN)及Eclipse(IBM專案)提供免費的高品質整合開發環境(IDE)。上述的優點加在一起,便能使開發作業快速完成,不僅加快產品上市的時間,更大幅減少開發成本。
透過Java整合應用程式至GSM模組
Java ME平台包含多種技術與規格,結合後可為Java裝置及客戶應用程式提供最人性化的體驗(圖1)。在M2M之類的產業中,許多競爭業者都試圖向客戶提供獨特的銷售業務,因此這一點在此類產業中特別重要。
|
圖1 在GSM模組上整合客戶應用程式 |
小型裝置的程序制定作業稱限制連結式裝置規範(CLDC),也是Java 2平台精簡版(JME或J2ME)架構的主要部分。JME技術是透過API集合傳送,包括配置、設定檔及選用套件,JME應用程式環境包含如CLDC的配置,以及行動資訊裝置設定檔(MIDP)之類的設定檔。此外,選用套件還可提供額外功能,如無線傳訊、多媒體擷取及播放等。軟體開發人員可透過特定API輕鬆存取特定裝置的硬體元件,毋須花費在裝置不支援的多餘API功能。
CLDC提供最基本的程式集和虛擬機器功能,也是每個JME環境實作的必備項目。只要結合一個或更多設定檔,CLDC就能提供程式設計師穩固的Java平台,以便建立M2M及內嵌裝置所用的應用程式。
設定檔是一組標準API,在選定配置架構下支援的裝置種類較少,特定設定檔會與CLDC的配置結合,為目標裝置類別提供完整的Java應用程式環境。MIDP是CLDC支援的一種設定檔,結合之後就能提供強大的執行時期環境。
|
圖2 Java ME介面配置 |
選用套件則是特定技術的API集合,可擴充Java應用程式環境的功能。CLDC可支援許多選用套件,可讓產品設計師在功能需求及資源限制之間取得平衡,訊亦(Cinterion)無線模組支援CLDC HI 1.1及IMP-NG套件(圖2),後者是MIDP的子集合。除了支援的套件外,廠商開發的重要類別如下:
‧ |
|
|
ATCommand類別可執行AT命令,就有如透過序列介面執行。 |
‧ |
|
|
BearerControl可讓工程師取得承載狀態事件,也可以中斷承載。 |
‧ |
|
|
類比數位轉換器(ADC)類別可從類比數位轉換器輸入取得參考值。 |
‧ |
|
|
數位類比轉換器(DAC)類別可控制數位類比轉換器輸出的脈衝寬度調變(PWM)。 |
‧ |
|
|
此兩個類別可對通用輸入輸出(GPIO)驅動程式輸入與輸出腳的埠,進行存取及配置。 |
‧ |
|
|
看門狗(Watchdog)類別可讓工程師從應用程式層次監控中央處理器(CPU)硬體。 |
Java ME資源/介面完備 易於開發應用程式
|
圖3 記憶體資源 |
廠商的內嵌Java模組可為系統提供多種資源,包括52MHz時脈頻率的安謀國際(ARM)9處理器、擴充記憶體及隨機存取記憶體(RAM),還有M2M特定Java類別,如ATCommand。Java應用程式記憶體空間則包括1,700KB快閃記憶體檔案系統與400KB的RAM(圖3)。其他周邊則包括10×GPIO接腳、1×I2C/SPI介面、1×DAC、2×ADC與2×RS-232 API序列介面。
之前所有的介面都是透過AT指令所控制,不過,廠商為上列各周邊設備新增API(圖4),也就是說,各介面可透過一組Java方法控制,讓Java程式設計師有更大的彈性,開發出速度更快且更有效率的應用程式。
|
圖4 API及介面 |
Java增加M2M解決方案安全性
|
圖5 Java安全哲學原則 |
廠商的Java內嵌模組藉由Java市場上的安全哲學(圖5),為M2M應用程式提供安全可靠的計算能力。行動Java應用程式會在封閉的安全環境中執行,也就是「Java沙盒」(Java Sandbox),Java沙盒技術會排除代表潛在安全問題的Java屬性,排除的屬性包括沒有Java原生介面(JNI)、沒有使用者定義的類別載入器、不支援映射(沒有RM或物件序列化)與沒有執行緒群組或常駐執行緒。
此外,Java虛擬機器(JVM)無法存取核心全球行動通訊系統(GSM)功能,因此應用程式不可能損壞模組。其他Java安全哲學元件包含Java應用程式(.jar file)儲存於模組的快閃記憶體檔案系統(FFS),並無法複製,因此能確保Java應用程式絕對安全,而此功能預設為啟動。在模組中插入X.509憑證後,就可取得以下安全功能。
‧ |
|
|
亦即HTTPS、安全連線,透過安全通訊協定連接到安全伺服器並交換資料,如TLS通訊協定1.0版、安全通訊端層(SSL)V3、無線應用通訊協定(WAP)傳輸層安全性(TLS)、無線安全傳輸層(WTLS)。 |
‧ |
|
|
模組只執行已簽署MIDlet,不會處理意圖執行未簽署MIDlet的動作。 |
‧ |
|
|
可允許或封鎖存取FFS模組,憑證會儲存在二進位檔案中,須透過序列介面複製到邊界電場切換(FFS)模組上,而建立憑證及將憑證載入模組的工具,均可免費取得。 |
Java安全運作模式如下所示。
‧ |
|
|
設定連線時不檢驗伺服器憑證,亦即伺服器憑證的確實性沒有經過驗證(圖6)。
|
圖6 模式1客戶主要憑證不存在 |
|
‧ |
|
|
模組內含客戶主要憑證,指令為送出HTTPS連線時開啟憑證驗證。設定連線時會檢驗伺服器憑證,其中兩個配置為有效配置,伺服器憑證與模組中的憑證相同(兩個憑證都是自簽署的主要憑證),或伺服器憑證會與模組憑證形成鏈結,因此伺服器憑證的確實性會透過模組的憑證進行驗證(圖7、8)。
|
圖7 模式2伺服器憑證與模組內憑證相同 |
|
圖8 模式2伺服器憑證與模組內自簽署主要憑證形成鏈結 |
|
遠端運算為M2M關鍵功能
廠商推出的內嵌Java模組提供遠端運算功能,對於有效的M2M應用程式很重要,功能包括:
‧ |
|
|
|
圖9 OTAP區塊圖示 |
此於Java世界中很常見。OTAP代表以無線方式安裝、更新、刪除Java應用程式(圖9),由於不需要使用者與裝置實際互動,適合用於位在同一區域但不容易存取的M2M裝置。OTAP主要功能包括可用於整體封包無線電服務(GPRS)或電路交換數據服務(CSD)、可透過AT指令或SMS觸發、此程序由密碼保護、可透過序列介面監視進度、透過OTAP,可將結果碼傳送到伺服器、刪除作業代表可重新啟動模組,以及增量OTAP可更新少量程式碼片段「liblet」。 |
‧ |
|
|
裝置可透過電路交換或封包交換連線,連接到提供韌體的外部伺服器,即可無線下載模組韌體(FOTA)。無線下載韌體更新需三個步驟,步驟一為模組連接到外部伺服器(FTP/HTTP),先將新的韌體下載到暫存快取,再存到本端記憶體。步驟二是新韌體儲存到本端記憶體後,模組會重新設定,開始將韌體傳送到內部快閃記憶體。步驟三則為安裝完新韌體後,模組會自動重新開機,便可開始運作。 |
FOTA可透過Java(光碟片中包含FOTA實務範例的示範程式)或外部微處理器(MPU)控制。在FOTA及OTAP程序中,韌體檔案均為*.USF格式,其中包含加密格式的新韌體,不僅經過安全總和檢查,且需一個區塊接著一個區塊寫入快閃記憶體,依照模組類型的不同,*.USF檔案的大小約在3M~4MB。此外,安裝韌體時若發生錯誤,如電壓下降、SPI連線中斷等,更新程序會在模組重新開機後重新執行。
Java增進應用程式執行順暢度
廠商的Java模組具有內建功能,可讓M2M軟體應用程式執行更為順暢,如在除錯環境中,Java ME模組透過通用序列匯流排(USB)或RS232線路連接到個人電腦(PC),便可對應用程式進行編輯、建置、除錯,或在個人電腦上的整合開發環境(IDE)中執行。在IDE控制下執行MIDlet或對其進行除錯作業時,應用程式不會在個人電腦上執行,而會直接在模組上執行(機上執行)。
若為除錯模式(圖10),MIDlet的執行仍能透過IDE控制(機上除錯);若為一般模式,則MIDlet會複製到模組並正常開始執行。此外,支援的IDE包括Eclipse、NetBeans、Borland JBuilder X。
|
圖10 Java 應用程式在除錯環境下的資料流程 |
(本文作者任職於訊亦)