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