嵌入式網(wǎng)絡(luò)監(jiān)控系統(tǒng)的研究
摘要:無(wú)線數(shù)據(jù)傳輸現(xiàn)在廣泛地運(yùn)用在各種控制領(lǐng)域。該系統(tǒng)中采用由無(wú)線收發(fā)芯片nRF401配合外圍電路的射頻模塊來(lái)完成數(shù)據(jù)的傳輸;通過對(duì)Bootloader硬件的初始化后,實(shí)現(xiàn)將μClinux裁減并移植到S3C44BO中,最后用嵌入式處理器程序來(lái)實(shí)現(xiàn)對(duì)傳輸數(shù)據(jù)的處理和存儲(chǔ)、網(wǎng)絡(luò)通信、外部控制等任務(wù)。經(jīng)過測(cè)試通信距離為80m,無(wú)線通信最高速率可達(dá)到20Kb/s。
關(guān)鍵詞:μClinux;無(wú)線數(shù)據(jù)傳輸;Bootloader;無(wú)線通信
0 引言
無(wú)線數(shù)據(jù)傳輸現(xiàn)在廣泛地運(yùn)用在車輛監(jiān)控、遙控、小型無(wú)線網(wǎng)絡(luò)、小型無(wú)線數(shù)據(jù)終端等領(lǐng)域中,無(wú)線數(shù)據(jù)傳輸主要由數(shù)據(jù)終端機(jī)、主機(jī)和主控制機(jī)組成,主控制機(jī)與主機(jī)間用串行口通信,主機(jī)和數(shù)據(jù)終端機(jī)之間通過射頻模塊進(jìn)行通信。
傳感器采集信號(hào)后傳給數(shù)據(jù)終端機(jī),終端機(jī)通過射頻模塊進(jìn)行無(wú)線數(shù)據(jù)傳輸,主控制機(jī)與數(shù)據(jù)終端的通信轉(zhuǎn)化為主控制機(jī)與主機(jī)串口(UA RT)間的通信以及數(shù)據(jù)終端通過無(wú)線數(shù)傳模塊和主機(jī)之間的數(shù)據(jù)傳輸,在此基礎(chǔ)上形成了無(wú)線分布式傳感/控制網(wǎng)絡(luò)(Wireless Distribution ed Sensor/Control Networks,WDSCN)的處理機(jī)的軟硬件系統(tǒng)搭建。無(wú)線數(shù)據(jù)傳輸?shù)奶幚硐到y(tǒng)采用嵌入式系統(tǒng)輔以適當(dāng)無(wú)線數(shù)傳模塊來(lái)實(shí)現(xiàn)。系統(tǒng)中用射頻模塊來(lái)完成數(shù)據(jù)的傳輸,用嵌入式系統(tǒng)來(lái)實(shí)現(xiàn)對(duì)傳輸數(shù)據(jù)的處理和存儲(chǔ)、網(wǎng)絡(luò)通信、外部控制等任務(wù)。
1 射頻模塊的設(shè)計(jì)
射頻模塊的主要功能由無(wú)線收發(fā)芯片nRF401配合外圍電路完成,該模塊內(nèi)部結(jié)構(gòu)分為發(fā)射電路、接收電路、模式和低功耗控制邏輯電路以及串行接口幾個(gè)部分組成。
發(fā)射電路有射頻功率放大器(PA)、鎖相環(huán)(PLL)、壓控振蕩器(VCO)、頻率合成器等?;鶞?zhǔn)振蕩器采用外接晶體振蕩器產(chǎn)生電路所需的基準(zhǔn)頻率,振蕩電路采用鎖相環(huán)方式,由在DDS基礎(chǔ)上的頻率合成器、外接的無(wú)源回路濾波器和壓控振蕩器組成,壓控振蕩器由片內(nèi)的振蕩電路和外接的LC諧振回路組成,要發(fā)射的數(shù)據(jù)通過DIN端輸入。
接收電路由低噪聲放大器(LNA)、混頻器、中頻放大器、GFSK解調(diào)器、濾波器等電路組成,中頻放大器的輸出信號(hào)經(jīng)過中頻濾波器后送入GFSK解調(diào)器解調(diào),解調(diào)后的數(shù)字信號(hào)在DOUT端輸出。
芯片內(nèi)包含有發(fā)射功率放大器、低噪聲接收放大器、晶體振蕩器、鎖相環(huán)、壓控振蕩器、混頻器等電路,工作頻率為ISM頻段433 MHz,采用FSK調(diào)制解調(diào)、晶體振蕩和PLL頻率合成技術(shù),接收靈敏度為-105 dBm,發(fā)射功率為10 dBm,待機(jī)狀態(tài)電流消耗僅10μA。在接收模式中,射頻輸入信號(hào)被低噪聲放大器放大,經(jīng)由混頻器變換,在送入解調(diào)器之前被放大和濾波,解調(diào)后的數(shù)字信號(hào)在DOUT端輸出。在發(fā)射模式中,壓控振蕩器的輸出信號(hào)是直接送入到功率放大器,DIN端輸入的數(shù)字信號(hào)被頻移鍵控后饋送到功率放大器輸出。射頻模塊的電路如圖1所示。
2 嵌入式系統(tǒng)
一般而言,嵌入式系統(tǒng)的構(gòu)架可以分為4個(gè)部分:處理器、存儲(chǔ)器、輸入/輸出(I/O)和軟件。嵌入式系統(tǒng)是軟件和硬件的綜合體,它是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟、硬件皆可以裁剪,從而能夠適應(yīng)于工業(yè)和服務(wù)領(lǐng)域?qū)嶋H應(yīng)用中。
由于μClinux在設(shè)計(jì)時(shí)就已經(jīng)充分考慮了可移植性,所以將μClinux移植到S3C44B0相對(duì)來(lái)說(shuō)是比較容易的。但要使μClinux正常運(yùn)行,處理器必須滿足以下要求:
(1)處理器的C編譯器能產(chǎn)生可重入代碼。
(2)用C語(yǔ)言就可以打開和關(guān)閉中斷。
(3)處理器支持中斷,并且能產(chǎn)生定時(shí)中斷(通常在10~100 Hz之間)。
(4)處理器支持能夠容納一定量數(shù)據(jù)(可能是幾千字節(jié))的硬件堆棧。
2.1 Bootloader的工作
Bootloader就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段程序,通過這段程序可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。因此,正確建立μClinux的移植的前提條件是具備一個(gè)與μClinux配套、易于使用的Bootloader。
硬件初始化。系統(tǒng)上電或復(fù)位后,程序從位于地址0x0的Reset Exception Vector處開始執(zhí)行,因此需要在這里放置Bootloader的第一條指令:b ResetHandler,跳轉(zhuǎn)到標(biāo)號(hào)為ResetHandler處進(jìn)行第一階段的硬件初始化,主要內(nèi)容為:關(guān)Watchdog Timer,關(guān)中斷,初始化PLL和時(shí)鐘,初始化存儲(chǔ)器控制器。比較重要的是PLL的輸出頻率要計(jì)算正確,ARMSYS中把它設(shè)置為64 MHz;這實(shí)際上就是處理器的工作主頻,這個(gè)時(shí)間參數(shù)在第二階段計(jì)算SDRAM的刷新計(jì)數(shù)值和UART的波特率等參數(shù)時(shí)還要用到。
建立二級(jí)異常中斷矢量表。異常中斷矢量表(Exception Vector Table)是Bootloader與μClinux內(nèi)核發(fā)生聯(lián)系關(guān)鍵的地方之一。即使μClinux內(nèi)核已經(jīng)得到處理器的控制權(quán)運(yùn)行,一旦發(fā)生中斷,處理器還是會(huì)自動(dòng)跳轉(zhuǎn)到從0x0地址開始的第一級(jí)異常中斷矢量表中的某個(gè)表項(xiàng)(依據(jù)于中斷類型)處讀取指令運(yùn)行。在編寫B(tài)ootloader時(shí),地址0x0處的一級(jí)異常中斷矢量表只需簡(jiǎn)單地包含向二級(jí)異常中斷矢量表的跳轉(zhuǎn)指令就可以。這樣,就能夠正確地將發(fā)生的事件交給μClinux的中斷處理程序來(lái)處理。對(duì)于μClinux內(nèi)核,它在RAM空間中基地址為0xC000000處建立了自己的二級(jí)異常中斷矢量表。
如果在Bootloader執(zhí)行的全過程中都不必響應(yīng)中斷,那么上面的設(shè)置已能滿足要求。在ARMSYS上提供了USB下載器,需要用到中斷,Boot loader必須在同樣的地址(0xC000000)處配置自己的二級(jí)異常中斷矢量表,以便同μClinux兼容。這張表事先存放在FLASH MEMORY里,引導(dǎo)過程中由Bootloader將其復(fù)制到RAM地址0x0C000000。
2.2 源代碼裁剪與移植
將μClinuX-dist-20040408.tar.gz拷貝到/home/下(或者其他目錄都可以),運(yùn)行解壓命令:tar xvzfμClinux-ARMSYS-20040801. tar.gz,解壓結(jié)束后會(huì)在/home/下生成μClinux-dist目錄。
評(píng)論