專利名稱:移動終端及其應(yīng)用程序運行方法
移動終端及其應(yīng)用程序運行方法技術(shù)領(lǐng)域
本發(fā)明屬于移動通信領(lǐng)域,特別是一種移動終端及其應(yīng)用程序運行方法。
技術(shù)背景
目前,隨著移動通信技術(shù)的不斷發(fā)展,手機已經(jīng)深入到人們的生活中,移動通信也已成為最廣泛使用的通信方式。手機作為生活娛樂和商業(yè)事務(wù)的工具,在用戶的生活中占有重要的地位。
市面上常見的低端手機等移動終端是基于嵌入式系統(tǒng)進行開發(fā),如ARM (Advanced RISC Machines,公司名,也是對一類嵌入式微處理器的通稱)嵌入式系統(tǒng)等。這類手機具有相當?shù)膬r格敏感性,通常采用速度不高,成本較低的存儲元件。
為了保證用戶在拿到手機時即可使用手機內(nèi)容服務(wù)商提供的附屬功能,手機制造商通常會在手機出廠時,將上述功能對應(yīng)應(yīng)用程序的映像文件(bin文件)預(yù)先存儲在手機中。此外,為防止用戶非法修改上述應(yīng)用程序中的數(shù)據(jù),通常的做法是將映像文件通過一次性燒錄預(yù)先存儲在手機的ROM (只讀存儲器,通常采用NAND Flash芯片)中,作為固件手機存在。由于這類手機的只讀存儲器的存儲空間通常較小(通常為100KB-300KB),對所燒錄映像文件的容量大小有嚴格限制。隨著現(xiàn)有手機應(yīng)用程序容量的逐漸增大,在不增加手機硬件成本的前提下,用戶在拿到手機時即可正常使用的應(yīng)用程序選擇很少,因而無法充分使用到手機內(nèi)容服務(wù)商提供的各種附屬功能。發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題在于提供一種移動通信領(lǐng)域的程序加載運行方法,特別是一種移動終端及其應(yīng)用程序運行方法。
本發(fā)明的目的是通過以下技術(shù)方案來實現(xiàn)的
—種移動終端應(yīng)用程序運行方法,所述方法包括以下步驟
步驟a 初始化移動終端硬件,進行存儲器重映射;
步驟b 復(fù)制加載器程序至所述移動終端的隨機存儲器,運行所述加載器程序;
步驟c 獲取應(yīng)用程序,復(fù)制所述應(yīng)用程序至所述隨機存儲器,運行所述應(yīng)用程序。
在本發(fā)明的技術(shù)方案中,所述步驟b進一步包括將所述加載器程序的映像文件的RO段和RW段從所述移動終端的只讀存儲器全部復(fù)制至所述隨機存儲器中,將所述隨機存儲器的ZI段所在的區(qū)域全部清零,修改程序計數(shù)器指向所述加載器程序的映像文件的起始地址。
在本發(fā)明的技術(shù)方案中,所述步驟c進一步包括
步驟cl 在所述移動終端的存儲卡中查找應(yīng)用程序,找到則繼續(xù)步驟c2,否則轉(zhuǎn)至步驟c3 ;
步驟c2 判斷查找到的應(yīng)用程序是否被修改,被修改則結(jié)束,否則繼續(xù)步驟c4 ;
步驟c3 連接內(nèi)容服務(wù)商的服務(wù)器,下載應(yīng)用程序;
步驟c4 復(fù)制所述應(yīng)用程序至所述隨機存儲器,運行所述應(yīng)用程序。
在本發(fā)明的技術(shù)方案中,所述加載器程序的代碼中指定有所述應(yīng)用程序在所述隨機存儲器中的運行地址,并將所述加載器程序的入口函數(shù)指定為所述應(yīng)用程序,運行所述應(yīng)用程序時,將所述應(yīng)用程序復(fù)制至所述運行地址,并將所述程序計數(shù)器指向所述運行地址。
在本發(fā)明的技術(shù)方案中,所述加載器程序?qū)λ鰬?yīng)用程序的外發(fā)命令設(shè)置標志位。
一種移動終端,所述移動終端包括初始化模塊、加載器模塊以及應(yīng)用程序模塊,所述初始化模塊用于初始化移動終端硬件,進行存儲器重映射,所述加載器模塊用于復(fù)制加載器程序至所述移動終端的隨機存儲器,運行所述加載器程序,所述應(yīng)用程序模塊用于獲取應(yīng)用程序,復(fù)制所述應(yīng)用程序至所述隨機存儲器,運行所述應(yīng)用程序。
在本發(fā)明的技術(shù)方案中,所述加載器模塊還用于將所述加載器程序的映像文件的 RO段和RW段從所述移動終端的只讀存儲器全部復(fù)制至所述隨機存儲器中,將所述隨機存儲器的ZI段所在的區(qū)域全部清零,修改程序計數(shù)器指向所述加載器程序的映像文件的起始地址。
在本發(fā)明的技術(shù)方案中,所述移動終端還包括查找模塊、判斷模塊及下載模塊,所述查找模塊用于在所述移動終端的存儲卡中查找應(yīng)用程序,所述判斷模塊用于判斷查找到的應(yīng)用程序是否被修改,所述下載模塊用于連接內(nèi)容服務(wù)商的服務(wù)器,下載應(yīng)用程序。
在本發(fā)明的技術(shù)方案中,所述加載器程序的代碼中指定有所述應(yīng)用程序在所述隨機存儲器中的運行地址,并將所述加載器程序的入口函數(shù)指定為所述應(yīng)用程序,運行所述應(yīng)用程序時,將所述應(yīng)用程序復(fù)制至所述運行地址,并將所述程序計數(shù)器指向所述運行地址。
在本發(fā)明的技術(shù)方案中,所述加載器程序?qū)λ鰬?yīng)用程序的外發(fā)命令設(shè)置標志位。
本發(fā)明的技術(shù)方案可以讓用戶在新買到手機時即可自由選擇需要執(zhí)行的應(yīng)用程序,充分使用到手機內(nèi)容服務(wù)商提供的各種附屬功能,且該技術(shù)方案不依賴于手機硬件環(huán)境,降低了手機的制造成本。
圖1為本發(fā)明移動終端應(yīng)用程序運行方法第一實施例的流程圖。
圖2為本發(fā)明移動終端應(yīng)用程序運行方法第二實施例的流程圖。
圖3為本發(fā)明移動終端第一實施例的模塊圖。
圖4為本發(fā)明移動終端第二實施例的模塊圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明的技術(shù)方案是通過在移動終端的只讀存儲器中預(yù)置加載器程序,通過該加載器程序運行內(nèi)容服務(wù)商提供的其他應(yīng)用程序,以便于用戶使用。
本發(fā)明的移動終端嵌入式系統(tǒng)在運行各種程序時,需要裝載該程序?qū)?yīng)的映像文件。裝載映像文件的過程主要是將該映像文件從只讀存儲器復(fù)制到隨機存儲器(RAM,也就是移動終端內(nèi)存)中。系統(tǒng)通過更改程序計數(shù)器指向映像文件的起始地址,執(zhí)行該程序。
請參閱圖1,本發(fā)明第一實施例的移動終端應(yīng)用程序運行方法主要包括以下步驟
步驟SlOl 初始化移動終端硬件,進行存儲器重映射;
移動終端硬件初始化主要是完成CPU (中央處理器)的初始化,如設(shè)置CPU的段寄存器、堆棧指針等,以及其他硬件的初始化。并進行存儲器重映射。在系統(tǒng)上電初期,只有只讀存儲器被分配在存儲器映射的一個位置,例如
只讀存儲器起始地址0x00000000,結(jié)束地址0x00040000 (大小256KB)
隨機存儲器還沒有被初始化。本步驟的作用是使隨機存儲器可用,并將只讀存儲器重映射到一個新的地址。完成后如下
隨機存儲器起始地址0x00000000,結(jié)束地址0x00040000 (大小256KB)
只讀存儲器起始地址0x00040000,結(jié)束地址0x00080000 (大小256KB)
即隨機存儲器被放在地址0x00000000上,只讀存儲器換到一個更高的地址。
步驟S102 復(fù)制加載器程序至隨機存儲器,運行加載器程序;
本發(fā)明的加載器程序的映像文件由RO段、RW段以及ZI段構(gòu)成,其包括代碼和數(shù)據(jù)。其中,數(shù)據(jù)可分為只讀數(shù)據(jù)(常量)和可讀寫數(shù)據(jù)(變量),可讀寫數(shù)據(jù)又可分為有初始值數(shù)據(jù)和無初始值(或初始值為零)數(shù)據(jù)。代碼和只讀數(shù)據(jù)都具有只讀屬性,其存放在 RO(Read-Only)段。有初始值的可讀寫數(shù)據(jù)存放在RW(Read-Write)段。無初始值的可讀寫數(shù)據(jù)存放在ZI(Zero-^iitial)段。
運行時,將映像文件的RO段和RW段從只讀存儲器全部復(fù)制至隨機存儲器中,再從隨機存儲器中運行。ZI段數(shù)據(jù)都是0,無需復(fù)制,只要程序運行之前將ZI數(shù)據(jù)所在的區(qū)域一律清零即可。因此,RO段中的代碼至少應(yīng)該包括的功能為將映像文件RO段和RW段從只讀存儲器中復(fù)制到隨機存儲器中,將ZI段所在的隨機存儲器區(qū)域全部清零。
在將加載器映像文件的RO段和RW段從只讀存儲器全部復(fù)制至隨機存儲器中后, 修改程序計數(shù)器指向映像文件的起始地址(pc = 0x00000000),運行該加載器程序。
步驟S103 獲取應(yīng)用程序,復(fù)制應(yīng)用程序至隨機存儲器,運行應(yīng)用程序。
若移動終端制造商在移動終端出廠時已經(jīng)為用戶提供了存儲卡,并將移動終端內(nèi)容服務(wù)商的應(yīng)用程序預(yù)置在其中,則加載器程序首先查找并運行存儲卡上的應(yīng)用程序。在查找到移動終端存儲卡中的應(yīng)用程序后,運行前,需要判斷該應(yīng)用程序是否被非法修改。通過在應(yīng)用程序中設(shè)置數(shù)據(jù)標志位來進行判斷。若移動終端制造商在移動終端出廠時未配置存儲卡,或存儲卡中沒有存儲應(yīng)用程序,則連接移動終端內(nèi)容服務(wù)商的服務(wù)器,下載應(yīng)用程序。
運行加載器程序后,用戶可以從程序界面看到可供選擇的內(nèi)容服務(wù)商應(yīng)用程序列表,在用戶點擊所需的應(yīng)用程序后,即可通過加載器程序運行該應(yīng)用程序。本發(fā)明的應(yīng)用程序的映像文件構(gòu)成與加載器程序類似,也由RO段、RW段以及ZI段構(gòu)成,包括代碼和數(shù)據(jù)。在加載器程序的代碼中,指定了應(yīng)用程序在隨機存儲器中的運行地址(如0x000fffff), 并將加載器程序的入口函數(shù)指定為該應(yīng)用程序。運行時,將應(yīng)用程序復(fù)制到該運行地址,并將程序計數(shù)器指向應(yīng)用程序映像文件的起始地址(pc = OxOOOfffff)即可運行該應(yīng)用程序。
在本發(fā)明的較佳實施方式中,針對多個應(yīng)用程序(例如一個娛樂程序及其相應(yīng)的計費程序)同時運行的情況,本發(fā)明的加載器程序還對每一應(yīng)用程序的外發(fā)命令設(shè)置了標志位。這樣,當系統(tǒng)響應(yīng)應(yīng)用程序的外發(fā)命令時,加載器可以知道應(yīng)該將該相應(yīng)發(fā)送至哪一個應(yīng)用程序的回調(diào)程序。當多個應(yīng)用程序同時發(fā)出一樣的外發(fā)命令時,則以后入先出的規(guī)則進行處理。
請參閱圖2,本發(fā)明第二實施例的移動終端應(yīng)用程序運行方法包括以下步驟
步驟S201 初始化移動終端硬件;
硬件初始化主要是完成CPU(中央處理器)的初始化,如設(shè)置CPU的段寄存器、堆棧指針等,以及其他硬件的初始化。
步驟S202 進行存儲器重映射;
在系統(tǒng)上電初期,只有只讀存儲器被分配在存儲器映射的一個位置,例如
只讀存儲器起始地址0x00000000,結(jié)束地址0x00040000 (大小256KB)
隨機存儲器還沒有被初始化。本步驟的作用是使隨機存儲器可用,并將只讀存儲器重映射到一個新的地址。完成后如下
隨機存儲器起始地址0x00000000,結(jié)束地址0x00040000 (大小256KB)
只讀存儲器起始地址0x00040000,結(jié)束地址0x00080000 (大小256KB)
即隨機存儲器被放在地址0x00000000上,只讀存儲器換到一個更高的地址。
步驟S203 復(fù)制加載器程序映像文件至隨機存儲器,運行加載器程序;
本發(fā)明的加載器程序的映像文件由RO段、RW段以及ZI段構(gòu)成,其包括代碼和數(shù)據(jù)。
其中,數(shù)據(jù)可分為只讀數(shù)據(jù)(常量)和可讀寫數(shù)據(jù)(變量),可讀寫數(shù)據(jù)又可分為有初始值數(shù)據(jù)和無初始值(或初始值為零)數(shù)據(jù)。代碼和只讀數(shù)據(jù)都具有只讀屬性,其存放在RO(Read-Only)段。有初始值的可讀寫數(shù)據(jù)存放在RW(Read-Write)段。無初始值的可讀寫數(shù)據(jù)存放在ZI(Zero-^iitial)段。
運行時,將映像文件的RO段和RW段從只讀存儲器全部復(fù)制至隨機存儲器中,再從隨機存儲器中運行。ZI段數(shù)據(jù)都是0,無需復(fù)制,只要程序運行之前將ZI數(shù)據(jù)所在的區(qū)域一律清零即可。
因此,RO段中的代碼至少應(yīng)該包括的功能為將映像文件RO段和RW段從只讀存儲器中復(fù)制到隨機存儲器中,將ZI段所在的隨機存儲器區(qū)域全部清零。
在將加載器映像文件的RO段和RW段從只讀存儲器全部復(fù)制至隨機存儲器中后, 修改程序計數(shù)器指向映像文件的起始地址(pc = 0x00000000),運行該加載器程序。
步驟S204 在移動終端存儲卡中查找內(nèi)容服務(wù)商的應(yīng)用程序,找到則繼續(xù)步驟 S205,否則轉(zhuǎn)至步驟S206 ;
若移動終端制造商在移動終端出廠時已經(jīng)為用戶提供了存儲卡,并將移動終端內(nèi)容服務(wù)商的應(yīng)用程序預(yù)置在其中,則加載器程序首先運行存儲卡上的應(yīng)用程序。
步驟S205 判斷查找到的應(yīng)用程序是否被修改,被修改則結(jié)束,否則繼續(xù)步驟 S207 ;
在檢測到移動終端存儲卡中的應(yīng)用程序后,運行前,需要判斷該應(yīng)用程序是否被非法修改。通過在應(yīng)用程序中設(shè)置數(shù)據(jù)標志位來進行判斷。
步驟S206 連接內(nèi)容服務(wù)商的服務(wù)器,下載應(yīng)用程序;
若移動終端制造商在移動終端出廠時未配置存儲卡,或存儲卡中沒有存儲應(yīng)用程序,則連接移動終端內(nèi)容服務(wù)商的服務(wù)器,下載應(yīng)用程序。
步驟S207 復(fù)制應(yīng)用程序至隨機存儲器,運行應(yīng)用程序。
運行加載器程序后,用戶可以從程序界面看到可供選擇的內(nèi)容服務(wù)商應(yīng)用程序列表,在用戶點擊所需的應(yīng)用程序后,即對該應(yīng)用程序進行加載。
本發(fā)明的應(yīng)用程序的映像文件構(gòu)成與加載器程序類似,也由RO段、RW段以及ZI 段構(gòu)成,包括代碼和數(shù)據(jù)。在加載器程序的代碼中,指定了應(yīng)用程序在隨機存儲器中的運行地址(如0x000fffff),并將加載器程序的入口函數(shù)指定為該應(yīng)用程序。運行時,將應(yīng)用程序復(fù)制到該運行地址,并將程序計數(shù)器指向應(yīng)用程序映像文件的起始地址(PC = OxOOOfffff)即可運行該應(yīng)用程序。
在本發(fā)明的較佳實施方式中,針對多個應(yīng)用程序(例如一個娛樂程序及其相應(yīng)的計費程序)同時運行的情況,本發(fā)明的加載器還對每一應(yīng)用程序的外發(fā)命令設(shè)置了標志位。這樣,當系統(tǒng)響應(yīng)應(yīng)用程序的外發(fā)命令時,加載器可以知道應(yīng)該將該相應(yīng)發(fā)送至哪一個應(yīng)用程序的回調(diào)程序。當多個應(yīng)用程序同時發(fā)出一樣的外發(fā)命令時,則以后入先出的規(guī)則進行處理。
請參閱圖3,本發(fā)明第一實施例的移動終端主要包括初始化模塊、加載器模塊以及應(yīng)用程序模塊。
其中,初始化模塊用于初始化移動終端硬件,進行存儲器重映射。移動終端硬件初始化主要是完成CPU (中央處理器)的初始化,如設(shè)置CPU的段寄存器、堆棧指針等,以及其他硬件的初始化。并進行存儲器重映射。在系統(tǒng)上電初期,只有只讀存儲器被分配在存儲器映射的一個位置,例如
只讀存儲器起始地址0x00000000,結(jié)束地址0x00040000 (大小256KB)
隨機存儲器還沒有被初始化。本模塊的作用是使隨機存儲器可用,并將只讀存儲器重映射到一個新的地址。完成后如下
隨機存儲器起始地址0x00000000,結(jié)束地址0x00040000 (大小256KB)
只讀存儲器起始地址0x00040000,結(jié)束地址0x00080000 (大小256KB)
即隨機存儲器被放在地址0x00000000上,只讀存儲器換到一個更高的地址。
加載器模塊用于復(fù)制加載器程序至隨機存儲器,運行加載器程序。本發(fā)明的加載器程序的映像文件由RO段、RW段以及ZI段構(gòu)成,其包括代碼和數(shù)據(jù)。其中,數(shù)據(jù)可分為只讀數(shù)據(jù)(常量)和可讀寫數(shù)據(jù)(變量),可讀寫數(shù)據(jù)又可分為有初始值數(shù)據(jù)和無初始值(或初始值為零)數(shù)據(jù)。代碼和只讀數(shù)據(jù)都具有只讀屬性,其存放在RO(Read-Only) 段。有初始值的可讀寫數(shù)據(jù)存放在RW(Read-Write)段。無初始值的可讀寫數(shù)據(jù)存放在 ZI (Zero-Initial)段。
運行時,將映像文件的RO段和RW段從只讀存儲器全部復(fù)制至隨機存儲器中,再從隨機存儲器中運行。ZI段數(shù)據(jù)都是0,無需復(fù)制,只要程序運行之前將ZI數(shù)據(jù)所在的區(qū)域一律清零即可。因此,RO段中的代碼至少應(yīng)該包括的功能為將映像文件RO段和RW段從只讀存儲器中復(fù)制到隨機存儲器中,將ZI段所在的隨機存儲器區(qū)域全部清零。
在將加載器映像文件的RO段和RW段從只讀存儲器全部復(fù)制至隨機存儲器中后, 修改程序計數(shù)器指向映像文件的起始地址(pc = 0x00000000),運行該加載器程序。
應(yīng)用程序模塊用于獲取應(yīng)用程序,復(fù)制應(yīng)用程序至隨機存儲器,運行應(yīng)用程序。若移動終端制造商在移動終端出廠時已經(jīng)為用戶提供了存儲卡,并將移動終端內(nèi)容服務(wù)商的應(yīng)用程序預(yù)置在其中,則加載器程序首先加載存儲卡上的應(yīng)用程序。在檢測到移動終端存儲卡中的應(yīng)用程序后,加載前,需要判斷該應(yīng)用程序是否被非法修改。通過在應(yīng)用程序中設(shè)置數(shù)據(jù)標志位來進行判斷。若移動終端制造商在移動終端出廠時未配置存儲卡,或存儲卡中沒有存儲應(yīng)用程序,則連接移動終端內(nèi)容服務(wù)商的服務(wù)器,下載應(yīng)用程序。
運行加載器程序后,用戶可以從程序界面看到可供選擇的內(nèi)容服務(wù)商應(yīng)用程序列表,在用戶點擊所需的應(yīng)用程序后,即可通過加載器程序運行該應(yīng)用程序。本發(fā)明的應(yīng)用程序的映像文件構(gòu)成與加載器程序類似,也由RO段、RW段以及ZI段構(gòu)成,包括代碼和數(shù)據(jù)。 在加載器程序的代碼中,指定了應(yīng)用程序在隨機存儲器中的運行地址(如0x000fffff), 并將加載器程序的入口函數(shù)指定為該應(yīng)用程序。運行時,將應(yīng)用程序復(fù)制到該運行地址,并將程序計數(shù)器指向應(yīng)用程序映像文件的起始地址(pc = OxOOOfffff)即可運行該應(yīng)用程序。
在本發(fā)明的較佳實施方式中,針對多個應(yīng)用程序(例如一個娛樂程序及其相應(yīng)的計費程序)同時運行的情況,本發(fā)明的加載器程序還對每一應(yīng)用程序的外發(fā)命令設(shè)置了標志位。這樣,當系統(tǒng)響應(yīng)應(yīng)用程序的外發(fā)命令時,加載器可以知道應(yīng)該將該相應(yīng)發(fā)送至哪一個應(yīng)用程序的回調(diào)程序。當多個應(yīng)用程序同時發(fā)出一樣的外發(fā)命令時,則以后入先出的規(guī)則進行處理。
請參閱圖4,本發(fā)明第二實施例的移動終端包括初始化模塊、重映射模塊、加載器模塊、查找模塊、判斷模塊、下載模塊以及應(yīng)用程序模塊。
初始化模塊用于初始化移動終端硬件。硬件初始化主要是完成CPU (中央處理器) 的初始化,如設(shè)置CPU的段寄存器、堆棧指針等,以及其他硬件的初始化。
重映射模塊用于進行存儲器重映射。在系統(tǒng)上電初期,只有只讀存儲器被分配在存儲器映射的一個位置,例如
只讀存儲器起始地址0x00000000,結(jié)束地址0x00040000 (大小256KB)
隨機存儲器還沒有被初始化。本步驟的作用是使隨機存儲器可用,并將只讀存儲器重映射到一個新的地址。完成后如下
隨機存儲器起始地址0x00000000,結(jié)束地址0x00040000 (大小256KB)
只讀存儲器起始地址0x00040000,結(jié)束地址0x00080000 (大小256KB)
即隨機存儲器被放在地址0x00000000上,只讀存儲器換到一個更高的地址。
加載器模塊用于復(fù)制加載器程序映像文件至隨機存儲器,運行加載器程序。本發(fā)明的加載器程序的映像文件由RO段、RW段以及ZI段構(gòu)成,其包括代碼和數(shù)據(jù)。
其中,數(shù)據(jù)可分為只讀數(shù)據(jù)(常量)和可讀寫數(shù)據(jù)(變量),可讀寫數(shù)據(jù)又可分為有初始值數(shù)據(jù)和無初始值(或初始值為零)數(shù)據(jù)。代碼和只讀數(shù)據(jù)都具有只讀屬性,其存放在RO(Read-Only)段。有初始值的可讀寫數(shù)據(jù)存放在RW(Read-Write)段。無初始值的可讀寫數(shù)據(jù)存放在ZI(Zero-^iitial)段。
運行時,將映像文件的RO段和RW段從只讀存儲器全部復(fù)制至隨機存儲器中,再從隨機存儲器中運行。ZI段數(shù)據(jù)都是0,無需復(fù)制,只要程序運行之前將ZI數(shù)據(jù)所在的區(qū)域一律清零即可。
因此,RO段中的代碼至少應(yīng)該包括的功能為將映像文件RO段和RW段從只讀存儲器中復(fù)制到隨機存儲器中,將ZI段所在的隨機存儲器區(qū)域全部清零。
在將加載器映像文件的RO段和RW段從只讀存儲器全部復(fù)制至隨機存儲器中后, 修改程序計數(shù)器指向映像文件的起始地址(pc = 0x00000000),運行該加載器程序。
查找模塊用于在移動終端存儲卡中查找內(nèi)容服務(wù)商的應(yīng)用程序。若移動終端制造商在移動終端出廠時已經(jīng)為用戶提供了存儲卡,并將移動終端內(nèi)容服務(wù)商的應(yīng)用程序預(yù)置在其中,則加載器程序首先運行存儲卡上的應(yīng)用程序。
判斷模塊用于判斷查找到的應(yīng)用程序是否被修改。在檢測到移動終端存儲卡中的應(yīng)用程序后,運行前,需要判斷該應(yīng)用程序是否被非法修改。通過在應(yīng)用程序中設(shè)置數(shù)據(jù)標志位來進行判斷。
下載模塊用于連接內(nèi)容服務(wù)商的服務(wù)器,下載應(yīng)用程序。若移動終端制造商在移動終端出廠時未配置存儲卡,或存儲卡中沒有存儲應(yīng)用程序,則連接移動終端內(nèi)容服務(wù)商的服務(wù)器,下載應(yīng)用程序。
應(yīng)用程序模塊用于復(fù)制應(yīng)用程序至隨機存儲器,運行應(yīng)用程序。運行加載器程序后,用戶可以從程序界面看到可供選擇的內(nèi)容服務(wù)商應(yīng)用程序列表,在用戶點擊所需的應(yīng)用程序后,即對該應(yīng)用程序進行加載。
本發(fā)明的應(yīng)用程序的映像文件構(gòu)成與加載器程序類似,也由RO段、RW段以及ZI 段構(gòu)成,包括代碼和數(shù)據(jù)。在加載器程序的代碼中,指定了應(yīng)用程序在隨機存儲器中的運行地址(如0x000fffff),并將加載器程序的入口函數(shù)指定為該應(yīng)用程序。運行時,將應(yīng)用程序復(fù)制到該運行地址,并將程序計數(shù)器指向應(yīng)用程序映像文件的起始地址(PC = OxOOOfffff)即可運行該應(yīng)用程序。
在本發(fā)明的較佳實施方式中,針對多個應(yīng)用程序(例如一個娛樂程序及其相應(yīng)的計費程序)同時運行的情況,本發(fā)明的加載器還對每一應(yīng)用程序的外發(fā)命令設(shè)置了標志位。這樣,當系統(tǒng)響應(yīng)應(yīng)用程序的外發(fā)命令時,加載器可以知道應(yīng)該將該相應(yīng)發(fā)送至哪一個應(yīng)用程序的回調(diào)程序。當多個應(yīng)用程序同時發(fā)出一樣的外發(fā)命令時,則以后入先出的規(guī)則進行處理。
本發(fā)明的技術(shù)方案可以讓用戶在新買到手機時即可自由選擇需要執(zhí)行的應(yīng)用程序,充分使用到手機內(nèi)容服務(wù)商提供的各種附屬功能,且該技術(shù)方案不依賴于手機硬件環(huán)境,降低了手機的制造成本。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種移動終端應(yīng)用程序運行方法,其特征在于,所述方法包括以下步驟 步驟a 初始化移動終端硬件,進行存儲器重映射;步驟b 復(fù)制加載器程序至所述移動終端的隨機存儲器,運行所述加載器程序; 步驟c 獲取應(yīng)用程序,復(fù)制所述應(yīng)用程序至所述隨機存儲器,運行所述應(yīng)用程序。
2.如權(quán)利要求1所述的移動終端應(yīng)用程序運行方法,其特征在于,所述步驟b進一步包括將所述加載器程序的映像文件的RO段和RW段從所述移動終端的只讀存儲器全部復(fù)制至所述隨機存儲器中,將所述隨機存儲器的ZI段所在的區(qū)域全部清零,修改程序計數(shù)器指向所述加載器程序的映像文件的起始地址。
3.如權(quán)利要求2所述的移動終端應(yīng)用程序運行方法,其特征在于,所述步驟c進一步包括步驟cl 在所述移動終端的存儲卡中查找應(yīng)用程序,找到則繼續(xù)步驟c2,否則轉(zhuǎn)至步驟c3 ;步驟c2 判斷查找到的應(yīng)用程序是否被修改,被修改則結(jié)束,否則繼續(xù)步驟c4 ;步驟c3 連接內(nèi)容服務(wù)商的服務(wù)器,下載應(yīng)用程序;步驟c4 復(fù)制所述應(yīng)用程序至所述隨機存儲器,運行所述應(yīng)用程序。
4.如權(quán)利要求3所述的移動終端應(yīng)用程序運行方法,其特征在于,所述加載器程序的代碼中指定有所述應(yīng)用程序在所述隨機存儲器中的運行地址,并將所述加載器程序的入口函數(shù)指定為所述應(yīng)用程序,運行所述應(yīng)用程序時,將所述應(yīng)用程序復(fù)制至所述運行地址,并將所述程序計數(shù)器指向所述運行地址。
5.如權(quán)利要求4所述的移動終端應(yīng)用程序運行方法,其特征在于,所述加載器程序?qū)λ鰬?yīng)用程序的外發(fā)命令設(shè)置標志位。
6.一種移動終端,其特征在于,所述移動終端包括初始化模塊、加載器模塊以及應(yīng)用程序模塊,所述初始化模塊用于初始化移動終端硬件,進行存儲器重映射,所述加載器模塊用于復(fù)制加載器程序至所述移動終端的隨機存儲器,運行所述加載器程序,所述應(yīng)用程序模塊用于獲取應(yīng)用程序,復(fù)制所述應(yīng)用程序至所述隨機存儲器,運行所述應(yīng)用程序。
7.如權(quán)利要求6所述的移動終端,其特征在于,所述加載器模塊還用于將所述加載器程序的映像文件的RO段和RW段從所述移動終端的只讀存儲器全部復(fù)制至所述隨機存儲器中,將所述隨機存儲器的ZI段所在的區(qū)域全部清零,修改程序計數(shù)器指向所述加載器程序的映像文件的起始地址。
8.如權(quán)利要求7所述的移動終端,其特征在于,所述移動終端還包括查找模塊、判斷模塊及下載模塊,所述查找模塊用于在所述移動終端的存儲卡中查找應(yīng)用程序,所述判斷模塊用于判斷查找到的應(yīng)用程序是否被修改,所述下載模塊用于連接內(nèi)容服務(wù)商的服務(wù)器, 下載應(yīng)用程序。
9.如權(quán)利要求8所述的移動終端,其特征在于,所述加載器程序的代碼中指定有所述應(yīng)用程序在所述隨機存儲器中的運行地址,并將所述加載器程序的入口函數(shù)指定為所述應(yīng)用程序,運行所述應(yīng)用程序時,將所述應(yīng)用程序復(fù)制至所述運行地址,并將所述程序計數(shù)器指向所述運行地址。
10.如權(quán)利要求9所述的移動終端,其特征在于,所述加載器程序?qū)λ鰬?yīng)用程序的外發(fā)命令設(shè)置標志位。
全文摘要
本發(fā)明涉及一種移動終端及其應(yīng)用程序運行方法,該方法首先初始化移動終端硬件,進行存儲器重映射,再復(fù)制加載器程序至所述移動終端的隨機存儲器,運行所述加載器程序,最后獲取應(yīng)用程序,復(fù)制所述應(yīng)用程序至所述隨機存儲器,運行所述應(yīng)用程序。本發(fā)明的技術(shù)方案可以讓用戶在新買到手機時即可自由選擇需要執(zhí)行的應(yīng)用程序,充分使用到手機內(nèi)容服務(wù)商提供的各種附屬功能,且該技術(shù)方案不依賴于手機硬件環(huán)境,降低了手機的制造成本。
文檔編號G06F9/445GK102495738SQ201110336710
公開日2012年6月13日 申請日期2011年10月31日 優(yōu)先權(quán)日2011年10月31日
發(fā)明者張?zhí)锊?申請人:深圳市五巨科技有限公司