張國勤國電南瑞三能電力儀表(南京)有限公司
?
遠程自動抄表系統BootLoader的設計
張國勤
國電南瑞三能電力儀表(南京)有限公司
摘要:為了方便基于ARM體系的電力遠程抄表系統中的功能應用程序的變化更新,特將程序劃為二部分,一部分為引導程序(BootLoader);另一部分為功能應用程序。引導程序的主要功能是加載或升級功能應用程序。
關鍵詞:電力遠程抄表系統;BootLoader
現今移動設備得到了廣泛的應用和發展,嵌入式系統受到了更多的關注和發展。隨著計算機和微電子技術的發展,微控制芯片的功能也越來越強大,從而得到了越來越廣泛的應用。嵌入式系統在功耗、成本、可靠性及硬件的體積大小等方面有著相當嚴格的要求。隨著技術的發展,UCOS、linux、WINCE等操作系統也對嵌入式系統進行了成熟穩定支撐,這也提高了處理器的要求。當今,ARM體系的微處理器精簡指令構架及其兼顧復雜指令的設計,使其做到了高性能低功耗,從而得到了廣泛的應用。
本文主要研究的是采用ARM體系的電力遠程抄表終端的BootLoader的設計與實現。BootLoader是電力遠程抄表終端中執行功能應用程序前的一段程序,它的作用主要是升級或加載功能應用程序。
BootLoader的硬件平臺是根據整個電力遠程抄表的需求,選擇合適的硬件環境,從而以最優的性價比實現系統的功能為原則而選擇的。本系統的硬件平臺是經過慎重考慮后選擇了基于512kB程序空間的ARM微控制器搭建起來的。
BootLoader程序分為上下兩層,分別是硬件驅動與應用層。底層驅動包含串口通信、定時器、SPI、DATAFLASH、外擴RAM與LCD顯示等。應用層主要含有升級信息檢測、接收待升級的應用軟件、軟件跳轉、程序加載,升級進度顯示等五大功能。
2.1硬件驅動
硬件驅動主要實現對芯片資源的直接訪問,硬件驅動接口提供了應用層訪問硬件資源的一個接口。
2.2應用層

圖1 工作流程圖
上述提到應用部分主要實現升級信息檢測、接收待升級的應用軟件、軟件跳轉、程序加載,升級進度顯示等五個功能。工作流程圖如圖1所示。
BootLoader軟件設計完成后,接著需要設計BootLoader的存放位置、功能應用程序的存放位置。嚴密準確的地址分配,才能避免相互沖突,系統失控。
ARM系統復位后,首先從物理地址0x00000000開始運行,該地址是MCU預先設定的。我們設計BootLoader程序在此處運行,當BootLoader運行到程序的末尾時,程序將跳轉到預定的功能應用程序地址0x00008000繼續運行。為BootLoader預留的程序空間是32KB,下圖2為具體的地址分配圖:

圖2 地址分配圖
本公司的電力遠程抄表終端在多個省份已廣泛使用,本節介紹BootLoader在設計使用中遇到的瓶頸。
4.1程序空間大小限制
在設計使用中,由于我們選用的ARM芯片總的程序空間只有512kB,我們的主應用程序使用程序空間已達到470kB左右,這樣留給BootLoader的空間實際不到40kB,為了給主應用程序空間留點余量,我們將BootLoader程序空間預留了32kB,在設計完基本的串口升級,存儲、顯示簡單的頁面等功能后,BootLoader程序空間已達到了30kB左右,如果要在BootLoader中實現GPRS升級以及圖片顯示等功能,程序空間已不足。
4.2接收緩存、速率限制
目前的BootLoader串口升級最大每幀可達10240字節,速率為57600bps,升級完一個功能應用程序(470kB)需47幀左右,如果增大每幀字節數,速率必須降低,否則容易出現丟字節;如果增加速率,每幀最大字節數必須減少,否則也會出現丟字節,經過反復的驗證,每幀10240字節,速率57600bps是基于該芯片(最高主頻可達72MHz)最優最快的程序升級配置。
BootLoader是在嵌入式系統的發展過程中產生的。它的使命是升級或加載功能應用程序,為了給設計人員提供更多的便利,BootLoader的功能也得到了更多的擴充,比如增加了網絡、豐富的圖形顯示等。
現今,BootLoader在電力遠程抄表系統中已得到廣泛的使用,為抄表集中器的運行維護帶來了極大的方便。
參考文獻:
[1]陳海軍,申衛昌,史穎.嵌入式系統引導程序詳探[J].微機發展,2006年01期.
[2]郭志,洪秀臣,曾奕.一個嵌入式系統的啟動分析[J].微計算機信息,2005年第22期.
作者簡介:張國勤(1976- ),男,工作于國電南瑞三能電力儀表(南京)有限公司工程師研究方向:嵌入式設計開發。