專利名稱:將應用程序動態(tài)下載到用戶識別模塊的方法、系統(tǒng)及模塊的制作方法
技術(shù)領域:
本發(fā)明涉及智能卡的程序下載,更具體地,涉及用戶識別模塊的動態(tài)程序下載方法、系統(tǒng)及其支持該方法的用戶識別模塊。
背景技術(shù):
空中下載技術(shù)(OTA)的出現(xiàn)使得SIM卡、UIM卡等用戶識別模塊能夠從服務器動態(tài)下載最新的菜單,已成為一種為用戶提供新的增值服務的重要手段。但是,一些增值服務的實現(xiàn)還需要在用戶識別模塊上運行相應的應用程序,目前還不能夠?qū)崿F(xiàn)應用程序到用戶識別模塊的動態(tài)下載,這對一些增值服務的推廣帶來了不便。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種將應用程序動態(tài)下載到用戶識別模塊的方法,可以將程序代碼以機器代碼的形式動態(tài)下載到用戶識別模塊,并在用戶識別模塊上調(diào)用、刪除該程序。本發(fā)明還要提供一種實現(xiàn)該方法的系統(tǒng)和支持該方法的用戶識別模塊。
為了解決上述技術(shù)問題,本發(fā)明提供了一種將應用程序動態(tài)下載到用戶識別模塊的方法,包括以下步驟(a)應用業(yè)務服務器將要下載的應用程序的機器代碼組成若干條數(shù)據(jù),發(fā)送到用戶識別模塊;(b)用戶識別模塊在收到所述應用程序的數(shù)據(jù)后,將其中的程序代碼寫入模塊內(nèi)的存儲器,并保存程序標識和程序代碼地址的信息;(c)要調(diào)用所述應用程序時,先根據(jù)程序標識得到該程序代碼的起始地址,執(zhí)行該程序。
進一步地,上述方法還可具有以下特點還包括步驟(d)要刪除所述應用程序時,將保存的與該程序相關(guān)的所述信息刪除。
進一步地,上述方法還可具有以下特點步驟(a)中,所述應用業(yè)務服務器是通過無線方式將應用程序代碼發(fā)送到所述用戶識別模塊的,或者,所述應用業(yè)務服務器是通過寫卡終端處理模塊采用寫卡組件函數(shù)調(diào)用方式將應用程序代碼發(fā)送到所述用戶識別模塊的。
進一步地,上述方法還可具有以下特點所述應用業(yè)務服務器是通過短信通道以數(shù)據(jù)短信的方式將應用程序代碼發(fā)送到所述用戶識別模塊的。
進一步地,上述方法還可具有以下特點步驟(b)中,所述程序代碼寫入完成后,還調(diào)用程序代碼的初始化函數(shù)入口,在系統(tǒng)中進行程序的注冊。
進一步地,上述方法還可具有以下特點步驟(d)中,先在系統(tǒng)中進行要刪除程序的反注冊,再刪除其相關(guān)信息。
進一步地,上述方法還可具有以下特點所述應用程序代碼地址是用文件分配表中該程序的邏輯區(qū)間鏈表方式保存的,而該邏輯區(qū)間鏈表的首址與該程序標識的對應關(guān)系存儲在文件注冊表中,用戶識別模塊根據(jù)程序標識即可找到程序的邏輯區(qū)間鏈表的首址,進而算出程序代碼的起始地址并找到該程序的邏輯區(qū)間鏈表。
進一步地,上述方法還可具有以下特點在下載和刪除程序時,還記錄該程序下載及刪除是否完成的狀態(tài)信息,所述步驟(b)先清除未下載成功和未刪除成功的程序,再判斷是否有足夠的剩余空間,如有,再將程序代碼寫入相應的存儲位置,如空間不足,則中止下載,結(jié)束。
進一步地,上述方法還可具有以下特點所述程序代碼是存儲在存儲器的一個可動態(tài)指定的邏輯分區(qū)中,在該分區(qū)寫入數(shù)據(jù)時,將其置為數(shù)據(jù)態(tài),而在下載結(jié)束后,將其置為程序態(tài)以便直接調(diào)用。
進一步地,上述方法還可具有以下特點所述程序代碼和文件分配表都存儲在可動態(tài)指定的邏輯分區(qū),在每次寫入程序代碼或改寫文件分配表前,都將其對應的邏輯分區(qū)置為數(shù)據(jù)態(tài),而在寫入完成后,再將其對應的邏輯分區(qū)置為程序態(tài)。
進一步地,上述方法還可具有以下特點所述步驟(c)在調(diào)用應用程序之前,先保持當前程序運行的環(huán)境,而在調(diào)用結(jié)束后,再恢復調(diào)用前的程序環(huán)境。
本發(fā)明提供的支持該方法的用戶識別模塊包括監(jiān)控模塊、存儲模塊,其特點是,還包括應用程序管理模塊,其中所述監(jiān)控模塊,用于監(jiān)控收到的數(shù)據(jù),判斷其是否是下載的應用程序的機器代碼數(shù)據(jù),如果是,交給應用程序管理模塊處理;所述存儲模塊,分為若干個邏輯分區(qū),用于存儲下載的應用程序的程序標識、程序代碼地址信息以及程序代碼的數(shù)據(jù);所述應用程序管理模塊進一步包括下載控制單元,用于在收到下載的應用程序數(shù)據(jù)后,將其中的程序代碼寫入所述存儲模塊,并保存程序標識和程序代碼的地址信息;調(diào)用控制單元,用于在要調(diào)用所述應用程序時,根據(jù)程序標識得到該程序代碼的起始地址。
進一步地,上述用戶識別模塊還可具有以下特點所述應用程序管理模塊進一步包括刪除控制單元,用于在要刪除所述應用程序時,根據(jù)其程序標識找到保存的程序代碼地址信息,將該程序相關(guān)的信息刪除。
進一步地,上述用戶識別模塊還可具有以下特點還包括一個存儲管理模塊,用于控制所述存儲模塊上邏輯分區(qū)的訪問權(quán)限,在應用程序的下載、調(diào)用、刪除過程中,需要寫入程序代碼數(shù)據(jù)時,將其所在分區(qū)置為數(shù)據(jù)態(tài),而在要執(zhí)行程序代碼時,將其所在分區(qū)置為程序態(tài)。
進一步地,上述用戶識別模塊還可具有以下特點所述下載控制單元是將程序代碼的地址信息以邏輯區(qū)間鏈表的方式保存在文件分配表中,將程序標識和對應的邏輯區(qū)間鏈表首址保存在文件注冊表中,所述調(diào)用控制單元和刪除控制單元根據(jù)程序標識找到其邏輯區(qū)間鏈表的首址,進而算出程序代碼的起始地址和找到該程序的邏輯區(qū)間鏈表。
進一步地,上述用戶識別模塊還可具有以下特點所述下載控制單元還在程序代碼寫入完成后,在系統(tǒng)中進行該程序的注冊;所述刪除控制單元在刪除該程序的信息前,先在系統(tǒng)中完成該程序的反注冊。
本發(fā)明提供的實現(xiàn)程序動態(tài)下載到用戶識別模塊的系統(tǒng)包括應用業(yè)務服務器和與其通訊的用戶識別模塊,其中所述應用業(yè)務服務器包括應用業(yè)務數(shù)據(jù)管理模塊和通訊處理模塊,該應用業(yè)務數(shù)據(jù)管理模塊用于保存應用程序的機器代碼數(shù)據(jù),在用戶需要下載時,將程序代碼組成若干條數(shù)據(jù),交給所述通訊處理模塊;所述通訊處理模塊用于接收用戶的下載申請,交給所述應用業(yè)務數(shù)據(jù)管理模塊,并將組織好的應用程序代碼數(shù)據(jù)發(fā)送到申請下載的所述用戶識別模塊;所述用戶識別模塊進一步包括監(jiān)控模塊、存儲模塊和應用程序管理模塊,其中所述監(jiān)控模塊用于監(jiān)控收到的數(shù)據(jù),判斷其是否是下載的應用程序的機器代碼數(shù)據(jù),如果是,交給應用程序管理模塊處理;所述存儲模塊分為若干個邏輯分區(qū),用于存儲下載的應用程序的程序標識、程序代碼地址信息以及程序代碼的數(shù)據(jù);所述應用程序管理模塊進一步包括下載控制單元,用于在剩余空間足夠時,將收到的應用程序數(shù)據(jù)中的程序代碼寫入所述存儲模塊,并保存程序標識和程序代碼的地址信息;調(diào)用控制單元,用于根據(jù)程序標識得到該程序代碼的起始地址,執(zhí)行該應用程序;刪除控制單元,用于將保存的應用程序的相關(guān)信息刪除。
進一步地,上述系統(tǒng)還可具有以下特點所述通訊處理模塊進一步包括接收單元和發(fā)送單元,所述接收單元用于接收從短消息網(wǎng)關(guān)發(fā)來的短信,識別出下載應用程序的申請,將用戶手機號和要下載的應用程序信息通知給所述應用業(yè)務數(shù)據(jù)管理模塊,所述發(fā)送單元用于將組織好的每條數(shù)據(jù)加上狀態(tài)字,按照數(shù)據(jù)短信方式經(jīng)短消息網(wǎng)關(guān)發(fā)送到用戶識別模塊。
進一步地,上述系統(tǒng)還可具有以下特點還包括一個寫卡終端處理模塊,該模塊采用寫卡組件函數(shù)調(diào)用方式將應用程序代碼傳送到所述用戶識別模塊。
進一步地,上述系統(tǒng)還可具有以下特點所述用戶識別模塊還包括一個存儲管理模塊,用于控制所述存儲模塊上邏輯分區(qū)的訪問權(quán)限,在應用程序的下載、調(diào)用和刪除過程中,需要寫入程序代碼數(shù)據(jù)時,將其所在分區(qū)置為數(shù)據(jù)態(tài),而在要執(zhí)行程序代碼時,將其所在分區(qū)置為程序態(tài)。
綜上所述,采用本發(fā)明,可以將應用程序的機器代碼動態(tài)下載到用戶識別模塊,并可實現(xiàn)調(diào)用和刪除功能。而且,本發(fā)明下載到用戶識別模塊的內(nèi)容是不需要解釋執(zhí)行的機器代碼數(shù)據(jù),調(diào)用時只需找到程序入口即可直接調(diào)用,不需要進一步的解釋性工作,運行速度很快。而且下載的程序不僅能作為系統(tǒng)需要維護的數(shù)據(jù),還可以作為底層操作系統(tǒng)的擴充。
進一步地,通過對存儲區(qū)的動態(tài)指定,可以使程序代碼所在分區(qū)在寫入數(shù)據(jù)時置為數(shù)據(jù)態(tài),而在執(zhí)行時置為程序態(tài),用簡單的硬件設計來實現(xiàn)應用程序的下載和調(diào)用。
圖1是本發(fā)明實施例實現(xiàn)程序動態(tài)下載到用戶識別模塊的系統(tǒng)圖。
圖2是本發(fā)明實施例用戶識別模塊的結(jié)構(gòu)框圖。
圖3是本發(fā)明實施例方法下載及程序代碼存儲的流程圖。
圖4是本發(fā)明實施例方法調(diào)用已下載程序的流程圖。
圖5是本發(fā)明實施例方法刪除下載程序的流程圖。
具體實施例方式
第一實施例本實施例實現(xiàn)應用程序動態(tài)下載到用戶識別模塊的方法所基于的系統(tǒng)如圖1所示,由應用業(yè)務服務器,以及通過短信通道與該服務器交互的SIM卡(由手機完成短信的透傳)組成。
應用業(yè)務服務器上的主要相關(guān)模塊包括應用業(yè)務管理模塊,用于新應用業(yè)務的開發(fā)和管理,系統(tǒng)管理以及SIM卡信息維護等功能。
應用業(yè)務數(shù)據(jù)管理模塊,用于保存應用程序的機器代碼數(shù)據(jù),在收到用戶申請后,將數(shù)據(jù)按規(guī)定格式組織成若干條數(shù)據(jù)交給通訊處理模塊發(fā)送,每條數(shù)據(jù)的內(nèi)容包括數(shù)據(jù)總大小、數(shù)據(jù)總條數(shù)、本條數(shù)據(jù)索引值、本條數(shù)據(jù)內(nèi)容、本條數(shù)據(jù)長度和本條數(shù)據(jù)在總數(shù)據(jù)中的偏移。
通訊處理模塊,用于完成應用業(yè)務服務器與短消息網(wǎng)關(guān)之間的數(shù)據(jù)接收、數(shù)據(jù)分流和數(shù)據(jù)發(fā)送等功能。其進一步包括接收單元,用于接收從短消息網(wǎng)關(guān)發(fā)來的短信,識別出下載應用程序的申請,將用戶手機號和要下載的應用程序信息通知給應用業(yè)務數(shù)據(jù)管理模塊;以及發(fā)送單元,用于將組織好的每條數(shù)據(jù)加上狀態(tài)字,按照數(shù)據(jù)短信方式經(jīng)短消息網(wǎng)關(guān)發(fā)送到SIM卡。
本實施例支持動態(tài)程序下載的SIM卡采用一種具有多個邏輯分區(qū)并可控制訪問權(quán)限的IC智能卡(可參考本申請人的專利申請03137511.1),該SIM卡進一步包括監(jiān)控模塊、應用程序管理模塊、存儲模塊,以及位于應用程序管理模塊和存儲模塊之間的存儲管理模塊,如圖2所示。
監(jiān)控模塊,用于監(jiān)控從手機透傳的短信,根據(jù)短信中的狀態(tài)字識別出是應用程序的下載數(shù)據(jù)后,交給應用程序管理模塊處理;應用程序管理模塊進一步包括下載控制單元、調(diào)用控制單元和刪除控制單元,其中下載控制單元,用于在收到短信方式的下載數(shù)據(jù)后,判斷是否有足夠的剩余空間,如有,將數(shù)據(jù)逐條寫入到相應的存儲位置,并保存程序標識、程序代碼起始地址等信息,寫入完成后在系統(tǒng)中進行程序注冊,并建立該程序代碼的邏輯區(qū)間鏈表。
調(diào)用控制單元,用于根據(jù)程序標識在文件注冊表中找到相應記錄,獲得該程序的邏輯區(qū)間鏈表首址,然后根據(jù)該地址計算該程序代碼的起始地址,修改程序指針,然后執(zhí)行該程序。
刪除控制單元,用于先進行要刪除程序的反注冊,根據(jù)其程序標識在文件注冊表中找到相應記錄,根據(jù)該記錄指定的邏輯區(qū)間鏈表首址清空文件分配區(qū)對應的鏈表信息,最后從注冊表中刪除該記錄。
存儲模塊包含可以根據(jù)應用程序管理模塊在下載、調(diào)用、刪除中要執(zhí)行的操作,控制這些分區(qū)的訪問權(quán)限,需要在某區(qū)寫入數(shù)據(jù)時將該區(qū)置為數(shù)據(jù)態(tài)(可讀寫),而在要執(zhí)行某區(qū)的程序代碼時將其轉(zhuǎn)換為程序態(tài)(可讀)。
為了實現(xiàn)應用程序的管理,該存儲模塊中的文件系統(tǒng)包括文件注冊表、文件分配表和程序代碼。與普通智能卡不同的是,在程序下載和調(diào)用過程中,文件分配表和程序代碼所在的邏輯分區(qū)會有數(shù)據(jù)態(tài)和程序態(tài)的轉(zhuǎn)換,而文件注冊表區(qū)所在邏輯分區(qū)則始終作為數(shù)據(jù)區(qū)。
文件分配表用于存儲應用程序代碼的邏輯區(qū)間鏈表,程序代碼的存儲通過邏輯區(qū)間鏈表尋址方式保存,以實現(xiàn)代碼數(shù)據(jù)的動態(tài)增加和刪除。
文件注冊表用于存儲包含程序代碼與邏輯區(qū)間鏈表首址對應關(guān)系、下載和刪除流程的狀態(tài)等信息。其結(jié)構(gòu)如下所示
其中,程序標識為三個字節(jié),是與其它程序區(qū)分的標志。在下載流程中,程序狀態(tài)為1表示開始下載,狀態(tài)2表下載完成。在刪除流程中,程序狀態(tài)2表示未開始刪除,狀態(tài)1表示開始刪除但未刪除完成,刪除完成以后,將清除注冊表中相應的記錄。邏輯區(qū)間鏈表首址記錄程序數(shù)據(jù)在文件分配表中建立的鏈表的首址。知道了程序的標識通過注冊表就可以找到程序的邏輯區(qū)間鏈表,即計算出程序數(shù)據(jù)的存放地址。
本實施例方法包括下載及程序代碼存儲流程、代碼調(diào)用流程以及程序代碼刪除流程三個方面。下載時是通過短消息通道實現(xiàn)的。
如圖3所示,下載及程序代碼存儲流程包括以下步驟步驟110,應用業(yè)務服務器收到下載請求后,將程序代碼按規(guī)定格式打包成數(shù)據(jù)短信并加上狀態(tài)字,然后通過短消息通道發(fā)送到SIM卡;步驟120,SIM卡收到數(shù)據(jù)短信并根據(jù)所述狀態(tài)字識別出是下載的程序代碼后,先判斷該短信包含的是否為第一條下載數(shù)據(jù)(根據(jù)其索引值即可判斷),如果是,執(zhí)行下一步,否則執(zhí)行步驟170;步驟130,查找程序注冊表中的記錄,如果有狀態(tài)為1的記錄,執(zhí)行步驟140,如果沒有狀態(tài)為1的記錄,執(zhí)行步驟150;步驟140,先將文件分配表所在分區(qū)置為數(shù)據(jù)態(tài),根據(jù)所述記錄中的邏輯區(qū)間鏈表首址將對應程序在文件分配表中的空間清除,然后將文件分配表所在分區(qū)置為程序態(tài),并將文件注冊表中的所述記錄刪除;步驟130和140用于在查找空間之前,先清除未下載成功和未刪除成功的程序。因為這些程序可能因為掉電的原因沒有執(zhí)行成功下載和刪除流程,但是還占用文件分配表中的空間,所以在查找空間之前將這些無用的程序刪除,以充分利用存儲空間。
步驟150,判斷SIM卡中剩余空間是否大于程序代碼存儲所需的空間,如大于,執(zhí)行下一步,否則中斷下載流程,結(jié)束;步驟160,將程序代碼所在分區(qū)置為數(shù)據(jù)態(tài),將第一條數(shù)據(jù)的內(nèi)容寫入到剩余空間的開始位置,成功后在注冊表中添加一條記錄,寫入該程序的程序標識和邏輯鏈表的首地址,程序狀態(tài)記為1,返回步驟120;步驟170,每次寫入數(shù)據(jù)前,將程序代碼所在分區(qū)置為數(shù)據(jù)態(tài),根據(jù)短信數(shù)據(jù)中的偏移及長度將該條數(shù)據(jù)的內(nèi)容寫到數(shù)據(jù)空間的相應位置(即找到的空閑簇),寫入后將程序代碼所在分區(qū)置為程序態(tài);步驟180,根據(jù)當前短信索引及短信總條數(shù)判斷數(shù)據(jù)是否全部下載完成,如未下載完成,返回步驟120,否則,執(zhí)行下一步;步驟190,調(diào)用程序代碼數(shù)據(jù)的初始化函數(shù)入口,進行程序的注冊,如在系統(tǒng)中注冊程序運行需要的文件,內(nèi)存變量等,調(diào)用結(jié)束后將文件分配表所在分區(qū)置為數(shù)據(jù)態(tài);步驟200,查找注冊表,將程序狀態(tài)從1修改為2,并在文件分配表中建立該應用程序代碼數(shù)據(jù)的邏輯區(qū)間鏈表,將文件分配表所在分區(qū)置為程序態(tài),結(jié)束。
上述步驟中,步驟190是可選的。另外,文件分配表和程序代碼所在的邏輯分區(qū)可以相同,也可以不同。只要保證在寫入時將要寫入的分區(qū)改為數(shù)據(jù)態(tài),而在下載完成之后將程序代碼所在分區(qū)改為程序態(tài)以供調(diào)用就可以了。
由于程序代碼在下載完成后被置為程序態(tài)。所以如果知道程序數(shù)據(jù)的起址就可以直接運行。如圖4所示,已下載程序的調(diào)用流程包括以下步驟步驟210,要調(diào)用已下載程序時,SIM先保存程序運行的環(huán)境(如,堆棧信息、中斷等等);步驟220,根據(jù)程序標識在注冊表狀態(tài)為2的記錄中查找到相應記錄,獲得該程序的邏輯區(qū)間鏈表首址;步驟230,根據(jù)邏輯區(qū)間鏈表首址計算程序數(shù)據(jù)區(qū)的起始地址,開始執(zhí)行該已下載的程序;步驟240,調(diào)用結(jié)束后,恢復保存的程序運行環(huán)境。
程序的刪除過程與下載的過程相反,如圖5所示,刪除已下載程序的流程包括以下步驟步驟310,調(diào)用要刪除程序代碼數(shù)據(jù)的釋放函數(shù)入口,進行反注冊過程,完成后繼續(xù)下一步;步驟320,根據(jù)要刪除程序的標識在注冊表狀態(tài)為2的記錄中查找相應的記錄,找到后將該程序的狀態(tài)由2改為1;步驟330,修改文件分配表所在分區(qū)置為數(shù)據(jù)態(tài),然后根據(jù)所述記錄指定的邏輯區(qū)間鏈表首址,清空文件分配區(qū)對應的鏈表信息;
步驟340,修改文件分配表所在分區(qū)置為程序態(tài),然后將該程序?qū)挠涗洀淖员碇袆h除。
第二實施例不同于第一實施例從空中通道的下載,本實施例SIM卡是通過寫卡終端處理模塊從應用業(yè)務服務器下載數(shù)據(jù)的,如圖1的虛線部分。系統(tǒng)中將該寫卡終端處理模塊與應用業(yè)務服務器的應用業(yè)務數(shù)據(jù)管理模塊相連,應用業(yè)務數(shù)據(jù)管理模塊也是將應用程序的數(shù)據(jù)打包,可以用第一實施例的格式,然后發(fā)給寫卡終端處理模塊。
寫卡終端處理模塊,用于完成服務器與SIM卡間的數(shù)據(jù)傳輸,采用寫卡組件函數(shù)調(diào)用方式,數(shù)據(jù)的重傳、超時等問題由該模塊處理,超時重發(fā)次數(shù)、等待時間,由服務器作為參數(shù)傳給寫卡組件。采用這種方式可以去掉短信通道中許多安全性和防重傳的機制,多傳輸一些程序的數(shù)據(jù),傳輸速度更快。
本實施例SIM卡中的相關(guān)模塊也包括監(jiān)控模塊、應用程序管理模塊和存儲模塊。與第一實施例相比沒有存儲管理模塊,即不區(qū)分程序區(qū)和數(shù)據(jù)區(qū)。只要能找到程序代碼的數(shù)據(jù),同樣可以執(zhí)行應用程序。這種存儲方式需要硬件能夠在任何位置運行程序數(shù)據(jù)或者能在內(nèi)存中運行程序,從而在實現(xiàn)上比較復雜,而且需要在訪問時區(qū)別操作的類型,相對成本比較高。
監(jiān)控模塊的功能與第一實施例相同,應用程序管理模塊所要完成的基本功能也相同,只是在本實施例中,應用程序是通過索引文件方式存儲的。索引包括程序標識和文件的標識,根據(jù)程序標識在注冊表找到文件的標識。再根據(jù)文件標識,通過文件系統(tǒng)找到文件地址,讀取文件內(nèi)容。文件的內(nèi)容即是程序數(shù)據(jù),即每個程序的數(shù)據(jù)組成不同的文件保存起來。相應地,本實施例的應用程序管理模塊包括下載控制單元,用于在收到短信方式的下載數(shù)據(jù)后,判斷是否有足夠的剩余空間,如有,根據(jù)數(shù)據(jù)短信中記錄的程序數(shù)據(jù)的總長度創(chuàng)建文件,并將相應數(shù)據(jù)寫入文件中的相應位置,寫入完成以后在系統(tǒng)中進行程序的注冊,記錄程序標識與文件標識。
調(diào)用控制單元,用于根據(jù)程序標識在文件注冊表中找到相應記錄,獲得保存該程序數(shù)據(jù)文件的標識,并根據(jù)此標識通過文件管理系統(tǒng)讀取文件的內(nèi)容,此時的文件內(nèi)容即是程序數(shù)據(jù),直接執(zhí)行此程序即可。
刪除控制單元,用于先進行要刪除程序的反注冊,根據(jù)其程序標識在文件注冊表中找到相應記錄,根據(jù)該記錄指定的文件標識刪除保存程序數(shù)據(jù)的文件,最后從注冊表中刪除該記錄。
本實施例的下載及程序代碼存儲流程如下用戶識別模塊收到短信方式的下載數(shù)據(jù)后,判斷是否有足夠的剩余空間,如有,根據(jù)數(shù)據(jù)短信中記錄的程序數(shù)據(jù)的總長度創(chuàng)建文件,并將相應數(shù)據(jù)寫入文件中的相應位置,寫入完成以后在系統(tǒng)中進行程序的注冊,記錄程序標識與文件標識。
代碼調(diào)用流程如下要調(diào)用已下載的應用程序時,先保存程序運行的環(huán)境;根據(jù)程序標識在文件注冊表中找到該程序數(shù)據(jù)文件的標識;根據(jù)此標識通過文件管理系統(tǒng)讀取文件的內(nèi)容,即程序數(shù)據(jù),然后修改程序指針,執(zhí)行該程序;調(diào)用結(jié)束后,再恢復保存的程序運行環(huán)境。
程序代碼刪除流程如下根據(jù)刪除程序的標識在文件注冊表中找到相應記錄;根據(jù)該記錄指定的文件標識刪除保存程序數(shù)據(jù)的文件;最后從注冊表中刪除該程序的記錄。
第一實施例和第二實施例的一些技術(shù)手段是可以組合的,例如,在又一實施例中,可以采用簇鏈方式來對應用程序代碼尋址,但在下載時并不進行數(shù)據(jù)態(tài)和程序態(tài)的轉(zhuǎn)換。又如,在第二實施例的注冊表中也可以加入程序狀態(tài)的信息,并在查找剩余空間之前先清除未下載成功和未刪除成功的程序。
綜上所述,采用本發(fā)明,可以將應用程序的機器代碼動態(tài)下載到用戶識別模塊,并實現(xiàn)調(diào)用和刪除功能。而且,本發(fā)明下載到用戶識別模塊的內(nèi)容是不需要解釋執(zhí)行的機器代碼數(shù)據(jù),調(diào)用時只需找到程序入口即可直接調(diào)用,不需要進一步的解釋性工作,運行速度很快。而且下載的程序不僅能作為系統(tǒng)需要維護的數(shù)據(jù),還可以作為底層操作系統(tǒng)的擴充。
本發(fā)明可以應用于SIM、UIM等各種用戶識別模塊中。
權(quán)利要求
1.一種將應用程序動態(tài)下載到用戶識別模塊的方法,包括以下步驟(a)應用業(yè)務服務器將要下載的應用程序的機器代碼組成若干條數(shù)據(jù),發(fā)送到用戶識別模塊;(b)用戶識別模塊在收到所述應用程序的數(shù)據(jù)后,將其中的程序代碼寫入模塊內(nèi)的存儲器,并保存程序標識和程序代碼地址的信息;(c)要調(diào)用所述應用程序時,先根據(jù)程序標識得到該程序代碼的起始地址,執(zhí)行該程序。
2.如權(quán)利要求1所述的方法,其特征在于,還包括步驟(d)要刪除所述應用程序時,將保存的與該程序相關(guān)的所述信息刪除。
3.如權(quán)利要求1或2所述的方法,其特征在于,步驟(a)中,所述應用業(yè)務服務器是通過無線方式將應用程序代碼發(fā)送到所述用戶識別模塊的,或者,所述應用業(yè)務服務器是通過寫卡終端處理模塊采用寫卡組件函數(shù)調(diào)用方式將應用程序代碼發(fā)送到所述用戶識別模塊的。
4.如權(quán)利要求3所述的方法,其特征在于,所述應用業(yè)務服務器是通過短信通道以數(shù)據(jù)短信的方式將應用程序代碼發(fā)送到所述用戶識別模塊的。
5.如權(quán)利要求1或2所述的方法,其特征在于,步驟(b)中,所述程序代碼寫入完成后,還調(diào)用程序代碼的初始化函數(shù)入口,在系統(tǒng)中進行程序的注冊。
6.如權(quán)利要求2所述的方法,其特征在于,步驟(d)中,先在系統(tǒng)中進行要刪除程序的反注冊,再刪除其相關(guān)信息。
7.如權(quán)利要求1或2所述的方法,其特征在于,所述應用程序代碼地址是用文件分配表中該程序的邏輯區(qū)間鏈表方式保存的,而該邏輯區(qū)間鏈表的首址與該程序標識的對應關(guān)系存儲在文件注冊表中,用戶識別模塊根據(jù)程序標識即可找到程序的邏輯區(qū)間鏈表的首址,進而算出程序代碼的起始地址并找到該程序的邏輯區(qū)間鏈表。
8.如權(quán)利要求1或2所述的方法,其特征在于,在下載和刪除程序時,還記錄該程序下載及刪除是否完成的狀態(tài)信息,所述步驟(b)先清除未下載成功和未刪除成功的程序,再判斷是否有足夠的剩余空間,如有,再將程序代碼寫入相應的存儲位置,如空間不足,則中止下載,結(jié)束。
9.如權(quán)利要求1或2所述的方法,其特征在于,所述程序代碼是存儲在存儲器的一個可動態(tài)指定的邏輯分區(qū)中,在該分區(qū)寫入數(shù)據(jù)時,將其置為數(shù)據(jù)態(tài),而在下載結(jié)束后,將其置為程序態(tài)以便直接調(diào)用。
10.如權(quán)利要求7所述的方法,其特征在于,所述程序代碼和文件分配表都存儲在可動態(tài)指定的邏輯分區(qū),在每次寫入程序代碼或改寫文件分配表前,都將其對應的邏輯分區(qū)置為數(shù)據(jù)態(tài),而在寫入完成后,再將其對應的邏輯分區(qū)置為程序態(tài)。
11.如權(quán)利要求1或2所述的方法,其特征在于,所述步驟(c)在調(diào)用應用程序之前,先保持當前程序運行的環(huán)境,而在調(diào)用結(jié)束后,再恢復調(diào)用前的程序環(huán)境。
12.一種支持動態(tài)程序下載的用戶識別模塊,包括監(jiān)控模塊、存儲模塊,其特征在于,還包括應用程序管理模塊,其中所述監(jiān)控模塊,用于監(jiān)控收到的數(shù)據(jù),判斷其是否是下載的應用程序的機器代碼數(shù)據(jù),如果是,交給應用程序管理模塊處理;所述存儲模塊,分為若干個邏輯分區(qū),用于存儲下載的應用程序的程序標識、程序代碼地址信息以及程序代碼的數(shù)據(jù);所述應用程序管理模塊進一步包括下載控制單元,用于在收到下載的應用程序數(shù)據(jù)后,將其中的程序代碼寫入所述存儲模塊,并保存程序標識和程序代碼的地址信息;調(diào)用控制單元,用于在要調(diào)用所述應用程序時,根據(jù)程序標識得到該程序代碼的起始地址。
13.如權(quán)利要求12所述的用戶識別模塊,其特征在于,所述應用程序管理模塊進一步包括刪除控制單元,用于在要刪除所述應用程序時,根據(jù)其程序標識找到保存的程序代碼地址信息,將該程序相關(guān)的信息刪除。
14.如權(quán)利要求12或13所述的用戶識別模塊,其特征在于,還包括一個存儲管理模塊,用于控制所述存儲模塊上邏輯分區(qū)的訪問權(quán)限,在應用程序的下載、調(diào)用、刪除過程中,需要寫入程序代碼數(shù)據(jù)時,將其所在分區(qū)置為數(shù)據(jù)態(tài),而在要執(zhí)行程序代碼時,將其所在分區(qū)置為程序態(tài)。
15.如權(quán)利要求12所述的用戶識別模塊,其特征在于,所述下載控制單元是將程序代碼的地址信息以邏輯區(qū)間鏈表的方式保存在文件分配表中,將程序標識和對應的邏輯區(qū)間鏈表首址保存在文件注冊表中,所述調(diào)用控制單元和刪除控制單元根據(jù)程序標識找到其邏輯區(qū)間鏈表的首址,進而算出程序代碼的起始地址和找到該程序的邏輯區(qū)間鏈表。
16.如權(quán)利要求12所述的用戶識別模塊,其特征在于,所述下載控制單元還在程序代碼寫入完成后,在系統(tǒng)中進行該程序的注冊;所述刪除控制單元在刪除該程序的信息前,先在系統(tǒng)中完成該程序的反注冊。
17.一種實現(xiàn)程序動態(tài)下載到用戶識別模塊的系統(tǒng),其特征在于,包括應用業(yè)務服務器和與其通訊的用戶識別模塊,其中所述應用業(yè)務服務器包括應用業(yè)務數(shù)據(jù)管理模塊和通訊處理模塊,該應用業(yè)務數(shù)據(jù)管理模塊用于保存應用程序的機器代碼數(shù)據(jù),在用戶需要下載時,將程序代碼組成若干條數(shù)據(jù),交給所述通訊處理模塊;所述通訊處理模塊用于接收用戶的下載申請,交給所述應用業(yè)務數(shù)據(jù)管理模塊,并將組織好的應用程序代碼數(shù)據(jù)發(fā)送到申請下載的所述用戶識別模塊;所述用戶識別模塊進一步包括監(jiān)控模塊、存儲模塊和應用程序管理模塊,其中所述監(jiān)控模塊用于監(jiān)控收到的數(shù)據(jù),判斷其是否是下載的應用程序的機器代碼數(shù)據(jù),如果是,交給應用程序管理模塊處理;所述存儲模塊分為若干個邏輯分區(qū),用于存儲下載的應用程序的程序標識、程序代碼地址信息以及程序代碼的數(shù)據(jù);所述應用程序管理模塊進一步包括下載控制單元,用于在剩余空間足夠時,將收到的應用程序數(shù)據(jù)中的程序代碼寫入所述存儲模塊,并保存程序標識和程序代碼的地址信息;調(diào)用控制單元,用于根據(jù)程序標識得到該程序代碼的起始地址,執(zhí)行該應用程序;刪除控制單元,用于將保存的應用程序的相關(guān)信息刪除。
18.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述通訊處理模塊進一步包括接收單元和發(fā)送單元,所述接收單元用于接收從短消息網(wǎng)關(guān)發(fā)來的短信,識別出下載應用程序的申請,將用戶手機號和要下載的應用程序信息通知給所述應用業(yè)務數(shù)據(jù)管理模塊,所述發(fā)送單元用于將組織好的每條數(shù)據(jù)加上狀態(tài)字,按照數(shù)據(jù)短信方式經(jīng)短消息網(wǎng)關(guān)發(fā)送到用戶識別模塊。
19.如權(quán)利要求17所述的系統(tǒng),其特征在于,還包括一個寫卡終端處理模塊,該模塊采用寫卡組件函數(shù)調(diào)用方式將應用程序代碼傳送到所述用戶識別模塊。
20.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述用戶識別模塊還包括一個存儲管理模塊,用于控制所述存儲模塊上邏輯分區(qū)的訪問權(quán)限,在應用程序的下載、調(diào)用和刪除過程中,需要寫入程序代碼數(shù)據(jù)時,將其所在分區(qū)置為數(shù)據(jù)態(tài),而在要執(zhí)行程序代碼時,將其所在分區(qū)置為程序態(tài)。
全文摘要
本發(fā)明公開一種將應用程序動態(tài)下載到用戶識別模塊的方法、系統(tǒng)和支持該方法的用戶識別模塊,應用業(yè)務服務器將要下載的應用程序的機器代碼組成若干條數(shù)據(jù),發(fā)送到用戶識別模塊;用戶識別模塊的監(jiān)控模塊識別出收到的應用程序數(shù)據(jù)后交給應用程序管理模塊,該模塊將其中的程序代碼寫入到模塊內(nèi)的存儲器中,并保存程序標識和程序代碼地址的信息;調(diào)用所述應用程序時,根據(jù)程序標識得到該程序代碼的存儲地址,然后執(zhí)行該程序。本發(fā)明方法可以將程序代碼以機器代碼的形式動態(tài)下載到用戶識別模塊,并在用戶識別模塊上調(diào)用、刪除該程序。
文檔編號G06F9/445GK1687899SQ20051007703
公開日2005年10月26日 申請日期2005年6月15日 優(yōu)先權(quán)日2005年6月15日
發(fā)明者李治國, 孫旭, 傅宇晨, 穆肇驪, 陳昕 申請人:大唐微電子技術(shù)有限公司