張國(guó)勤國(guó)電南瑞三能電力儀表(南京)有限公司
?
遠(yuǎn)程自動(dòng)抄表系統(tǒng)BootLoader的設(shè)計(jì)
張國(guó)勤
國(guó)電南瑞三能電力儀表(南京)有限公司
摘要:為了方便基于ARM體系的電力遠(yuǎn)程抄表系統(tǒng)中的功能應(yīng)用程序的變化更新,特將程序劃為二部分,一部分為引導(dǎo)程序(BootLoader);另一部分為功能應(yīng)用程序。引導(dǎo)程序的主要功能是加載或升級(jí)功能應(yīng)用程序。
關(guān)鍵詞:電力遠(yuǎn)程抄表系統(tǒng);BootLoader
現(xiàn)今移動(dòng)設(shè)備得到了廣泛的應(yīng)用和發(fā)展,嵌入式系統(tǒng)受到了更多的關(guān)注和發(fā)展。隨著計(jì)算機(jī)和微電子技術(shù)的發(fā)展,微控制芯片的功能也越來(lái)越強(qiáng)大,從而得到了越來(lái)越廣泛的應(yīng)用。嵌入式系統(tǒng)在功耗、成本、可靠性及硬件的體積大小等方面有著相當(dāng)嚴(yán)格的要求。隨著技術(shù)的發(fā)展,UCOS、linux、WINCE等操作系統(tǒng)也對(duì)嵌入式系統(tǒng)進(jìn)行了成熟穩(wěn)定支撐,這也提高了處理器的要求。當(dāng)今,ARM體系的微處理器精簡(jiǎn)指令構(gòu)架及其兼顧復(fù)雜指令的設(shè)計(jì),使其做到了高性能低功耗,從而得到了廣泛的應(yīng)用。
本文主要研究的是采用ARM體系的電力遠(yuǎn)程抄表終端的BootLoader的設(shè)計(jì)與實(shí)現(xiàn)。BootLoader是電力遠(yuǎn)程抄表終端中執(zhí)行功能應(yīng)用程序前的一段程序,它的作用主要是升級(jí)或加載功能應(yīng)用程序。
BootLoader的硬件平臺(tái)是根據(jù)整個(gè)電力遠(yuǎn)程抄表的需求,選擇合適的硬件環(huán)境,從而以最優(yōu)的性價(jià)比實(shí)現(xiàn)系統(tǒng)的功能為原則而選擇的。本系統(tǒng)的硬件平臺(tái)是經(jīng)過(guò)慎重考慮后選擇了基于512kB程序空間的ARM微控制器搭建起來(lái)的。
BootLoader程序分為上下兩層,分別是硬件驅(qū)動(dòng)與應(yīng)用層。底層驅(qū)動(dòng)包含串口通信、定時(shí)器、SPI、DATAFLASH、外擴(kuò)RAM與LCD顯示等。應(yīng)用層主要含有升級(jí)信息檢測(cè)、接收待升級(jí)的應(yīng)用軟件、軟件跳轉(zhuǎn)、程序加載,升級(jí)進(jìn)度顯示等五大功能。
2.1硬件驅(qū)動(dòng)
硬件驅(qū)動(dòng)主要實(shí)現(xiàn)對(duì)芯片資源的直接訪問(wèn),硬件驅(qū)動(dòng)接口提供了應(yīng)用層訪問(wèn)硬件資源的一個(gè)接口。
2.2應(yīng)用層
圖1 工作流程圖
上述提到應(yīng)用部分主要實(shí)現(xiàn)升級(jí)信息檢測(cè)、接收待升級(jí)的應(yīng)用軟件、軟件跳轉(zhuǎn)、程序加載,升級(jí)進(jìn)度顯示等五個(gè)功能。工作流程圖如圖1所示。
BootLoader軟件設(shè)計(jì)完成后,接著需要設(shè)計(jì)BootLoader的存放位置、功能應(yīng)用程序的存放位置。嚴(yán)密準(zhǔn)確的地址分配,才能避免相互沖突,系統(tǒng)失控。
ARM系統(tǒng)復(fù)位后,首先從物理地址0x00000000開(kāi)始運(yùn)行,該地址是MCU預(yù)先設(shè)定的。我們?cè)O(shè)計(jì)BootLoader程序在此處運(yùn)行,當(dāng)BootLoader運(yùn)行到程序的末尾時(shí),程序?qū)⑻D(zhuǎn)到預(yù)定的功能應(yīng)用程序地址0x00008000繼續(xù)運(yùn)行。為BootLoader預(yù)留的程序空間是32KB,下圖2為具體的地址分配圖:
圖2 地址分配圖
本公司的電力遠(yuǎn)程抄表終端在多個(gè)省份已廣泛使用,本節(jié)介紹BootLoader在設(shè)計(jì)使用中遇到的瓶頸。
4.1程序空間大小限制
在設(shè)計(jì)使用中,由于我們選用的ARM芯片總的程序空間只有512kB,我們的主應(yīng)用程序使用程序空間已達(dá)到470kB左右,這樣留給BootLoader的空間實(shí)際不到40kB,為了給主應(yīng)用程序空間留點(diǎn)余量,我們將BootLoader程序空間預(yù)留了32kB,在設(shè)計(jì)完基本的串口升級(jí),存儲(chǔ)、顯示簡(jiǎn)單的頁(yè)面等功能后,BootLoader程序空間已達(dá)到了30kB左右,如果要在BootLoader中實(shí)現(xiàn)GPRS升級(jí)以及圖片顯示等功能,程序空間已不足。
4.2接收緩存、速率限制
目前的BootLoader串口升級(jí)最大每幀可達(dá)10240字節(jié),速率為57600bps,升級(jí)完一個(gè)功能應(yīng)用程序(470kB)需47幀左右,如果增大每幀字節(jié)數(shù),速率必須降低,否則容易出現(xiàn)丟字節(jié);如果增加速率,每幀最大字節(jié)數(shù)必須減少,否則也會(huì)出現(xiàn)丟字節(jié),經(jīng)過(guò)反復(fù)的驗(yàn)證,每幀10240字節(jié),速率57600bps是基于該芯片(最高主頻可達(dá)72MHz)最優(yōu)最快的程序升級(jí)配置。
BootLoader是在嵌入式系統(tǒng)的發(fā)展過(guò)程中產(chǎn)生的。它的使命是升級(jí)或加載功能應(yīng)用程序,為了給設(shè)計(jì)人員提供更多的便利,BootLoader的功能也得到了更多的擴(kuò)充,比如增加了網(wǎng)絡(luò)、豐富的圖形顯示等。
現(xiàn)今,BootLoader在電力遠(yuǎn)程抄表系統(tǒng)中已得到廣泛的使用,為抄表集中器的運(yùn)行維護(hù)帶來(lái)了極大的方便。
參考文獻(xiàn):
[1]陳海軍,申衛(wèi)昌,史穎.嵌入式系統(tǒng)引導(dǎo)程序詳探[J].微機(jī)發(fā)展,2006年01期.
[2]郭志,洪秀臣,曾奕.一個(gè)嵌入式系統(tǒng)的啟動(dòng)分析[J].微計(jì)算機(jī)信息,2005年第22期.
作者簡(jiǎn)介:張國(guó)勤(1976- ),男,工作于國(guó)電南瑞三能電力儀表(南京)有限公司工程師研究方向:嵌入式設(shè)計(jì)開(kāi)發(fā)。