徐勁松,湯新柱,管燕萍
(中興通訊上海研發中心,上海201203)
隨著通信技術的迅速發展,各種新業務層出不窮,電信運營商對通信設備的功能需求日益增多。因此,通信設備經常需要升級軟件版本。而隨著功能的日趨完善,軟件版本所需的存儲空間越來越大。另一方面,激烈的競爭促使各通信設備制造商盡可能采用物美價廉的器件以降低設備成本。一些高性價比的處理器獲得了廣泛的應用,這類處理器可能內置了少量的FLASH存儲空間。為了降低成本,通信設備制造商在制造設備時,可能不再另外添置外置的FLASH,而僅僅是配置一定容量的外置RAM,從外置RAM中劃出一部分空間用于存放設備的應用程序,其余的用作設備運行中的數據空間。
以AT89C52[1]處理器為例,它內置有8KB大小的FLASH,另外具備64KB外置FLASH以及64KB外置RAM的尋址能力。通信設備制造商在制造設備時,僅僅是配置64KB的外置RAM,用于存儲程序和數據,例如前32KB用于存放數據,后32KB用于存放應用程序。一種常用的實現方式是,內置FLASH用于存儲很小的內核程序,在系統上電時,從服務器下載容量更大的應用程序,存放在外置RAM中;下載結束后,跳轉外置RAM的程序區執行。然而,隨著系統功能的增加,原來用于存放應用程序的32KB空間已經不夠存放應用程序,而數據區的使用可能不到32KB,例如只使用了20KB。一種解決辦法是重新制作存儲在內置FLASH中的內核程序,擴大應用程序區的存放范圍,使得內核程序在下載應用程序時將后44KB的空間都作為應用程序存儲區。然而,對于現網應用的大量設備而言,要更新內核程序的版本,意味著必須把單板斷電、重新燒入內置的FLASH內核程序,顯然是不現實的。
本文提供一種優化地址空間的版本下載方法,應用于通信領域嵌入式系統,以解決應用程序的存儲空間不夠,而數據的存儲空間富余的問題。所述的版本下載方法,包括如下步驟:
①將應用程序版本制作成主版本和輔助版本,并保存在服務器上,使得主版本的大小不超過設備分配給應用程序的存儲空間大?。?/p>
②設備上電后,該設備內核程序將應用程序的主版本從服務器上下載到設備分配給應用程序的存儲空間,下載程序完畢后,跳轉到應用程序的主版本運行;
③應用程序的主版本執行了設備的初始化以后,與服務器通信,請求下載應用程序的輔助版本;
④應用程序的主版本將輔助版本下載到設備分配給數據的存儲空間中的富余空間內,下載完成后繼續往下正常執行。此時,在輔助版本中的新增功能可以正常使用。
下面以AT89C52處理器的設備為例來說明上述版本下載方法的實現。
圖1是采用AT89C52處理器的設備存儲空間的分布圖。這里只是一個示例,實際的空間分布大小不一定與此處的示例相同,但不影響本文所述版本下載方法的實現。AT89C52處理器內置的8KB FLASH用于存放內核程序;設備另外配置有64KB的外置RAM,其中,前32KB用于存放數據,后32KB用于存放程序。在系統上電時,內核程序負責從服務器下載應用程序,存放在外置RAM的后32 KB應用程序存儲空間中,然后跳轉到應用程序執行。

圖1 采用AT89C52的設備存儲空間分布圖
圖2是采用本文所述版本下載方法后,采用AT89C52處理器的設備存儲空間的分布圖。假定設備原用于存放數據的32KB外置RAM實際只用到20KB,還有12KB的剩余空間。在系統上電時,存儲在內置FLASH中的內核程序負責從服務器下載應用程序的主版本,存放在外置RAM的后32KB存儲空間中。之后,應用程序的主版本負責將輔助版本下載到外置RAM原來用于存放數據的空間中的剩余12KB空間。在制作主版本和輔助版本時,對于主版本和輔助版本之間的功能模塊采用絕對定址的方式相互調用。

圖2 優化地址空間后采用AT89C52的設備存儲空間布圖
圖3是本文實例采用AT89C52處理器的設備版本下載應用方法流程圖,包括如下步驟。
①制作應用程序版本時,根據其功能的劃分制作主版本和輔助版本并保存在服務器上,使得主版本的大小不超過32KB,輔助版本的大小不超過12KB;在制作主版本和輔助版本時,對于主版本和輔助版本之間的功能模塊采用絕對定址的方式相互調用。
②設備上電后,存儲在內置FLASH中的內核程序負責從服務器下載應用程序的主版本,存放在外置RAM的后32 KB存儲空間中,然后跳轉到應用程序的主版本運行。
③對設備進行初始化,與服務器通信,請求下載應用程序的輔助版本。
④應用程序的主版本負責將輔助版本下載到外置RAM原來用于存放數據的空間中的剩余12KB空間。
⑤下載應用程序的輔助版本成功后,主版本才繼續往下正常執行,此時,應用程序的主版本可以正常調用輔助版本的功能模塊。

圖3 采用AT89C52處理器的設備版本下載應用方法流程圖
本文描述了一種優化地址空間的版本下載方法,即二次版本下載的方法,充分利用現有設備分配給數據的存儲空間中的剩余空間,擴大了應用程序的存儲空間,避免了必須為現有設備更換內核程序才能擴大應用程序存儲空間的弊端。此外,本文所述的方法并不局限于AT89C52處理器。
[1] 8-bit Microcontroller with 8KBytes Flash-AT89C52[EB/OL] .[2014-11] .http://www.atmel.com/images/doc0313.pdf.