專利名稱:程序更新方法和終端設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于更新終端設(shè)備中的可重寫(xiě)非易失性存儲(chǔ)器如閃速ROM(閃速ROM)內(nèi)存儲(chǔ)的程序的方法,并涉及一種這樣的終端設(shè)備。
背景技術(shù):
傳統(tǒng)上,終端設(shè)備在可重寫(xiě)非易失性存儲(chǔ)器(如閃速ROM)內(nèi)存儲(chǔ)控制軟件(程序),用以指示CPU的操作,從而對(duì)終端設(shè)備進(jìn)行控制。
在該終端設(shè)備中,人們提出了一種可在發(fā)現(xiàn)控制軟件中的程序錯(cuò)誤(bug)時(shí)更新控制軟件的方法。例如,JP2001-154838(第3-5頁(yè),圖3)就公開(kāi)了這樣一種方法。
在JP2001-154838公開(kāi)的方法中,首先產(chǎn)生的是程序錯(cuò)誤經(jīng)過(guò)校正的新控制軟件。然后,一旦對(duì)記錄著程序錯(cuò)誤的可重寫(xiě)非易失性存儲(chǔ)器進(jìn)行了擦除,就將該新控制軟件記錄到該存儲(chǔ)器中。由此就更新了控制軟件。
在一擦掉可重寫(xiě)非易失性存儲(chǔ)器(如閃速ROM)就在上面記錄新控制軟件的更新控制軟件方法中,在非易失性存儲(chǔ)器(如閃速ROM)的約束下,存儲(chǔ)器被分成多個(gè)區(qū)塊,僅在一個(gè)劃分區(qū)塊基礎(chǔ)上刪掉舊控制軟件,然后記錄新控制軟件。
因此,即使在僅需校正1個(gè)字節(jié)時(shí),如果非易失性存儲(chǔ)器的區(qū)塊是16K字節(jié)或64K字節(jié),也必需刪掉這整個(gè)16K字節(jié)或64K字節(jié),然后從設(shè)備外部傳送其程序錯(cuò)誤經(jīng)過(guò)校正了的16K字節(jié)或64K字節(jié)的新控制軟件,分別將它們記錄到非易失性存儲(chǔ)器中。
因此,在更新終端設(shè)備的控制軟件過(guò)程中,從設(shè)備外部傳入的數(shù)據(jù)量加大,于是就產(chǎn)生了包括數(shù)據(jù)傳送所需時(shí)間在內(nèi)的操作時(shí)間增加的問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明的一個(gè)目的是縮短終端設(shè)備內(nèi)記錄的程序更新所需的終端設(shè)備操作時(shí)間。
本發(fā)明中,在更新可重寫(xiě)非易失性存儲(chǔ)器(如閃速ROM)內(nèi)記錄的程序過(guò)程中,在RAM內(nèi)對(duì)非易失性存儲(chǔ)器的含有存儲(chǔ)的程序中需更新的部分的那個(gè)區(qū)塊內(nèi)的程序部分進(jìn)行擴(kuò)展,然后根據(jù)外部指令,僅更新所擴(kuò)展的程序部分中需要更新的那個(gè)部分。然后,擦除非易失性存儲(chǔ)器內(nèi)的區(qū)塊,再次將RAM內(nèi)經(jīng)過(guò)更新的程序部分記錄到非易失性存儲(chǔ)器的已擦除區(qū)塊內(nèi)。
這樣通過(guò)在RAM內(nèi)對(duì)包含有需要更新的部分的程序部分進(jìn)行擴(kuò)展,就可以僅更新程序部分內(nèi)需要更新的部分。通過(guò)這種方式,僅需對(duì)需要更新的部分作出指示,而無(wú)需指示更新所有程序部分的信息。換言之,由于可以減少?gòu)难b置外部傳送的重寫(xiě)指令,因此可以減少包括數(shù)據(jù)傳輸所需時(shí)間在內(nèi)的程序更新操作時(shí)間。
附圖的簡(jiǎn)要說(shuō)明
圖1是本發(fā)明第一實(shí)施例中的終端設(shè)備的功能方框圖;圖2是表示終端設(shè)備中存儲(chǔ)器映象圖(map)的例子的示意圖;圖3是第一實(shí)施例中的處理過(guò)程的流程圖;圖4是表示第一實(shí)施例中的重寫(xiě)指令的例子的示意圖;圖5是表示第一實(shí)施例中的重寫(xiě)指令的另一例子的示意圖;圖6是表示本發(fā)明的第二實(shí)施例中的重寫(xiě)指令的例子的示意圖;圖7是第二實(shí)施例中的處理過(guò)程的流程圖;圖8是表示本發(fā)明第三實(shí)施例中的重寫(xiě)指令的例子的示意圖;圖9是第三實(shí)施例中的處理過(guò)程的流程圖;圖10是表示第三實(shí)施例中的重寫(xiě)指令的另一例子的示意圖;圖11是表示第三實(shí)施例中的重寫(xiě)指令的又一例子的示意圖;圖12是表示本發(fā)明第四實(shí)施例中的重寫(xiě)指令的例子的示意圖;圖13是第四實(shí)施例中的處理過(guò)程的流程圖;圖14A是表示本發(fā)明的第五實(shí)施例中軟件在校正前的模塊結(jié)構(gòu)的示意圖;圖14B是第五實(shí)施例中校正后的軟件的模塊結(jié)構(gòu)的示意圖;圖15是表示第五實(shí)施例中的重寫(xiě)指令例子的示意圖;圖16是第五實(shí)施例中的處理過(guò)程的流程圖;圖17是表示第五實(shí)施例中的重寫(xiě)指令的另一例子的示意圖;
圖18是表示第五實(shí)施例中的重寫(xiě)指令的再一例子的示意圖;圖19是表示第五實(shí)施例中軟件在RAM內(nèi)擴(kuò)展后的模塊結(jié)構(gòu)的示意圖;圖20A是表示本發(fā)明的第六實(shí)施例中軟件在經(jīng)過(guò)校正前的模塊結(jié)構(gòu)的示意圖;圖20B是表示第六實(shí)施例中軟件在經(jīng)過(guò)校正后的模塊結(jié)構(gòu)的示意圖;圖21A是表示第六實(shí)施例中閃速(Flash)ROM內(nèi)的軟件數(shù)據(jù)在校正前的示意圖;圖21B是表示第六實(shí)施例中閃速ROM內(nèi)的軟件數(shù)據(jù)在校正后的示意圖;圖22是第六實(shí)施例中控制CPU使用的命令的示意圖;圖23是第六實(shí)施例中重寫(xiě)指令的例子的示意圖;圖24是第六實(shí)施例中的處理過(guò)程的流程圖;圖25是表示第六實(shí)施例中的移位(shift)記錄的示意圖;圖26是表示第六實(shí)施例中RAM內(nèi)的部分軟件數(shù)據(jù)在地址重寫(xiě)之前的示意圖;圖27是表示第六實(shí)施例中RAM內(nèi)的部分軟件數(shù)據(jù)在指示了地址重寫(xiě)后的示意圖;圖28是表示第六實(shí)施例中RAM中的部分軟件數(shù)據(jù)在指示了地址重寫(xiě)后的另一示意圖。
最佳實(shí)施方式下面將參照附圖描述本發(fā)明的實(shí)施例。
(第一實(shí)施例)圖1表示本發(fā)明第一實(shí)施例中的終端設(shè)備的方框圖的例子。在圖1中,“1”表示終端設(shè)備。
終端設(shè)備1具有可向/從外部發(fā)送/接收信號(hào)的外部連接接口11、用于控制終端設(shè)備1的控制CPU 12、作為可重寫(xiě)非易失性存儲(chǔ)器的閃速ROM 13、RAM、以及數(shù)據(jù)總線15(每個(gè)功能塊都通過(guò)其相連)。
可考慮作為外部接口11的是電纜有線連接接口和無(wú)線連接接口。此外,對(duì)于外部接口11,還可使用存儲(chǔ)卡接口。該情況下,控制CPU 12從插入存儲(chǔ)卡接口的存儲(chǔ)卡中讀取各種信息。
此外,當(dāng)外部接口11是有線連接接口或無(wú)線連接接口、并且與網(wǎng)絡(luò)相連時(shí),可利用HTTP、FTP、TFTP以及其它傳輸協(xié)議輸入數(shù)據(jù)。此外,也是在通過(guò)外部接口如有線連接接口、無(wú)線連接接口或存儲(chǔ)卡接口輸入信息時(shí),輸入信息通過(guò)控制CPU 12記錄在RAM 14或閃速ROM 13中。另外,在該實(shí)施例中,數(shù)據(jù)通過(guò)控制CPU 12記錄,在允許DMA傳送時(shí),可利用DMA傳送復(fù)制的數(shù)據(jù)。
圖2表示終端設(shè)備1中的存儲(chǔ)器映象圖的例子。
如圖2所示,與數(shù)據(jù)總線15相連的閃速ROM 13的存儲(chǔ)區(qū)201在由控制CPU 12控制的存儲(chǔ)空間中具有十六進(jìn)制標(biāo)志地址00000000(此后表示為0x00000000)到0x0005FFFF。此外,假設(shè)RAM 14的存儲(chǔ)區(qū)202具有0x00100000到0x0015FFFF,閃速ROM 13的擦除單位為64K字節(jié),即0x00000000~0x0000FFFF,0x00010000~0x0001FFFF...
下面參照?qǐng)D3所示的流程圖描述按上述方式構(gòu)建的終端裝置1的操作。
在步驟S101,終端裝置1的控制CPU 12通過(guò)外部連接接口11從外部裝置(圖1未示出)中將重寫(xiě)指令讀入RAM 14的任選區(qū)域(在此,假設(shè)是圖2中從0x00100000開(kāi)始的區(qū)域)。
在此假設(shè)在閃速ROM 13存儲(chǔ)的控制軟件中要重寫(xiě)的地址和數(shù)據(jù)如圖4所示。
此外,通過(guò)利用圖4所示的地址來(lái)指示控制軟件的重寫(xiě)部分,就不必利用實(shí)際數(shù)據(jù)指示重寫(xiě)部分,于是就可以減少重寫(xiě)指令的數(shù)據(jù)量,并縮短程序更新時(shí)間。
因此,在步驟S102中,控制CPU 12確定閃速ROM 13中的重寫(xiě)區(qū)塊。例如,控制CPU 12檢查圖4中的重寫(xiě)地址,然后判定No.1到No.6的重寫(xiě)指令指定了閃速ROM 13中區(qū)塊0x00010000到0x0001FFFF中的重寫(xiě)。
在步驟S103中,控制CPU 12在RAM 14的除了步驟S101中讀入重寫(xiě)指令區(qū)域以外的任選區(qū)域中(在此,假設(shè)圖2中的0x00110000到0x0011FFFF)擴(kuò)展步驟S102中確定的重寫(xiě)區(qū)塊內(nèi)的數(shù)據(jù)。
此外,在步驟S104中,控制CPU 102在RAM內(nèi)更新地址0x00110030中的數(shù)據(jù),在該地址中,將在用圖4的重寫(xiě)指令No.1指示的地址0x00010030內(nèi)的數(shù)據(jù)擴(kuò)展成0x43。
在步驟S105中,控制CPU 12判斷步驟S102內(nèi)確定的重寫(xiě)區(qū)塊上的所有重寫(xiě)指令是否已得到處理。該情況下,由于留下了指令No.2到No.6,控制CPU 12就進(jìn)入步驟S104的處理過(guò)程,并按照與前面相同的方式根據(jù)重寫(xiě)指令No.2到No.6更新RAM中經(jīng)過(guò)擴(kuò)展的控制軟件。
在完成了重寫(xiě)指令No.6的處理過(guò)程后,控制CPU 12在步驟S105中能夠確定重寫(xiě)區(qū)塊上的重寫(xiě)指令已全部經(jīng)過(guò)處理,然后進(jìn)入到步驟S106的處理過(guò)程。
接著,在步驟S106中,控制CPU 12擦除閃速Rom13中的區(qū)塊0x00010000到0x0001FFFF。然后,控制CPU 12將RAM 14內(nèi)區(qū)域0x00110000到0x0011FFFF上存儲(chǔ)的更新控制軟件記錄到閃速ROM 13內(nèi)的已擦除區(qū)塊中。
在步驟S107中,控制CPU 12判斷是否已處理了所有這些讀取的重寫(xiě)指令。該情況下,由于留下了重寫(xiě)指令No.7,因此控制CPU 12進(jìn)入步驟S102的處理過(guò)程。
然后,在步驟S102中,控制CPU 12檢查圖4中指令No.7以及后續(xù)數(shù)字的地址,并判定No.7到No.19的重寫(xiě)指令指定了對(duì)閃速ROM 13中區(qū)塊0x00020000到0x0002FFFF中的重寫(xiě)。
在步驟S103中,控制CPU12在RAM 14的除讀取重寫(xiě)指令區(qū)域之外的所有其它區(qū)域(在此假設(shè)圖2中的0x00110000到0x0011FFFF)的區(qū)塊內(nèi)擴(kuò)展數(shù)據(jù)。另外,在步驟S104中,控制CPU 12更新RAM 14的地址0x00110000中的數(shù)據(jù),其中將位于用圖4的重寫(xiě)指令No.7指示的地址0x00021000中的數(shù)據(jù)擴(kuò)展為0x1F。
此后,控制CPU 12按照與前面相同的方式根據(jù)重寫(xiě)指令No.8到No.10更新RAM中經(jīng)過(guò)擴(kuò)展的控制軟件。在步驟S106中,CPU 12刪除閃速ROM 13中的區(qū)塊。然后,控制CPU 12將RAM 14的區(qū)域0x00110000到0x0011FFFF中存儲(chǔ)的更新控制軟件記錄在閃速ROM 13的已刪除區(qū)塊中。
上述處理過(guò)程重復(fù)進(jìn)行,直到在步驟S107中判定在終端設(shè)備1中讀取重寫(xiě)指令的過(guò)程已經(jīng)全部完成。
1.按照上面所述的,依照第一實(shí)施例,通過(guò)在RAM 14中擴(kuò)展包括需要更新部分的程序部分,可以僅更新程序部分中需要更新的部分。于是僅需指示需要更新的部分,而無(wú)需要求指示更新整個(gè)程序部分的更新信息。換言之,可以減少外部傳給終端設(shè)備1的重寫(xiě)指令。因此,就可以縮短包括數(shù)據(jù)傳輸時(shí)間在內(nèi)的閃速ROM 13內(nèi)存儲(chǔ)的控制程序的更新操作時(shí)間。
此外,可在完成了對(duì)RAM14內(nèi)控制程序的程序部分的更新之后,對(duì)閃速ROM 13進(jìn)行刪除處理,并將更新后的數(shù)據(jù)寫(xiě)入閃速ROM 13。通過(guò)這種方式,例如可獲得這樣一種方法,其能僅將閃速RAM 13的控制程序中不需要改變的那部分保存RAM 14中,對(duì)閃速ROM 13進(jìn)行刪除處理,然后下載更新程序部分以寫(xiě)入閃速ROM 13。在該方法中,可避免以下情形在將更新程序信息寫(xiě)入閃速ROM 13的過(guò)程中通信未聯(lián)系上時(shí),不僅寫(xiě)入更新程序失敗,而且閃速ROM 13中存儲(chǔ)的原始程序也丟失。換言之,即使在寫(xiě)入更新程序信息過(guò)程中通信未聯(lián)系上時(shí),也能將更新前的程序部分留在閃速ROM 13內(nèi),因此,是能恢復(fù)的。
此外,依照第一實(shí)施例,可利用外部接口11從外部提供重寫(xiě)指令,因此不必刪除(remove)閃速ROM 13以更新程序,而且可以實(shí)現(xiàn)縮短了更新操作時(shí)間的程序更新。
此外,圖2所示的存儲(chǔ)空間可相應(yīng)于控制CPU 12、閃速ROM 13和/或RAM 14的類(lèi)型或結(jié)構(gòu)或者終端設(shè)備1中提供的數(shù)據(jù)量而變化。
此外,雖然該實(shí)施例中使用了閃速ROM 13,但只要存儲(chǔ)器是可重寫(xiě)的非易失性存儲(chǔ)器,也可以采用EEPROM之類(lèi)的存儲(chǔ)器。
另外,該實(shí)施例中控制軟件的更新單位是64千字節(jié),但也不需要是64千字節(jié),這要根據(jù)取決于非易失性存儲(chǔ)器(例如閃速ROM 13)裝置類(lèi)型的擦除區(qū)塊容量來(lái)確定。而且,雖然該實(shí)施例描述了1字節(jié)作為重寫(xiě)字節(jié)數(shù),但重寫(xiě)數(shù)據(jù)也不必是1字節(jié),例如也可以同時(shí)重寫(xiě)用任選地址指定方法指定的數(shù)據(jù)量如2字節(jié)和4字節(jié)。
2.圖4中,閃速ROM 13中目標(biāo)重寫(xiě)地址用絕對(duì)地址指示。但是,如圖5所示,相對(duì)于后續(xù)的地址,可僅用絕對(duì)地址指示第一地址,而這些后續(xù)地址用緊接前面所用地址的相對(duì)值指示。例如在圖5所示的例子中,用重寫(xiě)指令No.2指示的重寫(xiě)地址表示位于用指令No.1指示的重寫(xiě)地址后面的地址0x1。
通過(guò)這種方式,就可以用數(shù)據(jù)量小于絕對(duì)地址數(shù)據(jù)量的相對(duì)地址指示重寫(xiě),由此可以減少重寫(xiě)指令的數(shù)據(jù)量。
(第二實(shí)施例)下面描述依照本發(fā)明第二實(shí)施例的終端裝置。
依照本發(fā)明第二實(shí)施例的終端裝置的功能方框圖的例子和存儲(chǔ)映象圖的例子分別與第一實(shí)施例中的終端裝置相同,因此也與圖1和2所示的相同。
在第一實(shí)施例中,重寫(xiě)指令由圖4所示的非易失性存儲(chǔ)器中的重寫(xiě)目標(biāo)地址401和重寫(xiě)數(shù)據(jù)402的組合構(gòu)成。在第二實(shí)施例中,如圖6所示,重寫(xiě)指令由重寫(xiě)指示命令501和用于執(zhí)行該命令的數(shù)據(jù)501和502的組合構(gòu)成。通過(guò)這種方式,也可以獲得象第一實(shí)施例中那樣的效果。
例如,圖6中的重寫(xiě)指令No.1是用于在RAM 14中擴(kuò)展的指令。當(dāng)控制CPU 12收到重寫(xiě)指令No.1時(shí),其利用數(shù)據(jù)1作為擴(kuò)展源地址504,以數(shù)據(jù)2作為擴(kuò)展目的地址505,將程序從閃速ROM 13擴(kuò)展到RAM 14中。
此外,圖6中的重寫(xiě)指令No.8是一個(gè)寫(xiě)回閃速ROM 13的指令。收到重寫(xiě)指令No.8的控制CPU 12刪掉閃速ROM 13中從重寫(xiě)指令后面的數(shù)據(jù)2開(kāi)始的區(qū)塊,然后利用數(shù)據(jù)1作為擴(kuò)展源地址506,以數(shù)據(jù)2作為記錄目標(biāo)地址507,將RAM 14中的程序存到閃速ROM 13中。
重寫(xiě)指令No.2到No.7和No.10到No.13是數(shù)據(jù)重寫(xiě)指令。當(dāng)控制CPU 12收到數(shù)據(jù)重寫(xiě)指令時(shí),其利用數(shù)據(jù)1作為重寫(xiě)目標(biāo)地址508,以數(shù)據(jù)2作為實(shí)際重寫(xiě)數(shù)據(jù)509,對(duì)RAM中的數(shù)據(jù)進(jìn)行重寫(xiě)。
下面參照?qǐng)D7所示的流程圖描述給出了圖6所示重寫(xiě)指令時(shí)的操作。
首先,在步驟S110中,當(dāng)提供圖6所示的指令作為閃速ROM 13所存程序的重寫(xiě)指令時(shí),控制CPU 12通過(guò)外部連接接口11讀取圖6所示的重寫(xiě)指令No.1,并將其存在RAM 14的任選區(qū)域內(nèi)。
在步驟S111中,控制CPU 12檢查指令No.1是否是重寫(xiě)終止指令。由于該指令No.1不是重寫(xiě)終止指令,控制CPU 12轉(zhuǎn)入步驟S112的處理過(guò)程。
在步驟S112中,控制CPU 12檢查指令No.1是否是用于在RAM 14中進(jìn)行擴(kuò)展的指令。由于指令No.1是用于在RAM 14中進(jìn)行擴(kuò)展的指令,控制CPU12轉(zhuǎn)入步驟S115的處理過(guò)程。
在步驟S115中,控制CPU 12根據(jù)指令后面的數(shù)據(jù),在RAM 14中的0x00110000到0x0011FFFF內(nèi)對(duì)閃速ROM 13中始自0x00010000的區(qū)塊、即第二實(shí)施例中的0x00010000到0x0001FFFF的數(shù)據(jù)進(jìn)行擴(kuò)展。然后,控制CPU12轉(zhuǎn)入步驟S110的處理過(guò)程。
接著,在步驟S110中,控制CPU 12讀取指令No.2??刂艭PU 12在步驟S111和S112中象對(duì)指令No.1那樣檢查讀取指令No.2的指令內(nèi)容。但是,指令No.2與步驟S111和S112的轉(zhuǎn)移條件(branch condition)不一致。因此,控制CPU 12轉(zhuǎn)入步驟S113的處理過(guò)程。
在步驟S113中,控制CPU 13判定指令No.2是數(shù)據(jù)重寫(xiě)指令,因此,轉(zhuǎn)入步驟S116的過(guò)程。
在步驟S116中,控制CPU 12根據(jù)該指令后面的數(shù)據(jù)重寫(xiě)地址0x00110030到0x43中存儲(chǔ)的數(shù)據(jù)。
然后,控制CPU 12重復(fù)與前面相同的過(guò)程,直到指令No.7,然后在步驟S110中讀取指令No.8。控制CPU 12在步驟S111到S113中按照與前述過(guò)程相同的方式檢查指令內(nèi)容,然后轉(zhuǎn)入步驟S114的處理過(guò)程。
在步驟S114中,控制CPU 12判斷指令No.8是寫(xiě)回閃速ROM 13的指令,然后轉(zhuǎn)入步驟S117的處理過(guò)程。
在步驟S117中,依照該指令后面的數(shù)據(jù),控制CPU 12轉(zhuǎn)入將RAM 14中經(jīng)過(guò)擴(kuò)展的程序記錄到區(qū)塊0x00010000到0x0001FFFF中的處理過(guò)程。首先,控制CPU 12一次刪掉ROM 13中的區(qū)塊0x00010000到0x0001FFFF。然后,控制CPU 12將RAM 14的區(qū)塊0x00010000到0x0001FFFF的內(nèi)容記錄到閃速ROM 13的區(qū)塊0x00010000到0x0001FFFF中。
然后,控制CPU 12為圖6所提供的所有重寫(xiě)指令執(zhí)行前述過(guò)程。
如上所述,依照第二實(shí)施例,可以僅將終端設(shè)備1中閃速ROM 13所存控制軟件中的需要更新的數(shù)據(jù)讀入終端設(shè)備1中。由此可以縮短終端設(shè)備1中對(duì)閃速ROM 13內(nèi)記錄的軟件進(jìn)行更新的時(shí)間。
另外,在第二實(shí)施例中,圖6中舉例示出的重寫(xiě)指令可通過(guò)圖1所示的外部接口11提供,此外,還可為了執(zhí)行程序過(guò)程而順序地提供指令內(nèi)容。再有,還可一起提供要存到終端設(shè)備1的RAM 14中去的指令,以便根據(jù)存儲(chǔ)的指令執(zhí)行重寫(xiě)過(guò)程。
此外,在前述描述中,可按照?qǐng)D7中步驟S111、S112、S113和S114的順序執(zhí)行檢查讀指令內(nèi)容的每個(gè)過(guò)程,但即使以可選方式改變了順序,也可以獲得相同效果。
(第三實(shí)施例)在第一實(shí)施例中,重新指令由閃速ROM 13(其是非易失性存儲(chǔ)器)內(nèi)的圖4所示的重寫(xiě)目標(biāo)地址401和重寫(xiě)數(shù)據(jù)402的組合構(gòu)成。在第三實(shí)施例中,如圖8所示,重寫(xiě)指令由重寫(xiě)起始地址801、重寫(xiě)數(shù)據(jù)項(xiàng)數(shù)目802、以及與重寫(xiě)數(shù)據(jù)項(xiàng)數(shù)目802相對(duì)應(yīng)的實(shí)際重寫(xiě)數(shù)據(jù)803組合構(gòu)成。通過(guò)這種方式,就可以獲得與第一實(shí)施例相同的效果。
另外,依照本發(fā)明第三實(shí)施例的終端設(shè)備的功能框圖的例子和存儲(chǔ)器映象圖的例子分別與圖1和2所示的第一實(shí)施例的相同。
下面參照?qǐng)D9所示的流程圖,描述在提供有圖8所示的重寫(xiě)指令時(shí)終端設(shè)備1的操作。
在步驟S121中,在將圖8所示的指令提供給終端設(shè)備1以作為閃速ROM13內(nèi)所存程序的重寫(xiě)指令時(shí),控制CPU 12通過(guò)外部連接接口11將圖8所示的重寫(xiě)指令讀入RAM 14中的任選區(qū)域(在此,假設(shè)該區(qū)域從圖2中的0x00100000開(kāi)始)。
在步驟S122中,控制CPU 12對(duì)圖8中的重寫(xiě)起始地址進(jìn)行檢查,判定重寫(xiě)指令No.1和No.2指示閃速ROM 13中區(qū)塊0x00010000到0x0001FFFF中的重寫(xiě)。
接著,在步驟S123中,控制CPU 12在已讀入重寫(xiě)指令的區(qū)域之外的任選區(qū)域(在此假設(shè)0x00110000到0x0011FFFF)內(nèi)對(duì)步驟S122中判定的區(qū)塊內(nèi)的數(shù)據(jù)進(jìn)行擴(kuò)展。
另外,在步驟S124中,控制CPU 12根據(jù)圖8中的重寫(xiě)指令No.1確定RAM 14中對(duì)閃速ROM 13中的0x00110030進(jìn)行了擴(kuò)展的地址0x00010030是重寫(xiě)起始地址,重寫(xiě)數(shù)目項(xiàng)的數(shù)目為0x04。
在步驟S125中,控制CPU 12根據(jù)圖8中指令No.1的重寫(xiě)數(shù)據(jù),改變地址0x00110030到0x43的內(nèi)容。
接著,在步驟S126中,控制CPU 12將重寫(xiě)地址加1,變?yōu)?x00110031。在步驟S127中,控制CPU 12將重寫(xiě)數(shù)據(jù)項(xiàng)數(shù)目減1,變?yōu)?x03。在步驟S128中,控制CPU 12檢查重寫(xiě)數(shù)據(jù)項(xiàng)數(shù)目是否為0,當(dāng)該數(shù)目不是0時(shí),其轉(zhuǎn)入步驟S125的處理。
然后,控制CPU 12重復(fù)上述步驟S125到S128的處理過(guò)程,直到重寫(xiě)數(shù)據(jù)項(xiàng)數(shù)目變?yōu)?。
當(dāng)重寫(xiě)數(shù)據(jù)項(xiàng)數(shù)目變?yōu)?時(shí),控制CPU 12在步驟S129中判斷步驟S122中確定的對(duì)重寫(xiě)區(qū)塊的重寫(xiě)指令是否全部處理完。當(dāng)區(qū)塊上的重寫(xiě)指令未經(jīng)過(guò)處理時(shí),控制CPU 12轉(zhuǎn)入步驟S124的處理,然后重復(fù)步驟S124到S129的處理過(guò)程,直到區(qū)塊上的所有重寫(xiě)指令經(jīng)過(guò)了處理。
與此同時(shí),當(dāng)重寫(xiě)區(qū)塊上的所有重寫(xiě)指令全部經(jīng)過(guò)處理之后,控制CPU 12在步驟S130中刪除閃速ROM 13內(nèi)于步驟S122時(shí)確定的區(qū)塊。然后,控制CPU 12將RAM 14中區(qū)域0x00110000到0x0011FFFF內(nèi)存儲(chǔ)的新控制軟件記錄到閃速ROM 13的已刪區(qū)塊內(nèi)。
接著,控制CPU 12在步驟S131中判斷是否完成了對(duì)圖8舉例示出的重寫(xiě)指令的處理。當(dāng)該處理未完成時(shí),控制CPU進(jìn)入步驟S122的處理過(guò)程。
然后,控制CPU 12重復(fù)上述步驟S122到S131的處理過(guò)程,直到完成了所有重寫(xiě)指令的處理。
如上所述,依照第三實(shí)施例,在終端設(shè)備1的閃速ROM 13內(nèi)存儲(chǔ)的控制軟件中,可以僅讀取需要更新到終端設(shè)備1中的數(shù)據(jù)進(jìn)行更新。
在第三實(shí)施例中,如圖8所示,重寫(xiě)指令由重寫(xiě)起始地址801、重寫(xiě)數(shù)據(jù)項(xiàng)數(shù)目802和實(shí)際重寫(xiě)數(shù)據(jù)803組合構(gòu)成。此外,如圖10所示,重寫(xiě)指令可由重寫(xiě)起始地址1001、重寫(xiě)終止地址1002、以及實(shí)際重寫(xiě)數(shù)據(jù)1003構(gòu)成。該情況下,例如,如圖10所示,通過(guò)將重寫(xiě)起始地址0x00010030與重寫(xiě)終止地址0x00010033作比較,將重寫(xiě)數(shù)據(jù)項(xiàng)數(shù)目推導(dǎo)為0x04。因此,利用圖10所示的重寫(xiě)指令,也可以獲得與圖8所示重寫(xiě)指令相同的效果。
因此,在第三實(shí)施例中,如圖8所示,重寫(xiě)指令由重寫(xiě)起始地址801、重寫(xiě)數(shù)據(jù)項(xiàng)數(shù)目802和實(shí)際重寫(xiě)數(shù)據(jù)803組合而成。另外,如圖11所示,重寫(xiě)指令可由重寫(xiě)起始地址1101、實(shí)際重寫(xiě)數(shù)據(jù)1102和表示重寫(xiě)終止的特定數(shù)據(jù)1103構(gòu)成。該情況下,例如在圖11的重寫(xiě)指令No.1中,將RAM 14內(nèi)地址0x00110030中(其中,重寫(xiě)起始地址0x00010030上的程序經(jīng)過(guò)擴(kuò)展)的數(shù)據(jù)更新為0x43。另外,將地址0x00110031上的數(shù)據(jù)更新為0xBF,將地址0x00110032上的數(shù)據(jù)更新為0x00,將0x00110033上的數(shù)據(jù)更新為0x10。
因此,由于0x10后面的數(shù)據(jù)是表示重寫(xiě)終止的專用數(shù)據(jù),因此可以判定該特定數(shù)據(jù)后面的下一數(shù)據(jù)是下一重寫(xiě)起始地址。按照這種方式,通過(guò)重復(fù)上述過(guò)程,圖11所示的重寫(xiě)指令能實(shí)現(xiàn)與圖8所示重寫(xiě)指令相同的效果。
另外,在第三實(shí)施例中,在步驟S126中將重寫(xiě)地址加1,然后在步驟S127中將重寫(xiě)數(shù)據(jù)項(xiàng)數(shù)減1。但是,通過(guò)先將重寫(xiě)數(shù)據(jù)項(xiàng)數(shù)減1,然后在將重寫(xiě)地址加1,也可以獲得相同效果。
(第四實(shí)施例)在第三實(shí)施例中,如圖8所示,重寫(xiě)指令可由非易失性存儲(chǔ)器內(nèi)的重寫(xiě)起始地址801、重寫(xiě)數(shù)據(jù)項(xiàng)數(shù)目802和實(shí)際重寫(xiě)數(shù)據(jù)803組合而成。在第四實(shí)施例中,如圖12所示,指令由包括重寫(xiě)指令命令的指令1201和用于執(zhí)行該命令的數(shù)據(jù)1202組合而成。通過(guò)這種方式,可以獲得與第三實(shí)施例相同的效果。
另外,依照本發(fā)明第四實(shí)施例的終端裝置的功能方框圖的例子和存儲(chǔ)器映象圖的例子分別與圖1和2所示的第一實(shí)施例的相同。
下面參照?qǐng)D13所示的流程圖描述在提供有圖12所示重寫(xiě)指令時(shí)的操作。
另外,在圖12的重寫(xiě)指令的操作中,RAM內(nèi)擴(kuò)展和寫(xiě)回ROM與第二實(shí)施例中一樣。另外,該重寫(xiě)表示利用對(duì)應(yīng)于地址后面的數(shù)據(jù)表示的數(shù)據(jù)項(xiàng)數(shù)目的后續(xù)實(shí)際數(shù)據(jù)寫(xiě)到用指令后面的數(shù)據(jù)表示的地址中。
在步驟S141中,在提供圖12所示的指令作為閃速ROM 13中存儲(chǔ)程序上的重寫(xiě)指令時(shí),控制CPU 12讀取指令No.1。
接著,在步驟S142中,控制CPU 12檢查讀取指令是否是重寫(xiě)終止指令。當(dāng)該指令不是重寫(xiě)終止指令時(shí),控制CPU 12進(jìn)入步驟S143的處理過(guò)程。
在步驟S143中,控制CPU 12檢查讀取指令是否是RAM 14中的擴(kuò)展指令。當(dāng)該指令是RAM 14中的擴(kuò)展指令時(shí),控制CPU 12進(jìn)入步驟S144的處理過(guò)程,而當(dāng)指令不是RAM 14中的擴(kuò)展指令時(shí),其進(jìn)入步驟S145的處理過(guò)程。
在步驟S144中,當(dāng)讀取指令是圖12中的指令No.1時(shí),指令是RAM 14中的擴(kuò)展指令。因此,控制CPU 12在RAM 14中的地址0x00110000到0x0001FFFF上對(duì)閃速ROM 13中的地址0x00010000到0x0001FFFF上的數(shù)據(jù)進(jìn)行擴(kuò)展。然后,控制CPU 12進(jìn)入步驟S141的處理過(guò)程。
當(dāng)讀取指令是圖12中的指令No.2時(shí),控制CPU 12在步驟S141中讀取指令。然后,控制CPU 12通過(guò)步驟S142到S143的處理進(jìn)入S145的處理過(guò)程。
在步驟S145中,控制CPU 12檢查讀取指令是否是數(shù)據(jù)重寫(xiě)指令。當(dāng)讀取指令是數(shù)據(jù)重寫(xiě)指令時(shí),控制CPU 12進(jìn)入步驟S146的處理。其間,當(dāng)讀取指令不是數(shù)據(jù)重寫(xiě)指令時(shí),控制CPU 12進(jìn)入步驟S151的處理過(guò)程。
圖12中的指令No.12是數(shù)據(jù)重寫(xiě)指令。因此,控制CPU 12進(jìn)入步驟S146的處理過(guò)程。
在步驟S146中,控制CPU 12根據(jù)圖12中的指令No.2確定RAM 14中的地址0x00110030是重寫(xiě)起始地址,并且重寫(xiě)數(shù)據(jù)項(xiàng)數(shù)目是0x04。
接著,在步驟S147中,控制CPU 12根據(jù)圖12中的指令No.2的重寫(xiě)數(shù)據(jù),將地址0x00110030的內(nèi)容改為0x43。然后控制CPU 12在步驟S148中將重寫(xiě)地址加1,變?yōu)?x00110031。
在步驟S149中,控制CPU 12將重寫(xiě)數(shù)據(jù)項(xiàng)數(shù)目減1,變?yōu)?x03。
在步驟S150中,控制CPU 12檢查重寫(xiě)數(shù)據(jù)項(xiàng)數(shù)目是否為0,并且當(dāng)該數(shù)據(jù)不是0時(shí),進(jìn)入步驟S147的處理過(guò)程。
然后,控制CPU 12重復(fù)上述步驟S147到S150的處理過(guò)程,直到重寫(xiě)數(shù)據(jù)項(xiàng)數(shù)目變?yōu)?。當(dāng)重寫(xiě)數(shù)據(jù)項(xiàng)的數(shù)目為0時(shí),控制CPU 12進(jìn)入S141的處理過(guò)程。
在圖12中的指令No.4的情況下,控制CPU 12在步驟S141中讀取指令。然后控制CPU 12通過(guò)步驟S142、S143和S145的處理過(guò)程進(jìn)入S151的處理過(guò)程。然后,在步驟S151中,控制CPU 12檢查該讀取指令是否是寫(xiě)回閃速ROM13的指令,當(dāng)該指令是寫(xiě)回閃速ROM 13的指令時(shí),其進(jìn)入步驟S152的處理過(guò)程,而當(dāng)該指令不是寫(xiě)回閃速ROM 13的指令時(shí),其進(jìn)入S141的處理過(guò)程。
圖12中的指令No.4是寫(xiě)回閃速ROM13的指令。因此,控制CPU 12進(jìn)入步驟S152的處理。
在步驟S152中,控制CPU 12擦除閃速ROM 13中由寫(xiě)回ROM的讀取指令表示的區(qū)塊,即在圖12舉例示出的指令No.4的情況下的0x00010000到0x0001FFFF。接著,控制CPU 12將RAM 14的0x00110000到0x0011FFFF中存儲(chǔ)的新控制軟件記錄在閃速ROM 13的已擦除的區(qū)塊中。然后,控制CPU 12進(jìn)入步驟S141的處理過(guò)程。
控制CPU 12重復(fù)前述處理過(guò)程,直到在步驟S142中判定步驟S141中讀取的指令是重寫(xiě)終止指令。
如上所述,根據(jù)第四實(shí)施例,在終端設(shè)備1的閃速ROM 13存儲(chǔ)的控制軟件中,可僅將需要更新的數(shù)據(jù)讀入終端設(shè)備1。
另外,在第四實(shí)施例中,圖12舉例示出的重寫(xiě)指令可通過(guò)圖1所示的外部接口11提供,而且,可順序地提供用于執(zhí)行該重寫(xiě)處理過(guò)程的指令內(nèi)容。此外,可將RAM 14中存儲(chǔ)的指令一起給終端,以便根據(jù)所存儲(chǔ)的指令執(zhí)行重寫(xiě)處理。
此外,第四實(shí)施例描述了按照步驟S142、S143、S145和S151的順序執(zhí)行對(duì)步驟S141中讀取的指令內(nèi)容確定處理的情況,但可以以可選方式交換確定順序。
另外,在第四實(shí)施例中,在步驟S148中將重寫(xiě)地址加1,然后在步驟S149中將重寫(xiě)數(shù)據(jù)項(xiàng)數(shù)目減1。但是,先將重寫(xiě)數(shù)據(jù)項(xiàng)的數(shù)目減1,然后再將重寫(xiě)地址加1,也能獲得相同效果。
(第五實(shí)施例)圖14A和14B表示本發(fā)明第五實(shí)施例中的程序的模塊結(jié)構(gòu),圖14A表示校正程序錯(cuò)誤之前的結(jié)構(gòu),而圖14B表示校正了程序錯(cuò)誤之后的結(jié)構(gòu)。
換言之,圖14A所示的程序由三個(gè)模塊組成,即模塊A1401、模塊B1402和模塊C1403。在圖14A所示的程序中,即校正之前的程序中,模塊A位于0x00000000到0x000001FF上,模塊B位于0x00000200到0x0000021F上,模塊C位于0x00000220到0x000005FF上。
另外,在圖14B所示的程序中,作為圖14A中程序的校正結(jié)果,模塊B1402發(fā)生了變化,其位于0x00000200到0x0000022F上,成為模塊B’1404。模塊A與圖14A中相比未變化。模塊C的內(nèi)容未變化,但其位移到0x00000230到0x0000060F。
假設(shè)本發(fā)明第五實(shí)施例中終端設(shè)備1的功能方框圖的例子和存儲(chǔ)器映象圖的例子分別與圖1和2所示的相同。
在假設(shè)圖14A的程序存儲(chǔ)在閃速ROM 13中的前提下,下面描述在終端設(shè)備1中將圖14A中的程序更新為圖114B的程序的方法。在此,參照?qǐng)D16所示的流程圖描述當(dāng)終端設(shè)備1收到圖15所示的重寫(xiě)指令時(shí)的操作。
另外,當(dāng)圖15中的指令1501是RAM 14中的擴(kuò)展指令時(shí),指令1501后面的數(shù)據(jù)1502是擴(kuò)展源的起始地址1503,擴(kuò)展源的起始地址1503后面的數(shù)據(jù)是擴(kuò)展源的終止地址1504,而擴(kuò)展源的終止地址1504后面的數(shù)據(jù)是擴(kuò)展目的地址1505。之后,控制CPU 12利用這些數(shù)據(jù)將閃速ROM 13的數(shù)據(jù)擴(kuò)展到RAM 14中。
由此,可利用地址信息而不是實(shí)際數(shù)據(jù)進(jìn)行擴(kuò)展數(shù)據(jù)的指定。由此可以減少重寫(xiě)指令的數(shù)據(jù)量,縮短包括數(shù)據(jù)傳輸時(shí)間在內(nèi)的程序更新操作時(shí)間。
寫(xiě)回ROM 13與本發(fā)明第二實(shí)施例中描述的操作相同,而重寫(xiě)與本發(fā)明第四實(shí)施例中描述的操作相同。
在步驟S161中,在通過(guò)外部連接接口11將圖15所示的指令1501提供為閃速ROM 13中存儲(chǔ)程序的重寫(xiě)指令時(shí),控制CPU 12讀取指令No.1。
接著,在步驟S162中,控制CPU 12檢查讀取指令是否是重寫(xiě)終止指令。當(dāng)該指令不是重寫(xiě)終止指令時(shí),控制CPU 12進(jìn)入步驟S163的處理過(guò)程。
在步驟S163中,控制CPU 12檢查讀取指令是否是RAM 14中的擴(kuò)展指令。由于該指令是RAM 14中的擴(kuò)展指令,控制CPU 12進(jìn)入步驟S166的處理過(guò)程。當(dāng)讀取指令不是RAM 14中的擴(kuò)展指令時(shí),控制CPU進(jìn)入步驟S164的處理過(guò)程。
圖15中的指令No.1是RAM 14中的擴(kuò)展指令。因此,在步驟S166中,控制CPU 12根據(jù)指令No.1的數(shù)據(jù)確定擴(kuò)展源的起始地址是閃速ROM 13中的0x00000000,終止地址是0x000001FF,而擴(kuò)展目的地址是RAM 14中的0x00110000。
接著,在步驟S167中,控制CPU 12依照步驟S166中確定的地址將閃速ROM 13的數(shù)據(jù)擴(kuò)展到RAM 14中。
在圖15舉例示出的指令No.1的情況下,將閃速ROM 13中0x00000000到0x000001FF上的數(shù)據(jù)、即圖14A中的模塊A1401擴(kuò)展到RAM 14的0x00110000到0x001101FF中。
接著,控制CPU 12進(jìn)入步驟S161的處理過(guò)程。
圖15中的指令No.2是RAM中進(jìn)行擴(kuò)展的指令,其與指令No.1相同。因此,控制CPU 12按照與指令No.1相同的處理過(guò)程將數(shù)據(jù)從閃速ROM 13擴(kuò)展到RAM 14中。
通過(guò)這種方式,圖14A中的模塊C1403在RAM 14的0x00110230到0x0011060F上擴(kuò)展。
然后,在圖15中的指令No.3的情況下,控制CPU 12在步驟S161讀取指令,然后經(jīng)由步驟S162和S163的處理過(guò)程進(jìn)入步驟S164的處理過(guò)程。
在步驟S164中,控制CPU 12檢查讀取指令是否是數(shù)據(jù)重寫(xiě)指令。當(dāng)該讀取指令是數(shù)據(jù)重寫(xiě)指令時(shí),控制CPU 12進(jìn)入步驟S170的處理過(guò)程。其間,當(dāng)該讀取指令不是數(shù)據(jù)重寫(xiě)指令時(shí),控制CPU 12進(jìn)入步驟S165的處理過(guò)程。
圖15中的指令No.3是數(shù)據(jù)重寫(xiě)指令。因此,控制CPU 12進(jìn)入步驟S170的處理過(guò)程。在步驟S170中,控制CPU 12根據(jù)圖15中的重寫(xiě)指令No.3確定RAM 14中的地址0x00110200是重寫(xiě)起始地址,并且重寫(xiě)數(shù)據(jù)項(xiàng)的數(shù)目為0x30。
接著,在步驟S171中,控制CPU 12根據(jù)圖15中No.3的重寫(xiě)數(shù)據(jù)指令改變地址0x00110200的內(nèi)容。
然后,在步驟S172中,控制CPU 12將重寫(xiě)地址加1變?yōu)?x00110201。接著,在步驟S173中,控制CPU 12將重寫(xiě)數(shù)據(jù)項(xiàng)的數(shù)目減1變?yōu)?x2F。
在步驟S174中,控制CPU 12檢查重寫(xiě)數(shù)據(jù)項(xiàng)的數(shù)目是否為0,而在該數(shù)目不是0時(shí),其進(jìn)入步驟S171的處理過(guò)程。
然后,控制CPU 12重復(fù)上述步驟S171到S174的處理過(guò)程,直到重寫(xiě)數(shù)據(jù)項(xiàng)的數(shù)目變?yōu)?。當(dāng)重寫(xiě)數(shù)據(jù)項(xiàng)的數(shù)目變?yōu)?時(shí),控制CPU 12進(jìn)入S161的處理過(guò)程。
假設(shè)指令No.3給出的與0x03相對(duì)應(yīng)的后續(xù)數(shù)據(jù)是圖14B中的模塊B’1403,當(dāng)步驟S174中將重寫(xiě)數(shù)據(jù)項(xiàng)的數(shù)目判定為0時(shí),在RAM 14的0x00110200到0x0011022F上對(duì)模塊B’1404進(jìn)行擴(kuò)展。
如上所述,在RAM 14中圖19所示的程序由地址0x00110000開(kāi)始擴(kuò)展。
要注意的是,因?yàn)槟KB因更新變?yōu)槟KB’,并且容量增大,因此模塊C的位置向后移位了模塊B和模塊B’之間的容量差。換言之,模塊C在RAM 14內(nèi)擴(kuò)展時(shí)發(fā)生了移位,以便讓閃速ROM 13中存儲(chǔ)的更新目標(biāo)模塊B和后面的模塊C的位置之間的相對(duì)值增大。
通過(guò)這種方式,即使在模塊B由于更新和容量變大而變?yōu)槟KB’時(shí),也可以避免模塊B’與模塊C的重疊。
此外,當(dāng)有一重寫(xiě)部分的程序編碼(包括直接數(shù)據(jù))的數(shù)量(模塊B)時(shí),可以無(wú)需重寫(xiě)而移位一部分編碼(模塊C),進(jìn)而可在無(wú)需重寫(xiě)部分(模塊B’)的后續(xù)編碼(模塊C)的信息的情況下重寫(xiě)程序。因此,可以減少?gòu)慕K端設(shè)備1的外部傳輸?shù)闹貙?xiě)指令。換言之,可以利用較少數(shù)據(jù)量移位模塊C。結(jié)果,可以縮短包括數(shù)據(jù)傳輸時(shí)間在內(nèi)的程序的更新操作時(shí)間。
接著,在圖15的指令No.4的情況下,控制CPU 12在步驟S161中讀取了指令之后,通過(guò)步驟S162、S163和S164進(jìn)入步驟S165的處理過(guò)程。
在步驟S165中,控制CPU 12判斷讀取指令是否是ROM中進(jìn)行寫(xiě)回的指令,并且當(dāng)讀取指令是ROM中的寫(xiě)回指令時(shí),其進(jìn)入步驟S168的處理過(guò)程。
當(dāng)該讀取指令不是ROM寫(xiě)回指令時(shí),控制CPU 12進(jìn)入步驟S161的處理過(guò)程。
圖15中的指令No.4是ROM寫(xiě)回指令。因此,控制CPU 12進(jìn)入步驟S168的處理過(guò)程。
在步驟S168中,在圖15舉例示出的指令No.4的情況下,控制CPU 12根據(jù)讀取的ROM寫(xiě)回指令,確定RAM 14中存儲(chǔ)的新控制軟件地址0x00110000到0x0011FFFF,以及閃速ROM 13的寫(xiě)回區(qū)塊,即0x00000000到0x0000FFFF。
接著,在步驟S169中,控制CPU 12刪掉步驟S168中確定的閃速ROM 13的區(qū)塊0x00000000到0x0000FFFF。然后,控制CPU12將RAM 14內(nèi)存儲(chǔ)在0x00110000到0x0011FFFF中的新控制軟件記錄到閃速ROM 13的已刪除區(qū)塊中。
控制CPU 12進(jìn)入步驟S161的處理過(guò)程。
然后,控制CPU 12順序地重復(fù)前述處理過(guò)程,直到在步驟S162中將步驟S161中讀取的指令判定為重寫(xiě)終止指令。
如上所述,根據(jù)第五實(shí)施例,在無(wú)需下載圖14所示的整個(gè)校正程序的情況下,可更新終端中閃速ROM 13內(nèi)存儲(chǔ)的控制軟件。結(jié)果,由于重寫(xiě)指令的減少實(shí)現(xiàn)了軟件更新時(shí)間的縮短。
另外,依照第五實(shí)施例,當(dāng)模塊B的容量因更新而增大時(shí),可在RAM 14進(jìn)行擴(kuò)展的過(guò)程中移位模塊C,以增大閃速ROM 13中存儲(chǔ)的更新目標(biāo)的模塊B與后面的模塊C的位置之間的相對(duì)值。由此,可以減少?gòu)脑O(shè)備外部傳送的重寫(xiě)指令。結(jié)果,就可以縮短包括數(shù)據(jù)傳輸時(shí)間在內(nèi)的重寫(xiě)更新操作時(shí)間。
另外,雖然第五實(shí)施例描述了程序由三個(gè)模塊組成的情況,但模塊數(shù)目和模塊容量并不限于上面所述的模塊數(shù)目和容量。
此外,雖然圖15中的“RAM擴(kuò)展”由閃速ROM 13中作為擴(kuò)展源的起始地址1503和終止地址1504、RAM中作為擴(kuò)展目的的起始地址1505組合而成,但如圖17所示,通過(guò)將擴(kuò)展源的起始地址1703和后面的擴(kuò)展數(shù)據(jù)項(xiàng)數(shù)目1704、以及RAM中作為擴(kuò)展目的的起始地址1705組合起來(lái),也能獲得相同效果。
另外,在圖15中,利用絕對(duì)地址指定RAM 14中對(duì)閃速ROM 13內(nèi)的程序進(jìn)行擴(kuò)展的區(qū)域。但是,由于RAM 14中的區(qū)域僅用作操作區(qū)域,因此終端設(shè)備1中的控制CPU 13可設(shè)定RAM 14內(nèi)的任選區(qū)域。
該情況下,在RAM 14中,可利用與任選區(qū)域起始地址的移位值進(jìn)行擴(kuò)展時(shí)的地址指定或指定過(guò)程中RAM 14的重寫(xiě)。換言之,在圖18所示的重寫(xiě)指令中,“RAM 14的擴(kuò)展”由閃速ROM 13中作為擴(kuò)展源的起始地址1803、擴(kuò)展數(shù)據(jù)項(xiàng)的數(shù)目1804和與任選區(qū)域的起始地址的移位值1805組合而成。
例如,指令No.2表示在任選區(qū)域的起始地址加0x00000230中,擴(kuò)展以閃速ROM 13中的地址0x00000220開(kāi)始的、與0x3E0相對(duì)應(yīng)的后續(xù)數(shù)據(jù)。
另外,“重寫(xiě)”由相對(duì)任選區(qū)域中起始地址的移位值1806、重寫(xiě)數(shù)據(jù)項(xiàng)的數(shù)目1807和與該數(shù)據(jù)項(xiàng)數(shù)目相對(duì)應(yīng)的實(shí)際重寫(xiě)數(shù)據(jù)1808組合而成。例如,在指令No.3中,與0x30相對(duì)應(yīng)的數(shù)據(jù)從任選區(qū)域的起始地址加上0x0000200的地址開(kāi)始重寫(xiě)。
寫(xiě)回ROM 13的指令指示基于閃速ROM 13的已刪區(qū)塊進(jìn)行寫(xiě)回。因此,該指令僅指示寫(xiě)回區(qū)塊的頭部。例如,在指令No.4中,將0x00000000指示為寫(xiě)回區(qū)塊的頭部,在刪掉了圖2所示存儲(chǔ)器映象圖的區(qū)塊0x00000000到0x0000FFFF后,將從RAM任選區(qū)域中的頭部到該任選區(qū)域的頭部加0x0000FFFF的區(qū)域?qū)懟亻W速ROM 13。
另外,第五實(shí)施例描述了按照步驟S162、S163、S164和S165的順序?qū)Σ襟ES161中讀取的指令內(nèi)容進(jìn)行確定處理的情況,但也可以以可選方式改變確定順序。
另外,在第五實(shí)施例中,在步驟S172中將重寫(xiě)地址加1,然后在步驟S173中將重寫(xiě)數(shù)據(jù)項(xiàng)的數(shù)目減1。但是,先將重寫(xiě)數(shù)據(jù)項(xiàng)的數(shù)目減1,然后再將重寫(xiě)地址加1,也能獲得相同效果。
(第六實(shí)施例)圖20A和20B表示本發(fā)明第六實(shí)施例中的程序的模塊結(jié)構(gòu),圖20A表示校正程序錯(cuò)誤之前的結(jié)構(gòu),而圖20B校正了程序錯(cuò)誤之后的結(jié)構(gòu)。
換言之,圖20A所示的程序由三個(gè)模塊組成,即模塊A2001、模塊B2002和模塊C2003。模塊A位于0x00000000到0x000001FF上,模塊B位于0x00000200到0x0000021F上,模塊C位于0x00000220到0x000005FF上。
在圖20B所示的程序中,作為圖20A所示程序的校正結(jié)果,模塊A2001發(fā)生了變化。
具體而言,模塊A2001變?yōu)槟KA’2004位于0x000001FF上。模塊B2002變?yōu)槟KB’2005位于0x00000200到0x0000022F上。模塊C內(nèi)容未變化,但其位置移到0x00000230到0x0000060F。
圖21A表示未校正程序錯(cuò)誤的模塊A2001的部分內(nèi)容,圖21B表示校正了程序錯(cuò)誤的部分模塊A’2001。
圖22表示第六實(shí)施例中終端設(shè)備1的控制CPU 12的轉(zhuǎn)移(branch)命令的例子。
作碼2201準(zhǔn)備將在操作碼2201后的操作數(shù)2202轉(zhuǎn)移(branch)作為地址。
具體而言,操作碼0xEA準(zhǔn)備將在該操作碼后面的操作數(shù)32位轉(zhuǎn)移(branch)作為絕對(duì)地址。另外,操作碼0xE9在該操作碼后面設(shè)定出8位作為相對(duì)值,并轉(zhuǎn)移到用該操作碼中存儲(chǔ)的地址和該相對(duì)值的總和表示的地址。
換言之,如圖21A所示,當(dāng)?shù)刂?2101)0x00000010(2103的數(shù)據(jù)(2102))是0xEA(2104)時(shí),這部分是將地址0x00000011到0x00000014(2105)存儲(chǔ)的數(shù)據(jù)(2106)譯為可轉(zhuǎn)移00000318的32位地址的命令。
此外,如圖21A所示,當(dāng)?shù)刂?x000001F8(2107)的內(nèi)容是0xE9(2108)時(shí),其是將地址0x000001F9(2109)上的數(shù)據(jù)0x38設(shè)定為相對(duì)值、然后轉(zhuǎn)移作為0x000001F8與該相對(duì)值的總和的0x00000230的命令。
圖21B表示圖20A所示控制程序的程序錯(cuò)誤經(jīng)過(guò)校正的圖20B所示的控制程序。
具體而言,如圖20B所示,模塊B’2005的容量比模塊B2002的容量大0x10位。結(jié)果,模塊B2002后面的模塊C2003的位置移位了0x10位。因此,0x00000010(2103)內(nèi)存儲(chǔ)的絕對(duì)地址轉(zhuǎn)移命令的轉(zhuǎn)移目的變?yōu)?x00000328。另外,0x000001F8(2109)中存儲(chǔ)的相對(duì)地址轉(zhuǎn)移命令的轉(zhuǎn)移目的變?yōu)?x00000240。
下面描述第六實(shí)施例中的終端設(shè)備。本發(fā)明第六實(shí)施例的終端設(shè)備1的功能性方框圖的例子和存儲(chǔ)器映象圖的例子分別與第一實(shí)施例并分別按照?qǐng)D1和2所示相同。此外,假設(shè)0x00110000到0x001111FFFF用作控制CPU 12校正控制程序的操作區(qū)域。
下面描述在閃速ROM 13中記錄了圖20A程序的情況下,終端設(shè)備1將圖20A所示的程序更新為圖20B所示的程序的方法。在此,將參照?qǐng)D24所示的流程圖描述為終端設(shè)備1提供圖23所示的重寫(xiě)指令時(shí)的操作。
另外,在對(duì)圖23的每個(gè)指令進(jìn)行操作的過(guò)程中,重寫(xiě)與第五實(shí)施例的相同。
此外,在RAM 14中進(jìn)行擴(kuò)展的情況下,數(shù)據(jù)2302位于指令2301No.1的后面部分內(nèi)。數(shù)據(jù)2302中布置了擴(kuò)展源的起始地址2303,在擴(kuò)展源中的起始地址2303后面進(jìn)行擴(kuò)展的數(shù)據(jù)項(xiàng)數(shù)目2304,以及在擴(kuò)展的數(shù)據(jù)項(xiàng)數(shù)目2304后面擴(kuò)展目的的地址2305。
控制CPU 12利用這些信息將數(shù)據(jù)從閃速ROM 13擴(kuò)展到RAM 14中。
在寫(xiě)回ROM 13的情況下,指令2301No.6后面的數(shù)據(jù)2302的頭部表示要記錄到閃速ROM 13中目標(biāo)區(qū)塊的起始地址2306。在刪除了以頭部地址2306起始的區(qū)塊后,將已被以可選方式確定為RAM 14操作區(qū)的區(qū)域內(nèi)的數(shù)據(jù)記錄在閃速ROM 13內(nèi)以頭部地址2306起始的已刪區(qū)塊中。
相對(duì)地址中的變化,指令No.4后面的數(shù)據(jù)2302的起始部分是其與RAM 14中擴(kuò)展程序用的任選區(qū)域內(nèi)的頭部的移位值2307。其指示對(duì)在用該起始地址和移位值2307的總和指示的地址中存儲(chǔ)的操作碼進(jìn)行解釋,并更新與該解釋操作碼相對(duì)應(yīng)的操作數(shù)。
首先,在步驟S181中,當(dāng)通過(guò)外部連接接口11將圖23所示的指令提供為閃速ROM 13中存儲(chǔ)程序的重寫(xiě)指令時(shí),控制CPU 12讀取指令No.1。
接著,在步驟S182中,控制CPU 12檢查讀取指令是否是重寫(xiě)終止指令。當(dāng)該指令不是重寫(xiě)終止指令時(shí),控制CPU 12進(jìn)入步驟S183的處理過(guò)程。
在步驟S183中,控制CPU 12檢查讀取指令是否是RAM 14中的擴(kuò)展指令。如果該指令是在RAM 14中進(jìn)行擴(kuò)展的指令,控制CPU 12進(jìn)入步驟S186的處理過(guò)程,而如果該讀取指令不是RAM 14中的擴(kuò)展指令時(shí),其進(jìn)入步驟S184的處理過(guò)程。
圖23中的指令No.1是RAM 14中的擴(kuò)展指令。因此,在步驟S186中,控制CPU 12基于指令No.1的數(shù)據(jù),確定擴(kuò)展源的地址是閃速ROM 13中的0x00000000,要擴(kuò)展的數(shù)據(jù)項(xiàng)數(shù)目是0x200字節(jié),擴(kuò)展目的地址是0x00110000,作為RAM 14中前一操作區(qū)域的起始地址0x00110000加移位0x00000000的總和。
接著,在步驟S187中,控制CPU 12根據(jù)步驟S186中確定的地址和數(shù)據(jù)項(xiàng)數(shù)目將數(shù)據(jù)從ROM 13擴(kuò)展到RAM 14中。
在指令No.1是圖23中所示指令的情況下,在RAM 14的0x00110000到0x00110FF上擴(kuò)展0x00000000到0x000001FF(即圖20A中的模塊A2001)中的數(shù)據(jù)。
然后,在步驟S195中,控制CPU 12在RAM 14的除操作區(qū)域0x00110000到0x0011FFFF以外的任選區(qū)域中記下閃速ROM 13中區(qū)域0x00000000到0x000001FF的移位量是0x00000000,然后進(jìn)入步驟S181的處理過(guò)程。
之后,由于圖23中的指令No.2與指令N0.1一樣,是在RAM中進(jìn)行擴(kuò)展的指令,于是控制CPU 12按照與前述過(guò)程相同的方式執(zhí)行數(shù)據(jù)從閃速ROM 13到RAM 14的擴(kuò)展過(guò)程。
通過(guò)這種方式,圖20A中的模塊C2003在RAM 14的0x00110230到0x0011060F上擴(kuò)展。
此外,象上面描述的過(guò)程一樣,在步驟S195中,控制CPU 12記錄閃速ROM13中區(qū)域0x00000220到0x000005FF的移位量是0x00000010。
通過(guò)前述過(guò)程,獲得了圖25中所示的移位區(qū)域起始地址2501和終止地址2502以及該區(qū)域的移位量2503的記錄。
移位區(qū)域的起始地址2501和終止地址2502實(shí)際上是該移位區(qū)域的起始地址和終止地址。由此就消除了利用實(shí)際數(shù)據(jù)描述移位區(qū)域的要求,于是減少了數(shù)據(jù)量。
然后,在指令是圖23中的指令No.3的情況下,控制CPU 12在步驟S181中讀到該指令,然后通過(guò)步驟S182和S183的處理過(guò)程進(jìn)入步驟S184的處理過(guò)程。
在步驟S184中,控制CPU 12檢查讀取指令是否是數(shù)據(jù)重寫(xiě)指令。當(dāng)該讀取指令是數(shù)據(jù)重寫(xiě)指令時(shí),控制CPU 12進(jìn)入步驟S190的處理過(guò)程,而當(dāng)該讀取指令不是數(shù)據(jù)重寫(xiě)指令時(shí),其進(jìn)入步驟S196的處理過(guò)程。
圖23中的指令No.3是數(shù)據(jù)重寫(xiě)指令。因此,控制CPU 12進(jìn)入步驟S190的處理。
在步驟S190中,控制CPU 12利用圖23中的重寫(xiě)指令No.3確定通過(guò)將RAM 14中操作區(qū)域的起始地址0x00110000加上移位0x00000200獲得的地址0x00110200是重寫(xiě)起始地址,并且重寫(xiě)數(shù)據(jù)項(xiàng)的數(shù)目是0x30。
之后,在步驟S191中,控制CPU 12根據(jù)圖23中的指令No.3的重寫(xiě)數(shù)據(jù)改變地址0x002202000的內(nèi)容。
然后,在步驟S192中,控制CPU 12將該重寫(xiě)地址加上1成為0x00110201。
在步驟193中,控制CPU 12將該重寫(xiě)數(shù)據(jù)項(xiàng)的數(shù)目減掉1,變?yōu)?x2F。
在步驟S194中,控制CPU 12檢查重寫(xiě)數(shù)據(jù)項(xiàng)的數(shù)目是否為0,當(dāng)該數(shù)目不是0時(shí),其進(jìn)入步驟S191的處理過(guò)程。
然后,控制CPU 12重復(fù)上述步驟S191到S194的處理過(guò)程,直到重寫(xiě)數(shù)據(jù)項(xiàng)的數(shù)目變?yōu)?。
當(dāng)重寫(xiě)數(shù)據(jù)項(xiàng)的數(shù)目變?yōu)?時(shí),控制CPU 12進(jìn)入步驟S181的處理過(guò)程。
在此,假設(shè)與指令No.3給出的0x30相對(duì)應(yīng)的后續(xù)數(shù)據(jù)是圖20B中的模塊B’2005,當(dāng)在步驟S194中判定重寫(xiě)數(shù)據(jù)項(xiàng)的數(shù)目變?yōu)?時(shí),在RAM 14的0x00110200到0x0011022F上擴(kuò)展模塊B’2005。
通過(guò)前述處理過(guò)程,圖19所示的程序從RAM 14中的地址0x00110000開(kāi)始擴(kuò)展。
圖26表示處于該點(diǎn)的RAM 14的狀態(tài)。地址(2601)0x00110010(2603)和0x001101F8(2605)分別具有外圍數(shù)據(jù)(2602)、0xEA(2604)和0xE9(2606)。
然后,在指令是圖23中的指令No.4的情況下,控制CPU 12在步驟S181中讀取指令,然后通過(guò)步驟S182、S183和S184的處理過(guò)程進(jìn)入S196的處理過(guò)程。
在步驟S196中,控制CPU 12檢查讀取指令是否是地址改變指令。當(dāng)該讀取指令是地址改變指令時(shí),控制CPU 12進(jìn)入S197的處理。當(dāng)該讀取指令不是地址改變指令時(shí),控制CPU 12進(jìn)入S185的處理。
圖23中的指令No.4是地址改變指令。因此,控制CPU 12進(jìn)入S197的處理過(guò)程。
在步驟S197中,控制CPU 12判定由該讀取地址改變指令表示的移位值0x00000010(2307)是地址0x00110010(其要加到RAM 14中操作區(qū)域的起始地址0x00110000上)的地址改變指令。
此外,控制CPU 12利用圖22所示的操作碼和0x00110010后面的4位操作數(shù),將圖26中所示的在地址0x00110010(2603)內(nèi)存儲(chǔ)的操作碼0xEA(2604)解釋為到地址0x00000318的轉(zhuǎn)移命令。
此外,控制CPU 12利用圖25所示的模塊移位信息記錄,確認(rèn)包括0x00000318在內(nèi)的區(qū)塊0x00000220到0x000005FFF具有移位量0x00000010。因此,控制CPU 12算出校正程序中的轉(zhuǎn)移目的地址是通過(guò)將未校正的轉(zhuǎn)移目的地址0x00000318加上移位量0x00000010獲得的0x00000328。
然后,在步驟S198中,控制CPU 12更新地址(2701)0x00110010(2703)到0x00000328的操作碼(數(shù)據(jù))(2702)0xEA(2704)后面的字節(jié)操作數(shù)。
控制CPU 12進(jìn)入S181的處理過(guò)程。
此外在圖23的指令No.5中,控制CPU 12在步驟S181中讀取指令,然后通過(guò)步驟S182、S183、S184和S196的處理過(guò)程進(jìn)入S197的處理過(guò)程。
在步驟S197中,控制CPU 12判斷用讀取地址改變指令表示的移位值0x000001F8是否是要被加到RAM 14的操作區(qū)域的起始地址0x00110000上的地址0x001101F8的地址改變指令。
例如,控制CPU 12利用圖22所示的操作碼和0x001101F8后面的1位操作數(shù),將存在圖27的地址(2701)0x001101F8(2705)中的操作碼(2702)0xE9(2706)解釋為對(duì)于地址0x00000230的轉(zhuǎn)移命令,所述地址0x00000230是通過(guò)將0x38加到0x000001F8上獲得的。此外,控制CPU 12利用圖25所示的移位記錄識(shí)別出包括0x00000230的區(qū)塊0x00000220到0x000005FF具有移位量0x00000010。
因此,控制CPU 12能夠判定校正程序中的轉(zhuǎn)移目的地址是通過(guò)將移位量0x0000010加到未校正的轉(zhuǎn)移地址0x00000230上獲得的0x00000240,并算出有著操作碼的0x00001F8的相對(duì)地址是0x48。
然后,在步驟S198中,控制CPU 12根據(jù)步驟S197中確定的轉(zhuǎn)移目的地址,將圖28所示地址(2801)0x001101F8(2805)的操作碼(數(shù)據(jù))(2802)0xE9(2806)后面的1字節(jié)操作數(shù)更新為0x48。
因此,當(dāng)操作碼所用的操作數(shù)因模塊B的容量變化而移位時(shí),控制CPU 12能夠根據(jù)圖25所示的模塊移位信息記錄自動(dòng)校正操作數(shù)。因此,就不必指示從外部獲取操作數(shù)的校正內(nèi)容,從而減少了指令的數(shù)據(jù)量。
接著,控制CPU 12進(jìn)入過(guò)程S181。
之后,在指令是圖23中的指令No.6的情況下,控制CPU 12在步驟S181中讀取指令,然后經(jīng)由步驟S182、S183、S184和S196進(jìn)入步驟S185的處理過(guò)程。
在步驟S185中,控制CPU 12檢查讀取指令是否是寫(xiě)回ROM的指令,當(dāng)該讀取指令是寫(xiě)回ROM 13的指令時(shí),其進(jìn)入步驟S188的處理過(guò)程,而當(dāng)該讀取指令不是寫(xiě)回ROM 13的指令時(shí),其進(jìn)入步驟S181的處理過(guò)程。
圖23中的指令No.6是寫(xiě)回ROM 13的指令。因此,控制CPU 12進(jìn)入步驟S188的處理過(guò)程。
在步驟S188中,控制CPU 12確定閃速ROM 13中用寫(xiě)回ROM 13的讀取指令指示的區(qū)塊。例如,在指令是圖23舉例示出的指令No.6的情況下,控制CPU 12將地址0x00000000到0x0000FFFF確定為這個(gè)區(qū)塊。
接著,在步驟S189中,控制CPU 12刪掉步驟S188中確定的閃速ROM 13的0x00000000到0x0000FFFF上的區(qū)塊。然后,控制CPU 12將存在RAM 14的操作區(qū)域0x00110000到0x0011FFFF中的新控制軟件記錄到閃速ROM 13的已刪區(qū)塊上。
控制CPU 12進(jìn)入步驟S181的處理過(guò)程。
然后,控制CPU 13重復(fù)前述處理過(guò)程,直到在步驟S182中將步驟S181中讀取的指令判定為重寫(xiě)終止指令。
如上所述,依照第六實(shí)施例,可在無(wú)需下載如圖20B所示的整個(gè)校正程序的情況下,更新終端的閃速ROM 13內(nèi)存儲(chǔ)的控制軟件。
另外,雖然第六實(shí)施例描述了程序由三個(gè)模塊組成的情況,但模塊數(shù)量和模塊容量并不限于上面描述的模塊數(shù)量和容量。
雖然第六實(shí)施例中將示出的圖22作為轉(zhuǎn)移命令的操作碼的例子,但根據(jù)終端設(shè)備1所用的控制CPU 12的類(lèi)型,利用不同于圖22所示的操作碼也能獲得相同效果。
另外,第六實(shí)施例描述了利用圖25所示的模塊移位信息記錄來(lái)校正絕對(duì)值轉(zhuǎn)移和相對(duì)值轉(zhuǎn)移操作數(shù)的情況。但是,還可適用函數(shù)調(diào)用命令以及轉(zhuǎn)移命令。
此外,依照第六實(shí)施例,當(dāng)采用了轉(zhuǎn)移命令和函數(shù)調(diào)用命令(每個(gè)都具有相對(duì)指定地址)、且它們都超過(guò)相對(duì)地址指定轉(zhuǎn)移命令中可用的地址范圍時(shí),取消了對(duì)通過(guò)外部接口下載用于指示從相對(duì)地址指定轉(zhuǎn)移命令或相對(duì)地址指定函數(shù)調(diào)用命令相對(duì)轉(zhuǎn)化成絕對(duì)地址指定轉(zhuǎn)移命令或絕對(duì)地址指定函數(shù)調(diào)用命令的數(shù)據(jù)、以變?yōu)楦鲁绦虻囊?。于是減少了通過(guò)外部接口指示的數(shù)據(jù)量。結(jié)果,可以縮短包括數(shù)據(jù)傳輸時(shí)間在內(nèi)的程序更新操作時(shí)間。
此外,在設(shè)有由事件如警報(bào)、鍵壓力和本發(fā)明的處理模塊存在地址組成的查詢表配置的情況下,可利用圖25所示的模塊移位信息記錄,在查詢表上校正處理模塊的存在地址。
在校正查詢表的情況下,可由外部或利用終端設(shè)備1中預(yù)先裝入的地址指示查詢表位置。在裝入查詢表地址時(shí),可在無(wú)需外部指令的情況下自動(dòng)校正查詢表。
另外,在第六實(shí)施例中,可利用如絕對(duì)值轉(zhuǎn)移和相對(duì)值轉(zhuǎn)移之類(lèi)的地址(操作數(shù))進(jìn)行用于改變其中存儲(chǔ)著命令的地址的指令。但是,控制CPU 12在接收僅僅表示地址的指令的過(guò)程中,可自動(dòng)判斷絕對(duì)值轉(zhuǎn)移或相對(duì)值轉(zhuǎn)移之類(lèi)的命令是否存在于該地址中,并且在存在該命令時(shí),利用圖25所示的模塊移位信息記錄校正操作數(shù)。
于是可以省掉從外部獲取指令。此外,在不知道存儲(chǔ)了絕對(duì)值轉(zhuǎn)移或相對(duì)值轉(zhuǎn)移之類(lèi)的命令的情況下,可以自動(dòng)校正命令中采用的操作數(shù)。
另外,通過(guò)從開(kāi)頭分解程序,可以提取轉(zhuǎn)移(函數(shù)調(diào)用)命令,并校正該命令中使用的地址。于是減少了從外部獲取的指令。
該情況下,當(dāng)程序和數(shù)據(jù)部分結(jié)合得很復(fù)雜時(shí),由于難以將程序部分分開(kāi),因此可以提前從外部指定程序部分,然后僅分解該指定部分,再重新計(jì)算地址。
通過(guò)這種方式,就消除了從外部指定轉(zhuǎn)移(函數(shù)調(diào)用)命令的位置的需要,因此可以減少?gòu)耐獠揩@取的指令。
此外,第六實(shí)施例描述了按照步驟S182、S183、S184、S196和S185的順序執(zhí)行對(duì)步驟S181中讀取的指令內(nèi)容進(jìn)行確定處理的情況,但還可以可選方式改變確定順序。
另外,在第六實(shí)施例中,在步驟S192中將重寫(xiě)地址加1,然后在步驟S193中將重寫(xiě)數(shù)據(jù)項(xiàng)的數(shù)目減1。但是,先將重寫(xiě)數(shù)據(jù)項(xiàng)的數(shù)目減1,然后將重寫(xiě)地址加1,也可以獲得相同效果。
再有,第六實(shí)施例中,于步驟S186中確定了擴(kuò)展源的地址、要擴(kuò)展的數(shù)據(jù)項(xiàng)數(shù)目、擴(kuò)展目的地址以后,在步驟S 189中將數(shù)據(jù)從閃速ROM 13擴(kuò)展到RAM 14中,在步驟S195中記錄該移位。但是,先記錄移位,然后將數(shù)據(jù)從閃速ROM 13擴(kuò)展到RAM 14中也能取得相同效果。
本申請(qǐng)基于2002年10月8日申請(qǐng)的日本專利申請(qǐng)2002-294499和2003年10月6日申請(qǐng)的2003-347561,在此專門(mén)通過(guò)參考將其整個(gè)內(nèi)容結(jié)合進(jìn)來(lái)。
工業(yè)應(yīng)用性依照本發(fā)明,在更新終端的非易失性存儲(chǔ)器內(nèi)存儲(chǔ)的軟件以便校正的過(guò)程中,可在無(wú)需將所有校正軟件下載到終端中的情況下校正軟件,并且有利的是能有效地更新終端中的軟件。
權(quán)利要求
1.一種程序更新方法,其包括在更新可重寫(xiě)非易失性存儲(chǔ)器內(nèi)存儲(chǔ)的程序過(guò)程中,其中所述可重寫(xiě)非易失性存儲(chǔ)器由多個(gè)區(qū)塊組成,并且這些區(qū)塊包括存儲(chǔ)著程序的更新目標(biāo)部分的區(qū)塊,于RAM內(nèi)對(duì)存儲(chǔ)著所述程序的更新目標(biāo)部分的區(qū)塊內(nèi)的程序部分進(jìn)行擴(kuò)展;根據(jù)通過(guò)外部接口指示的重寫(xiě)指令,僅更新在RAM內(nèi)經(jīng)過(guò)擴(kuò)展的程序部分的更新目標(biāo)部分,以及將更新了的程序部分一起寫(xiě)回非易失性存儲(chǔ)器。
2.根據(jù)權(quán)利要求1所述的程序更新方法,其中當(dāng)更新目標(biāo)部分由于更新而增大了容量時(shí),重寫(xiě)指令是,在RAM的擴(kuò)展過(guò)程中用于移位后續(xù)部分、以便增加非易失性存儲(chǔ)器內(nèi)存儲(chǔ)的更新目標(biāo)部分和更新目標(biāo)部分的后續(xù)部分之間的相對(duì)位置關(guān)系的指令。
3.根據(jù)權(quán)利要求2所述的程序更新方法,其中重寫(xiě)指令包括確定后續(xù)部分和在RAM內(nèi)擴(kuò)展該后續(xù)部分的起始地址的地址信息。
4.根據(jù)權(quán)利要求3所述的程序更新方法,其中確定后續(xù)部分的地址信息包括后續(xù)部分在非易失性存儲(chǔ)器中或RAM中的起始地址和數(shù)據(jù)項(xiàng)數(shù)目。
5.根據(jù)權(quán)利要求3所述的程序更新方法,其中確定后續(xù)部分的地址信息包括在非易失性存儲(chǔ)器或RAM內(nèi)后續(xù)部分的起始地址和終止地址。
6.根據(jù)權(quán)利要求2所述的程序更新方法,其中后續(xù)部分在RAM中的移位信息記錄在RAM中不同于程序擴(kuò)展區(qū)域的另一區(qū)域內(nèi),當(dāng)非易失性存儲(chǔ)器或RAM的地址由程序指令指示時(shí),根據(jù)移位信息校正所指示的地址內(nèi)存儲(chǔ)的絕對(duì)地址值。
7.根據(jù)權(quán)利要求6所述的程序更新方法,其中移位信息包括確定后續(xù)部分位置的地址信息和在RAM內(nèi)擴(kuò)展后續(xù)部分的起始地址。
8.根據(jù)權(quán)利要求7所述的程序更新方法,其中確定后續(xù)部分的地址信息包括后續(xù)部分在非易失性存儲(chǔ)器或RAM中的起始地址和數(shù)據(jù)項(xiàng)數(shù)目,或者后續(xù)部分在非易失性存儲(chǔ)器或RAM內(nèi)的起始地址和終止地址。
9.根據(jù)權(quán)利要求7所述的程序更新方法,其中在RAM內(nèi)擴(kuò)展后續(xù)部分的起始地址是與根據(jù)在非易失性存儲(chǔ)器或RAM內(nèi)后續(xù)部分的起始地址的相對(duì)地址。
10.根據(jù)權(quán)利要求6所述的程序更新方法,其中重寫(xiě)指令在非易失性存儲(chǔ)器或RAM內(nèi)指示地址,依照移位信息校正該指示地址內(nèi)存儲(chǔ)的絕對(duì)地址指定轉(zhuǎn)移命令使用的絕對(duì)地址值。
11.根據(jù)權(quán)利要求6所述的程序更新方法,其中重寫(xiě)指令在非易失性存儲(chǔ)器或RAM內(nèi)指示地址,依照移位信息校正該指示地址內(nèi)存儲(chǔ)的絕對(duì)地址指定函數(shù)調(diào)用命令使用的絕對(duì)地址值。
12.根據(jù)權(quán)利要求6所述的程序更新方法,其中重寫(xiě)指令在非易失性存儲(chǔ)器或RAM內(nèi)指示地址,依照移位信息校正該指示地址內(nèi)存儲(chǔ)的相對(duì)地址值。
13.根據(jù)權(quán)利要求6所述的程序更新方法,其中重寫(xiě)指令在非易失性存儲(chǔ)器或RAM內(nèi)指示地址,并依照移位信息校正該指示地址內(nèi)存儲(chǔ)的相對(duì)地址指定轉(zhuǎn)移命令使用的相對(duì)地址值。
14.根據(jù)權(quán)利要求6所述的程序更新方法,其中重寫(xiě)指令在非易失性存儲(chǔ)器或RAM內(nèi)指示地址,依照移位信息校正該指示地址內(nèi)存儲(chǔ)的相對(duì)地址指定函數(shù)調(diào)用命令使用的相對(duì)地址值。
15.根據(jù)權(quán)利要求12所述的程序更新方法,其中在依照移位信息校正程序的相對(duì)地址值的過(guò)程中,在所校正的相對(duì)地址值超過(guò)了允許相對(duì)地址指定的范圍時(shí),將所述相對(duì)地址值轉(zhuǎn)換成絕對(duì)地址值。
16.根據(jù)權(quán)利要求13所述的程序更新方法,其中在依照移位信息校正程序的相對(duì)地址值、并將所校正的相對(duì)地址值校正成絕對(duì)地址值的過(guò)程中,利用未經(jīng)校正的相對(duì)地址值將相對(duì)地址指定轉(zhuǎn)移命令轉(zhuǎn)換成絕對(duì)地址指定轉(zhuǎn)移命令。
17.根據(jù)權(quán)利要求14所述的程序更新方法,其中在依照移位信息校正程序的相對(duì)地址值、并將所校正的相對(duì)地址值轉(zhuǎn)換成絕對(duì)地址值的過(guò)程中,利用未經(jīng)校正的相對(duì)地址值將相對(duì)地址指定函數(shù)調(diào)用命令轉(zhuǎn)換成絕對(duì)地址指定函數(shù)調(diào)用命令。
18.根據(jù)權(quán)利要求1所述的程序更新方法,其中重寫(xiě)指令包括程序部分在非易失性存儲(chǔ)器或RAM中擴(kuò)展的起始地址、要重寫(xiě)的數(shù)據(jù)項(xiàng)數(shù)目以及后續(xù)的實(shí)際重寫(xiě)數(shù)據(jù)。
19.根據(jù)權(quán)利要求1所述的程序更新方法,其中重寫(xiě)指令包括程序部分在非易失性存儲(chǔ)器中或在RAM中擴(kuò)展的起始地址、后續(xù)的實(shí)際重寫(xiě)數(shù)據(jù)以及表示重寫(xiě)終止的特定數(shù)據(jù)。
20.根據(jù)權(quán)利要求3所述的程序更新方法,其中在重寫(xiě)指令的地址指定過(guò)程中,先利用絕對(duì)值進(jìn)行地址指定,然后利用根據(jù)前面剛剛指定的地址的相對(duì)地址進(jìn)行后續(xù)的地址指定。
21.根據(jù)權(quán)利要求3所述的程序更新方法,其中在重寫(xiě)指令的地址指定過(guò)程中,先利用絕對(duì)值進(jìn)行地址指定,之后在由指定地址完成了后續(xù)重寫(xiě)處理時(shí),利用根據(jù)地址的相對(duì)地址進(jìn)行后續(xù)的地址指定。
22.根據(jù)權(quán)利要求3所述的程序更新方法,其中在重寫(xiě)指令的地址指定過(guò)程中,先利用提前確定的地址作為參考進(jìn)行地址指定,后續(xù)指定是利用前面剛剛指定的、作為參考的地址的相對(duì)地址指定。
23.根據(jù)權(quán)利要求3所述的程序更新方法,其中在重寫(xiě)指令的地址指定過(guò)程中,先利用絕對(duì)值進(jìn)行地址指定,然后利用提前確定的作為參考的地址進(jìn)行后續(xù)地址指定,后續(xù)地址指定是根據(jù)在由所指定的地址完成后續(xù)重寫(xiě)處理時(shí)的地址的相對(duì)地址指定。
24.一種終端設(shè)備,其包括可重寫(xiě)非易失性存儲(chǔ)器,其多個(gè)區(qū)塊內(nèi)存儲(chǔ)著程序;RAM;用于接收程序的重寫(xiě)指令的外部接口;以及控制器,其對(duì)存儲(chǔ)著程序的更新目標(biāo)部分的至少一個(gè)區(qū)塊內(nèi)的程序部分進(jìn)行擴(kuò)展,依照重寫(xiě)指令僅對(duì)RAM內(nèi)經(jīng)過(guò)擴(kuò)展的程序部分的更新目標(biāo)部分進(jìn)行更新,然后一起將更新后的程序部分寫(xiě)回非易失性存儲(chǔ)器。
25.根據(jù)權(quán)利要求24所述的終端設(shè)備,其中外部接口是有線連接接口。
26.根據(jù)權(quán)利要求24所述的終端設(shè)備,其中外部接口是無(wú)線連接接口。
27.根據(jù)權(quán)利要求24所述的終端設(shè)備,其中外部接口是存儲(chǔ)卡接口,控制器從插入存儲(chǔ)卡接口的存儲(chǔ)卡中讀出重寫(xiě)指令。
全文摘要
在更新可重寫(xiě)非易失性存儲(chǔ)器如閃速ROM中存儲(chǔ)的程序時(shí),將非易失性存儲(chǔ)器內(nèi)包含要更新的存儲(chǔ)程序部分的區(qū)塊中的程序部分傳到RAM中,僅讓要更新的傳送程序部分從外部接受指示并進(jìn)行更新。然后擦除非易失性存儲(chǔ)器內(nèi)的這個(gè)區(qū)塊,再次將RAM內(nèi)經(jīng)過(guò)更新的這部分程序記錄到非易失性存儲(chǔ)器的這個(gè)經(jīng)過(guò)擦除的區(qū)塊上。
文檔編號(hào)G06F9/06GK1692330SQ20038010031
公開(kāi)日2005年11月2日 申請(qǐng)日期2003年10月8日 優(yōu)先權(quán)日2002年10月8日
發(fā)明者松本泰輔, 渡邊泰彥 申請(qǐng)人:松下電器產(chǎn)業(yè)株式會(huì)社