徐勁松,湯新柱,管燕萍
(中興通訊上海研發(fā)中心,上海201203)
隨著通信技術(shù)的迅速發(fā)展,各種新業(yè)務(wù)層出不窮,電信運營商對通信設(shè)備的功能需求日益增多。因此,通信設(shè)備經(jīng)常需要升級軟件版本。而隨著功能的日趨完善,軟件版本所需的存儲空間越來越大。另一方面,激烈的競爭促使各通信設(shè)備制造商盡可能采用物美價廉的器件以降低設(shè)備成本。一些高性價比的處理器獲得了廣泛的應(yīng)用,這類處理器可能內(nèi)置了少量的FLASH存儲空間。為了降低成本,通信設(shè)備制造商在制造設(shè)備時,可能不再另外添置外置的FLASH,而僅僅是配置一定容量的外置RAM,從外置RAM中劃出一部分空間用于存放設(shè)備的應(yīng)用程序,其余的用作設(shè)備運行中的數(shù)據(jù)空間。
以AT89C52[1]處理器為例,它內(nèi)置有8KB大小的FLASH,另外具備64KB外置FLASH以及64KB外置RAM的尋址能力。通信設(shè)備制造商在制造設(shè)備時,僅僅是配置64KB的外置RAM,用于存儲程序和數(shù)據(jù),例如前32KB用于存放數(shù)據(jù),后32KB用于存放應(yīng)用程序。一種常用的實現(xiàn)方式是,內(nèi)置FLASH用于存儲很小的內(nèi)核程序,在系統(tǒng)上電時,從服務(wù)器下載容量更大的應(yīng)用程序,存放在外置RAM中;下載結(jié)束后,跳轉(zhuǎn)外置RAM的程序區(qū)執(zhí)行。然而,隨著系統(tǒng)功能的增加,原來用于存放應(yīng)用程序的32KB空間已經(jīng)不夠存放應(yīng)用程序,而數(shù)據(jù)區(qū)的使用可能不到32KB,例如只使用了20KB。一種解決辦法是重新制作存儲在內(nèi)置FLASH中的內(nèi)核程序,擴大應(yīng)用程序區(qū)的存放范圍,使得內(nèi)核程序在下載應(yīng)用程序時將后44KB的空間都作為應(yīng)用程序存儲區(qū)。然而,對于現(xiàn)網(wǎng)應(yīng)用的大量設(shè)備而言,要更新內(nèi)核程序的版本,意味著必須把單板斷電、重新燒入內(nèi)置的FLASH內(nèi)核程序,顯然是不現(xiàn)實的。
本文提供一種優(yōu)化地址空間的版本下載方法,應(yīng)用于通信領(lǐng)域嵌入式系統(tǒng),以解決應(yīng)用程序的存儲空間不夠,而數(shù)據(jù)的存儲空間富余的問題。所述的版本下載方法,包括如下步驟:
①將應(yīng)用程序版本制作成主版本和輔助版本,并保存在服務(wù)器上,使得主版本的大小不超過設(shè)備分配給應(yīng)用程序的存儲空間大小;
②設(shè)備上電后,該設(shè)備內(nèi)核程序?qū)?yīng)用程序的主版本從服務(wù)器上下載到設(shè)備分配給應(yīng)用程序的存儲空間,下載程序完畢后,跳轉(zhuǎn)到應(yīng)用程序的主版本運行;
③應(yīng)用程序的主版本執(zhí)行了設(shè)備的初始化以后,與服務(wù)器通信,請求下載應(yīng)用程序的輔助版本;
④應(yīng)用程序的主版本將輔助版本下載到設(shè)備分配給數(shù)據(jù)的存儲空間中的富余空間內(nèi),下載完成后繼續(xù)往下正常執(zhí)行。此時,在輔助版本中的新增功能可以正常使用。
下面以AT89C52處理器的設(shè)備為例來說明上述版本下載方法的實現(xiàn)。
圖1是采用AT89C52處理器的設(shè)備存儲空間的分布圖。這里只是一個示例,實際的空間分布大小不一定與此處的示例相同,但不影響本文所述版本下載方法的實現(xiàn)。AT89C52處理器內(nèi)置的8KB FLASH用于存放內(nèi)核程序;設(shè)備另外配置有64KB的外置RAM,其中,前32KB用于存放數(shù)據(jù),后32KB用于存放程序。在系統(tǒng)上電時,內(nèi)核程序負責從服務(wù)器下載應(yīng)用程序,存放在外置RAM的后32 KB應(yīng)用程序存儲空間中,然后跳轉(zhuǎn)到應(yīng)用程序執(zhí)行。
圖1 采用AT89C52的設(shè)備存儲空間分布圖
圖2是采用本文所述版本下載方法后,采用AT89C52處理器的設(shè)備存儲空間的分布圖。假定設(shè)備原用于存放數(shù)據(jù)的32KB外置RAM實際只用到20KB,還有12KB的剩余空間。在系統(tǒng)上電時,存儲在內(nèi)置FLASH中的內(nèi)核程序負責從服務(wù)器下載應(yīng)用程序的主版本,存放在外置RAM的后32KB存儲空間中。之后,應(yīng)用程序的主版本負責將輔助版本下載到外置RAM原來用于存放數(shù)據(jù)的空間中的剩余12KB空間。在制作主版本和輔助版本時,對于主版本和輔助版本之間的功能模塊采用絕對定址的方式相互調(diào)用。
圖2 優(yōu)化地址空間后采用AT89C52的設(shè)備存儲空間布圖
圖3是本文實例采用AT89C52處理器的設(shè)備版本下載應(yīng)用方法流程圖,包括如下步驟。
①制作應(yīng)用程序版本時,根據(jù)其功能的劃分制作主版本和輔助版本并保存在服務(wù)器上,使得主版本的大小不超過32KB,輔助版本的大小不超過12KB;在制作主版本和輔助版本時,對于主版本和輔助版本之間的功能模塊采用絕對定址的方式相互調(diào)用。
②設(shè)備上電后,存儲在內(nèi)置FLASH中的內(nèi)核程序負責從服務(wù)器下載應(yīng)用程序的主版本,存放在外置RAM的后32 KB存儲空間中,然后跳轉(zhuǎn)到應(yīng)用程序的主版本運行。
③對設(shè)備進行初始化,與服務(wù)器通信,請求下載應(yīng)用程序的輔助版本。
④應(yīng)用程序的主版本負責將輔助版本下載到外置RAM原來用于存放數(shù)據(jù)的空間中的剩余12KB空間。
⑤下載應(yīng)用程序的輔助版本成功后,主版本才繼續(xù)往下正常執(zhí)行,此時,應(yīng)用程序的主版本可以正常調(diào)用輔助版本的功能模塊。
圖3 采用AT89C52處理器的設(shè)備版本下載應(yīng)用方法流程圖
本文描述了一種優(yōu)化地址空間的版本下載方法,即二次版本下載的方法,充分利用現(xiàn)有設(shè)備分配給數(shù)據(jù)的存儲空間中的剩余空間,擴大了應(yīng)用程序的存儲空間,避免了必須為現(xiàn)有設(shè)備更換內(nèi)核程序才能擴大應(yīng)用程序存儲空間的弊端。此外,本文所述的方法并不局限于AT89C52處理器。
[1] 8-bit Microcontroller with 8KBytes Flash-AT89C52[EB/OL] .[2014-11] .http://www.atmel.com/images/doc0313.pdf.