基于IPv6和ARM9的地震烈度計開發(fā)
嵌入式系統(tǒng)采用三星公司基于ARM微處理器的S3C2410X。S3C2410X采用6層板設(shè)計,使用ARM920T內(nèi)核,內(nèi)部帶有全性能的MMU(內(nèi)存處理單元),具有高性能、低功耗、接口豐富和體積小等優(yōu)良特性。在盡可能小的板面上集成了64 MB SDRAM、64 MB NAND FLASH,1 MB BOOT FLASH,RJ 45網(wǎng)卡,USB Host,標(biāo)準(zhǔn)串口,SD卡插座等??杉汕度胧綗o線局域網(wǎng)設(shè)備,實現(xiàn)數(shù)據(jù)采集和無線傳輸。
2.4 定位模塊
選用的GPS模塊,接收特性:16通道,L1,C/A碼;自帶陶瓷天線;啟動時間:冷啟動45 s、溫啟動38 s、熱啟動2~8 s;精度2.5 m CEP;再捕獲1 s,1PPS;刷新頻率:4 Hz;內(nèi)置LNA;速度4 g。
2.5 通訊部件
考慮到地震行業(yè)地震觀測的實際需要,采用了符合IEEE802.11b的無線網(wǎng)卡和通信距離達到1.2km的無線AP構(gòu)成通信鏈路,作為SI一2型地震烈度計的無線通訊單元。
2.6 電源模塊
選用可充電的鋰電池組作為供電電源,便于長期重復(fù)使用。電池組容量為60 Ah。
3 系統(tǒng)功能實現(xiàn)
ARM嵌入式系統(tǒng)自帶的操作系統(tǒng)一般是Linux2.4內(nèi)核的,為支持IPv6須將操作系統(tǒng)的內(nèi)核進行重新編譯,升級為2.6版本內(nèi)核。但Linux 2.6內(nèi)核重編譯是一個比較復(fù)雜的過程,具體步驟如下:
3.1.1 建立交叉編譯環(huán)境
在RedHat9的主機上進行內(nèi)核移植開發(fā),首先需要建立交叉編譯環(huán)境。由于2.6內(nèi)核中采用了一些新的特性和指令,需要采用較新的工具集。采用binutils一2.15,gcc一3.4.2,glibc一2.2.5,linux一2.6.8,glibc—linuxthreads-2.2.5來建立交叉編譯工具鏈,建立之后將工具鏈路徑加入系統(tǒng)路徑MYMPATH中。
3.1.2 內(nèi)核修改
Linux 2.6.11.7內(nèi)核加入了對S3C2410芯片的支持,不再需要任何補丁文件。修改內(nèi)核源碼中Makefile的交叉編譯選項ARCH=arm,CROSS COMPILE=arm—linux一。針對硬件配置,需要在arch/arm/mach—s3c2410/devs.c或者smdk2410.c中添加FLASH的分區(qū)信息s3c nand info。然后在s3c device nand中增加.dev={.platform data=s3c nand info},在arch/arm/mach—s3c2410/mach—smdk2410.c中的initdata部分增加s3c device nand,使內(nèi)核在啟動時初始化NAND FLASH信息。
3.1.3 內(nèi)核編譯加載
由于2.6內(nèi)核會根據(jù)本地系統(tǒng)配置進行初始設(shè)置,可以導(dǎo)入內(nèi)核源碼默認(rèn)S3C2410的配置文件,方便加載內(nèi)核基本配置,然后再選擇所需選項。對MTD配置選擇支持MTD設(shè)備驅(qū)動以及NAND FLASH驅(qū)動;選擇支持要用到的各類文件系統(tǒng)(DEVFS,TMPFS,CRAMFS,YAFFS,EXT2,NFS)以及網(wǎng)絡(luò)設(shè)備和協(xié)議,本傳感器系統(tǒng)加載了網(wǎng)絡(luò)芯片CS8900以及USB支持;在H.264多媒體系統(tǒng)中還需要加載Frame buff—er以支持LCD顯示功能。使用交叉編譯工具編譯內(nèi)核源碼后,會在arch/arm/1boot/下生成名為zImage的內(nèi)核映像,在Boot loader的命令提示模式下使用下載命令完成內(nèi)核加載到開發(fā)板的存儲設(shè)備FLASH中。
3.1.4 文件系統(tǒng)定制
Linux采用文件系統(tǒng)來組織系統(tǒng)中的文件和設(shè)備,為設(shè)備和用戶程序提供統(tǒng)一接口。Linux支持多種文件系統(tǒng),本系統(tǒng)使用CRAMFS格式的只讀根文件系統(tǒng),而將FLASH中的USER區(qū)使用支持可讀寫的YAFFS文件系統(tǒng)格式,方便添加自己的應(yīng)用程序。
3.2 地震烈度計主要硬件設(shè)備驅(qū)動
3.2.1 網(wǎng)絡(luò)設(shè)備驅(qū)動
系統(tǒng)中采用CS8900A的lO Mb/s網(wǎng)絡(luò)芯片,它使用S3C2410的nGCS3和IRQ_EINT9,相應(yīng)修改linux/arch/arm/mach—s3c2410/irq.c,并在roach—smdk24.10.c的smdk2410_iodesc[]中增加{SMDK2410_ETH_IO,S3C2410_CS2,SZ_1M,MT_DEVICE},內(nèi)核源碼中加入芯片的驅(qū)動程序drivers/net/arm/cs8900.h和cs8900.c,并且配置網(wǎng)絡(luò)設(shè)備驅(qū)動的Makefile和Kcon—fig文件,加入CS8900A的配置選項,這樣可以在內(nèi)核編譯時加載網(wǎng)絡(luò)設(shè)備的驅(qū)動。
3.2.2 無線網(wǎng)卡驅(qū)動程序
從網(wǎng)上下載rt2x00的IPv4環(huán)境下的驅(qū)動程序,并針對該程序進行IPv6化改造,對其驅(qū)動程序進行修改,在系統(tǒng)重編譯的時候,將驅(qū)動程序加入到系統(tǒng)的內(nèi)核中。將無線網(wǎng)卡的驅(qū)動程序作為一個模塊打包到操作系統(tǒng)中,可避免系統(tǒng)掉電后每次都要重裝無線網(wǎng)卡驅(qū)動程序。
3.3 地震烈度計終端的軟件設(shè)計
通訊傳輸軟件主要負(fù)責(zé)完成傳感器與業(yè)務(wù)服務(wù)系統(tǒng)之間的IPv6數(shù)據(jù)通信,軟件功能如下:
(1)傳感器在成功接入到IPv6傳感器網(wǎng)絡(luò)后主動.向業(yè)務(wù)服務(wù)器發(fā)送傳感器上線通知;
(2)傳感器在成功上線后每隔30 s主動采集烈度傳感器的烈度值并上報給業(yè)務(wù)服務(wù)器;
(3)進行GPS時間校準(zhǔn);
(4)進行GPS定位(每隔8 min重新定位一次并上報定位數(shù)據(jù));
(5)業(yè)務(wù)服務(wù)器每隔10 min請求一次傳感器配置參數(shù);
(6)響應(yīng)業(yè)務(wù)服務(wù)器的配置參數(shù)請求、數(shù)據(jù)請求、歷史數(shù)據(jù)請求、是否在線響應(yīng)。
通訊軟件包括:GPS數(shù)據(jù)處理子程序,A/D數(shù)據(jù)采集子程序,通訊子程序和傳感器配置文件。對于不同的傳感器,需要修改配置文件中的傳感器IP、傳感器ID和傳感器序列號。傳感器終端軟件結(jié)構(gòu)見圖2。
評論