基于ARM的電磁流量計設(shè)計
軟件子系統(tǒng)由引導(dǎo)加載程序(Boot Loader)、嵌入式Linux操作系統(tǒng)和應(yīng)用軟件組成。嵌入式Linux的啟動需要引導(dǎo)加載程序來輔助完成,Linux、內(nèi)核主要由進(jìn)程管理、內(nèi)存管理、文件系統(tǒng)管理、設(shè)備控制及網(wǎng)絡(luò)協(xié)議等幾個部分,為應(yīng)用軟件提供了運行環(huán)境。圖中的硬件設(shè)備控制提供了硬件平臺中相關(guān)的設(shè)備驅(qū)動程序,實現(xiàn)了操作系統(tǒng)與硬件之間的信息交互和控制,而系統(tǒng)函數(shù)調(diào)用為Linux內(nèi)核和應(yīng)用軟件之間的信息交互提供了接口。本文引用地址:http://m.butianyuan.cn/article/151056.htm
2 硬件系統(tǒng)設(shè)計
基于低頻三值矩形波勵磁的電磁流量計的硬件結(jié)構(gòu)圖如圖2所示。其中,CPU核心模塊是系統(tǒng)軟件的運行基礎(chǔ),F(xiàn)LASH存儲器用于存儲可執(zhí)行程序的二進(jìn)制映像文件,供系統(tǒng)啟動時加載到SDRAM內(nèi)存空間運行;由于硬件系統(tǒng)的復(fù)雜性,調(diào)試模塊加強了硬件系統(tǒng)的調(diào)試功能;流量傳感器由一對勵磁線圈和一對對稱分布的檢測電極構(gòu)成。
ARM9處理器通過與其相連的D/A芯片產(chǎn)生低頻三值矩形波,勵磁線圈接受該低頻三值矩形波經(jīng)功率放大后的勵磁信號而產(chǎn)生感應(yīng)磁場,在電極上產(chǎn)生因流體切割磁力線而產(chǎn)生的感應(yīng)電動勢(即測量信號),并將之送人信號輸入模塊進(jìn)行處理,信號輸入模塊對流量傳感器輸入的信號進(jìn)行放大、濾波及A/D采樣后輸入ARM9處理器。系統(tǒng)由TFT液晶顯示屏提供人性化的菜單顯示操作界面,結(jié)合鍵盤進(jìn)行人機(jī)交互;同時具有以太網(wǎng)、USB和RS 232通信接口可輸出瞬時流量、累積流量和系統(tǒng)參數(shù)。
3 軟件系統(tǒng)設(shè)計
一個嵌入式Linux系統(tǒng)從軟件的角度來看,通??梢苑譃樗膫€層次,如圖3所示。
引導(dǎo)加載程序:包括固化在固件中的Boot代碼(可選),和Boot Loader兩大部分。
Linux內(nèi)核:特定于嵌入式硬件平臺的定制內(nèi)核以及內(nèi)核的啟動參數(shù)。
文件系統(tǒng):包括根文件系統(tǒng)和建立于FLASH內(nèi)存設(shè)備之上文件系統(tǒng),通常采用ramdisk作為根文件系統(tǒng)。
用戶應(yīng)用程序:特定于用戶的應(yīng)用程序。有時在用戶應(yīng)用程序和內(nèi)核層之間可能還會包括一個嵌入式圖形用戶界面。
其中,引導(dǎo)加載程序是嵌入式系統(tǒng)軟件開發(fā)的第一個環(huán)節(jié),它是操作系統(tǒng)和硬件的樞紐,為操作系統(tǒng)內(nèi)核的啟動提供了必要的條件和參數(shù);引導(dǎo)加載程序的工作是初始化內(nèi)存以及必要的硬件設(shè)備,調(diào)用內(nèi)核加載器。從FLASH中加載操作系統(tǒng)映像到SDRAM中,并把控制權(quán)交給Li-nux;由Linux對硬件系統(tǒng)做進(jìn)一步的初始化并控制應(yīng)用程序。
基于系統(tǒng)軟件結(jié)構(gòu),在系統(tǒng)的啟動過程中有3個主要軟件組件參與其中:引導(dǎo)加載程序、Linux內(nèi)核和Init進(jìn)程。其啟動過程如下:
(1)系統(tǒng)在上電或Reset之后,AT91RM9200開始執(zhí)行存放在NOR FLASH(系統(tǒng)將0x10000000映射到0x00000000,即ARM的復(fù)位向量)中的引導(dǎo)加載程序。
(2)引導(dǎo)加載程序初始化CPU和內(nèi)存控制器,對系統(tǒng)外設(shè)做最小程度的初始化,如初始化LED和串口等,檢測內(nèi)存并匯報啟動中的診斷信息,然后將Linux內(nèi)核映像解壓到SDRAM中的某個位置并跳轉(zhuǎn)到這個地址,把控制權(quán)交給Linux內(nèi)核。
(3)Linux的內(nèi)核接管執(zhí)行權(quán)后完成一系列的系統(tǒng)初始化和設(shè)置,包括設(shè)置中斷向量,啟動內(nèi)存管理,初始化各個硬件設(shè)備,初始化網(wǎng)絡(luò)協(xié)議等,最后建立根文件系統(tǒng)并生成系統(tǒng)進(jìn)程之父Init進(jìn)程。
(4)Init進(jìn)程負(fù)責(zé)啟動所有必要的服務(wù)和用戶應(yīng)用程序,并進(jìn)入嵌入式系統(tǒng)的工作狀態(tài)。
評論