" />
所屬欄目:軟件開發論文 發布日期:2012-10-22 10:17 熱度:
摘要:隨著電子通訊技術的不單進步,消費者對手機的功能需求越來越多樣化和高端化,但是手機生產商通常只能夠滿足的是具有普遍性的消費需求,手機用戶為了實現手機功能的個性化,往往需要通過外部操作來完成,在這之中,通過靜態鏈接的方式來進行加載的效果有限,動態加載的功能則更為強大。本文的主要內容就是以功能手機為例,介紹如何實現動態加載在功能手機上的應用。
關鍵詞:功能手機;動態加載;函數跳轉表;重定位
一、手機動態加載的研究背景
手機已經成為一件普及率極高的通信工具,當前的手機市場從整體上來看已經逐漸表現出一種飽和的態勢,手機市場的持續發展,必須依賴于換機市場,滿足當前手機用戶的換機需求。消費者換機,實際上就是對手機功能的進一步追求,當然,要提升手機的功能,除了購買新手機外,另一種方式就是對現有手機的功能進行加載。市面上的手機,我們分為兩種,一種就是在2011年掀起了一撥熱潮的智能化手機,另一種就是不具備智能操作系統的功能手機。智能手機與功能手機的區別就在于,手機是否有可以獨立運行的操作系統。智能手機能夠允許用戶自行操作、下載、安裝程序,最為普遍的就是游戲軟件和一些生活類軟件。智能操作系統作用的發揮,還必須依賴第三方服務商提供與操作平臺相匹配的程序或者軟件,通過操作系統與第三方服務商的聯合作用,實現手機功能的拓展與擴充。而功能手機,通常只能通過接口的方式,例如比較常見的Java程序實現靜態的加載。基本上,在當前除了智能手機和PDA手機以外,其他手機都屬于功能手機的范疇。
功能手機要實現程序的加載,只能通過不斷的加載本機的符合來實現,它無法借助第三方程序來完成安裝,只有通過接口這種靜態的鏈接,編譯成可執行的二進制文件,然后下載到非易失性的存儲設備上運行,這種不能由于手機的硬件存儲資源非常有限,所以,功能的加載與手機的內存容量之間往往是矛盾的。當前智能手機中最為常見的就是安卓系統,它與Windows類似,也是一個獨立的操作系統,智能手機的加載雖然具有很高的靈活性和便捷性,但是它對手機硬件質量要求高,對ROM和RAM空間有很高的要求。功能手機要實現動態加載,只能采取移植J2ME的方式,但是系統資源消耗大,速度慢,而且容易產生故障。所以,采用這種方式來實現功能手機的動態加載并不受用戶歡迎,難以得到普及和應用。所以,在本文中,我們探析的主要內容就是如何在功能手機中實現與第三方應用軟件的動態加載。
二、手機軟件動態加載的具體方案
手機動態加載能夠通過不同的程序與方式實現,本文采用的方式是重定位來實現第三方應用軟件加載。實現這種動態加載實際上是在一個交叉編譯的環境中來完成的,也就是在PC上需要建立一個開發環境,對手機的代碼和平臺的代碼進行編譯,在手機上也需要建立一個空間,實現重定位。采用這種模式進行動態加載,需要三個流程。
(一)函數跳轉
要進行函數跳轉,是因為,在功能手機中,本機函數是動態鏈接的方法,但是要實現第三方軟件的應用,本機函數就必須確保能夠與其協同工作,我們通過函數跳轉表來表達這一問題。具體操作方式就是在手機端中建立一個列表,將所有函數的入口地址輸入這個列表中,這樣,我們在PC端只需要通過地址的查找就能夠實現函數的使用。當然,手機端中的函數分為普通函數和函數指針,所以應該按照返回值的類型將它們區別開來,分別建立在列表中,并且將列表的首地址用EX-PORT輸出,這樣,我們只需要在PC端采用IMPORT命令引入列表就可以實現與手機端的函數調用。
(二)資源重定位
在進行重定位以前,我們必須做好前期的數據準備工作,也就是先從ADS1.2編譯鏈接形成的ELF文件中取出需要重定位的數據(相對于虛擬地址的偏移量),由于每一個平臺的文件格式要求存在著差異,所以應該進行格式的調整,將文件下載到手機t卡,動態加載時在手機端通過二次重定位來實現。
第一,文件格式的分析。文件格式的統一,是能夠實現重定位的重要前提,一般平臺對文件格式有著自己的要求,包括文件頭、Code部分、已初始化數據部分、未初始化數據部分、重定位數據和資源數據六部分組成。第二,重定位操作。重定位操作是在一個交叉編譯環境下進行的,它包括手機端和PC端兩部分,在兩個環境中的操作方式有著很大的不同,PC端操作如下:建立一個scat文件,指定編譯、鏈接的虛擬ROM地址和虛擬的RAM地址,然后利用ADS1.2編譯源代碼,通過ADS1.2鏈接生成帶調試信息的ARM映像文件。運用gmake運行Makefile文件即可為源文件中的每個函數生成一個ELF段,并鏈接合并得到ELF文件code.axf。將code.axf文件中的各個段分別按照該系統定義文件格式結構生成一個新的文code.df(自定義的文件及擴展名)。手機端實現:在RAM中申請文件大小的空間,將整個文件載入到RAM中。通過重定位的數據,找到該數據所在的位置,把該數據地址-虛擬的RAM地址+申請空間的首地址,這樣就完成了重定位。然后把手機端PC的指針指向CODE的首地址,直接運行即可正常運行。
(三)外部資源訪問
動態加載需要訪問到的外部資源,主要有三項:字符串、圖片還有鈴聲。三種資源的屬性和格式有著很大的差異,所以我們在進行訪問時也必須采用不同的方式來進行。
第一,字符串的處理。字符串的處理較為復雜,因為字符串有很多個語種,每一個語種表達同一個字符串的長度也有著很多的不同,并且字符串從整體上看特別容易重復,我們在分析字符串的時候采用的是哈希算法,它能夠有效的解決字符重復問題。我們在對字符串進行編譯的時候,必須采用雙組制的方式,也就是每一個語種我們都需要使用兩組編譯,一個組用來存放字符串本身的內容,另一個則是用來表示每一個對應字符串的偏移量。我們在手機端中,只需要根據字符串獨立的ID在對應的列表中找到對應的字符偏移量,就能夠返回字符資源。第二,圖片和鈴聲的處理,相對于字符串,這兩種資源的處理方式較為簡便,同時方式上也大致相同。主要是通過在源文件上進行文件頭的添加,這個文件頭應該包括八個字節的信息,第一個字節表示的是資源的類型,四個字節表示文件的長度,圖片和鈴聲處理的差異表現在最后三個字節,在對鈴聲進行編譯的時候是采用不處理的方式,在對圖片進行編譯的時候則是用來表示寬度和長度。
三、效果分析
在本文中,我們提出了一種采用重定位方式實現手機動態加載的方案,通過這種方法,可以有效的改變只能通過本機增加程序進行加載的限制,將其與高端智能手機一樣,實現對第三方程序的加載以及利用。從最終的完成效果看,達到預期效果。并且在現實生產中,由于系統的開銷較小,不會加重手機生產商的生產成本,并且作為源生程序,其運行速度和穩定性能都非常好。當然,它的不足之處就在于能夠通過這種重定位實現動態加載的平臺較少,只有MTK平臺能夠滿足功能需求,并且能夠應用的軟件資源也很少,功能開發受到局限。
參考文獻:
[1]王娜.2008年中國手機業特點與國產手機發展之路[J].通訊世界,2009,(1):32-33
[2]楊偉,羅蕾.嵌入式系統中的模塊動態加載技術[J].單片機與嵌入式系統應用,2005,(11):8-10
[3]齊寧,丁松陽,孫維新,等.基于加載機制分析的ELF文件main函數定位技術[J].計算機工程,2007,33(6):89-91
文章標題:手機軟件中的動態加載方法及其應用
轉載請注明來自:http://www.56st48f.cn/fblw/dianxin/ruanjiankaifa/13579.html
攝影藝術領域AHCI期刊推薦《Phot...關注:106
Nature旗下多學科子刊Nature Com...關注:152
中小學教師值得了解,這些教育學...關注:47
2025年寫管理學論文可以用的19個...關注:192
測繪領域科技核心期刊選擇 輕松拿...關注:64
及時開論文檢索證明很重要關注:52
中國水產科學期刊是核心期刊嗎關注:54
國際出書需要了解的問題解答關注:58
合著出書能否評職稱?關注:48
電信學有哪些可投稿的SCI期刊,值...關注:66
通信工程行業論文選題關注:73
SCIE、ESCI、SSCI和AHCI期刊目錄...關注:121
評職稱發論文好還是出書好關注:68
復印報刊資料重要轉載來源期刊(...關注:51
英文期刊審稿常見的論文狀態及其...關注:69
電子信息論文范文
智能科學技術論文 廣播電視論文 光電技術論文 計算機信息管理論文 計算機網絡論文 計算機應用論文 通信論文 信息安全論文 微電子應用論文 電子技術論文 生物醫學工程論文 軟件開發論文
SCI期刊分析
copyright © www.56st48f.cn, All Rights Reserved
搜論文知識網 冀ICP備15021333號-3