基于ARM7的軌道檢測儀的嵌入式系統(tǒng)設(shè)計
掃描二維碼
隨時隨地手機(jī)看文章
關(guān)鍵詞:ARM7;S3C44B0;快速中斷;軌道檢測儀
1 引言
對鐵路軌道進(jìn)行靜態(tài)幾何參數(shù)的檢測是鐵路部門的一項常規(guī)工作,使用便攜式軌道檢測儀能大幅降低檢測人員的工作量。這種智能測量技術(shù)不僅可以提高測量的精度和可信度,還能提供現(xiàn)場的和后續(xù)的軌道數(shù)據(jù)分析,極大的提高了軌道檢測工作的質(zhì)量和效率。便攜式軌道測試儀對嵌入式計算機(jī)系統(tǒng)的功能和性能提出了許多新的需求:高實時性、高運算性能、高集成度、低功耗、低成本。傳統(tǒng)單片機(jī)系統(tǒng)雖然能完成一般的控制任務(wù),但其運算能力太低,不足以滿足現(xiàn)場數(shù)據(jù)處理的要求,由基于SoC思想設(shè)計的ARM系列微處理器構(gòu)成的嵌入式系統(tǒng)便能良好的滿足上述要求。ARM核以高性能低功耗著稱,再配以IC制造廠商提供的大量片上外設(shè),使得ARM系列處理器擁有非常優(yōu)良的嵌入式應(yīng)用性能。本設(shè)計中采用了三星公司制造的ARM7TDMI核處理器S3C44B0完成控制和運算工作,12位高性能AD轉(zhuǎn)換器MAX197完成傳感器信號的轉(zhuǎn)換,USB主控制器CH375完成數(shù)據(jù)到U盤的轉(zhuǎn)存,系統(tǒng)也包含了液晶屏、鍵盤、微型打印機(jī)等其他必要的外設(shè)。
2 系統(tǒng)設(shè)計要求
2.1 測量原理
軌道檢測儀的測量原理如圖1所示,傳感器由一個裝有滾輪的機(jī)械支架固定,操作人員在軌道上推行該檢測儀。位移傳感器測量軌道AB之間的間距d,傾角傳感器測量軌道平面與水平面的傾角θ,光電編碼器被連接到一個滾輪上用于記錄當(dāng)前的里程L。軌道檢測儀可以設(shè)置采樣間隔,范圍0.5m-1m。當(dāng)里程達(dá)到采樣間隔時,將當(dāng)前里程L、軌距d、超高h和三角坑t作為一條記錄保存起來。
機(jī)械支架在推行過程中會產(chǎn)生頻率較軌道傾角變化頻率高很多的振動,因此需要對傾角信號進(jìn)行濾波處理才能減小測量誤差。
圖1軌道測量原理圖
Fig. 1 Principle of track measure
2.2 性能需求
軌道檢測儀的工作流程如下:使用AD轉(zhuǎn)換器以33Hz的采樣頻率對位移和傾角傳感器的信號進(jìn)行采樣,然后對前80個傾角采樣值進(jìn)行一次濾波運算,當(dāng)里程每增加5cm時,將當(dāng)前的軌距和超高保存至隊列,當(dāng)里程達(dá)到采樣間隔時,則根據(jù)隊列里的數(shù)據(jù)算出三角坑,然后與軌距和超高作為最終數(shù)據(jù)一并保存起來。因此系統(tǒng)需要一個定時器,并且能在30ms內(nèi)完成一次濾波運算。位移傳感器量程為5cm,轉(zhuǎn)換關(guān)系為1V/1cm,傾角傳感器量程為±10º,轉(zhuǎn)換關(guān)系為1V/1º,軌距、超高和三角坑的顯示分辨率要求達(dá)到0.1mm。因此AD轉(zhuǎn)換器需要擁有12位的精度。此外還需要實現(xiàn)U盤存儲、現(xiàn)場打印、時鐘、液晶顯示、鍵盤輸入等功能。
3 硬件設(shè)計
3.1 硬件整體設(shè)計
ARM7系列的處理器的型號較多,設(shè)計使用了較為常見的三星公司生產(chǎn)的S3C44B0,它包含了一個運算能力強(qiáng)大的ARM7TDMI核和大量實用的外設(shè)[1]。根據(jù)應(yīng)用的實際需要,為S3C44B0配置了1M×16Bit的Nor Flash SST39VF1601和4Banks×1M×16Bit的SDRAM HY57V641620。
MAX197是一款單電源,多通道,多量程的1/2LSB精度12位的AD轉(zhuǎn)換器,采樣速率可達(dá)100ksps,完全滿足33Hz的采樣速率的要求。它雖為單5V供電,但具有±10 V、±5 V、10 V和5 V四個量程,同時集成了時鐘發(fā)生器和基準(zhǔn)電路,數(shù)據(jù)接口也可與通用控制器直接連接。MAX197以簡潔的電路提供了相當(dāng)高的性能,是嵌入式應(yīng)用的理想選擇[2]。
CH375是一個USB總線的通用接口芯片,支持主從兩種方式,主機(jī)方式支持常用的USB全速設(shè)備。它內(nèi)置了處理Mass-Storage海量存儲設(shè)備的專用通訊協(xié)議的固件,外部控制器可以直接以扇區(qū)為基本單位讀寫常用的USB存儲設(shè)備[3],提供了一個實用的嵌入式設(shè)備的U盤存儲方案。
圖2硬件結(jié)構(gòu)框圖
Fig. 2 Picture of hardware structure
系統(tǒng)的框圖如圖2所示。其中S3C44B0的IO引腳由3.3V的LVCMOS驅(qū)動,最高輸入電壓為4.6V[1],因此總線在掛接MAX197和液晶屏等5V邏輯電平的外設(shè)時應(yīng)該加上總線收發(fā)器以做隔離,此外部分用于輸入GPIO引腳也需要加上緩沖器。
3.2 高效率電源管理
電源管理是電池供的電便攜式設(shè)備的關(guān)鍵部分,使用低功耗器件和提高電源管理效率是延長系統(tǒng)連續(xù)工作時間的兩個重要手段。設(shè)計中根據(jù)用電器的特征和成本上的考慮做出如圖3所示的供電方案。
圖3系統(tǒng)電源方案
Fig. 3 Scheme of power supply
DC-DC電源的效率雖高,但紋波系數(shù)較大,不適合模擬電路的供電;線性穩(wěn)壓器雖然穩(wěn)壓效果好,但是效率低,且只能降壓。AD轉(zhuǎn)換器工作電流很小且對電源穩(wěn)定性要求高,故直接使用線性穩(wěn)壓器給其供電,而數(shù)字部分都采用DC-DC電源,對于處理器所需的多電壓,也采用線性穩(wěn)壓器,由此帶來的功率損耗還可接受。傳感器所需的正負(fù)電壓需要通過DC-DC的升壓和反轉(zhuǎn)才能得到,為了消除其紋波的影響同時使用了線性穩(wěn)壓器。對于功率較大的液晶屏背光和打印機(jī)則使用單獨的DC-DC,并由處理器控制。同時DC-DC對負(fù)載大幅度波動的適應(yīng)不是很好,打印機(jī)的機(jī)頭產(chǎn)生的功耗是間歇性的,瞬時功率很高,因此DC-DC需要有足夠的功率裕度。
此電源方案在實踐中取得了良好的效果,系統(tǒng)在關(guān)閉背光和打印機(jī)的情況下,12V蓄電池的輸出電流小于120mA。
4軟件設(shè)計
4.1 實時數(shù)據(jù)采集
由于數(shù)據(jù)采集對實時性的要求很高,所以軟件的設(shè)計沒有采用操作系統(tǒng),而是由多個中斷服務(wù)程序和主程序組成。設(shè)計一共用到4個外部中斷和3個內(nèi)部中斷,分別來自光電編碼器正反向轉(zhuǎn)動、MAX197、CH375、RTC和兩個定時器。其中比較重要的兩個中斷分別來自光電編碼器和產(chǎn)生采樣頻率的定時器,前者的特點是頻率較高,可達(dá)1KHz,且不能丟失,后者的特點是中斷服務(wù)程序的運行時間長,需要完成濾波運算,因此要求中斷是可嵌套的。ARM處理器在硬件上不直接支持中斷服務(wù)程序的嵌套運行[4],雖然可以通過軟件的方式實現(xiàn),但會增加額外的運行開銷。巧妙的利用ARM的特有的中斷機(jī)制就可以解決上述問題,ARM提供FIQ和IRQ兩類中斷,F(xiàn)IQ中斷到來時處理器將運行狀態(tài)轉(zhuǎn)到FIQ模式下,該模式下?lián)碛袑S玫募拇嫫饕詼p少壓棧帶來的時間的損耗,IRQ類似,但專用寄存器沒有FIQ多。因此,當(dāng)處理器在IRQ模式下運行中斷服務(wù)程序時,是可以立即響應(yīng)FIQ中斷的。將光電編碼器產(chǎn)生的中斷作為FIQ類型,其他中斷作為IRQ類型就可以使每個中斷得到及時的響應(yīng)[5]。
S3C44B0的中斷控制器是可以將某個中斷設(shè)定為FIQ或IRQ類型送至ARM核的。ARM核只有FIQ和IRQ這兩個中斷信號線,因此處理器需要中斷控制器的協(xié)作才能確定某個中斷來自哪個中斷源,S3C44B0提供了兩種解決方式:VECTORED INTERRUPT MODE和NON-VECTORED INTERRUPT MODE。VECTORED INTERRUPT MODE可以像CISC處理器那樣不同的中斷執(zhí)行不同的中斷處理程序,其實現(xiàn)原理是當(dāng)中斷到來時由硬件邏輯根據(jù)具體中斷源產(chǎn)生一個與之相應(yīng)的跳轉(zhuǎn)指令放到總線上,ARM核取得該條指令后便立即跳轉(zhuǎn)到相應(yīng)的處理程序[1]。這樣可以提高中斷響應(yīng)速度和簡化程序設(shè)計,但是這種模式只支持IRQ類型的中斷;NON-VECTORED INTERRUPT MODE則像其他ARM處理器一樣,由中斷服務(wù)程序去訪問中斷控制器的I_ISPR寄存器來確定中斷源。www.51kaifa.com/
設(shè)計中將光電編碼器的中斷類型設(shè)為FIQ類型,并使用NON-VECTORED方式,其他中斷設(shè)為IRQ類型,使用VECTORED方式。中斷向量表由兩部分組成,前部分為ARM核的異常跳轉(zhuǎn)指令,后部分供S3C44B0的VECTORED中斷方式使用。中斷服務(wù)程序可由匯編或者C語言編寫,對于FIQ和IRQ類型的C語言函數(shù)需要加上__irq宏,編譯器才能生成正確的返回指令。
4.2 軟件的整體設(shè)計
由于沒有操作系統(tǒng),啟動代碼和應(yīng)用程序是融為一體的,啟動代碼由匯編語言編寫,除前面的中斷向量表以外,還負(fù)責(zé)硬件初始化,將自己從ROM拷貝到SDRAM,初始化各個模式下的堆棧等,完成了上述工作之后程序才能跳入由C語言編寫的函數(shù)之中去。www.51kaifa.com/
數(shù)據(jù)采集之外的工作對實時性要求很低,除了鍵盤掃描和RTC使用低優(yōu)先級的中斷之外,其他部分都包含在主程序循環(huán)里。特別需要注意的是,由于中斷向量表存放在Flash中,在向Flash寫數(shù)據(jù)的時候必須關(guān)閉所有中斷,所以需要保存的數(shù)據(jù)應(yīng)先放到SDRAM中去,待一次測量完成之后再寫至Flash。
USB控制器CH375的制造商提供了U盤讀寫的庫文件,只需要外部定義讀寫CH375硬件的函數(shù)和將中斷服務(wù)程序配置到相應(yīng)的中斷,就可以實現(xiàn)對U盤FAT文件系統(tǒng)的操作。
4.3 編譯與調(diào)試
設(shè)計采用的軟件開發(fā)環(huán)境是ARM公司的ADS1.2,編譯C語言程序時可能會產(chǎn)生用于Semihost通信的代碼,其中包含軟中斷SWI指令,但設(shè)計中并未包含SWI異常處理的程序,編譯器也沒有相應(yīng)的編譯選項去掉Semihost功能,一旦遇到SWI指令便會進(jìn)入軟中斷異常。因此可以反匯編機(jī)器碼,找到對應(yīng)的函數(shù)將其重定義即可。
5 結(jié)束語
嵌入式系統(tǒng)的特點就在于其應(yīng)用的針對性很強(qiáng),設(shè)計充分的利用了ARM7處理器的性能和資源,根據(jù)特定應(yīng)用目標(biāo)構(gòu)建整個軟硬件平臺,實現(xiàn)了高性能、低功耗的目標(biāo)。該系統(tǒng)已成功的用于軌道檢測儀樣機(jī),對其他基于ARM處理器的嵌入式系統(tǒng)的開發(fā)設(shè)計具有很好的參考意義。www.51kaifa.com/
本文作者創(chuàng)新點:傳統(tǒng)的測試儀器多以單片機(jī)為核心,但是單片機(jī)速度較慢,資源較少,在許多應(yīng)用環(huán)境中必須對其進(jìn)行擴(kuò)展,因此不利于降低系統(tǒng)功耗和提高集成度。將ARM7處理器應(yīng)用到軌道檢測儀的設(shè)計是新的信息處理技術(shù)與傳統(tǒng)應(yīng)用的一次創(chuàng)新結(jié)合,ARM7嵌入式平臺在提升系統(tǒng)性能和集成度的同時也改變了以往的系統(tǒng)設(shè)計方法,尤其是ARM處理器特有的中斷機(jī)制可以使實時數(shù)據(jù)的采集和處理實現(xiàn)起來更加方便和可靠。此外,高效率的供電系統(tǒng)也是本文的亮點。
參考文獻(xiàn)
[1] S3C44B0X Datasheet [Z]. Samsung. Co. Ltd. , 2003.
[2] 張俊濤,王長安. 12bA/D轉(zhuǎn)換器MAX197及其應(yīng)用[J]. 現(xiàn)代電子技術(shù) , 2004,(19) .
[3] 李新龍, 翟宏范, 狄國偉, 王鑫. USB芯片CH375在電能測量儀系統(tǒng)中的應(yīng)用[J]. 微計算機(jī)信息 , 2006,(26).
[4] 杜春雷. ARM體系結(jié)構(gòu)與編程 [M]. 北京: 清華大學(xué)出版社, 2003.
[5] 季振華. 基于ARM7TDMI內(nèi)核的S3C44B0異常處理分析[J]. 微計算機(jī)信息 , 2006,(05).