国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于嵌入式ARM-Linux無線ZigBee協(xié)調器驅動設計

2011-05-14 11:58:18史智興崔哲偉
關鍵詞:內核串口田間

李 婧,史智興,崔哲偉,賈 方

(河北農(nóng)業(yè)大學 信息科學與技術學院,河北 保定 071001)

農(nóng)田中大范圍的環(huán)境信息監(jiān)測已成為網(wǎng)絡應用范圍重點之一。針對農(nóng)田布線不便的特點,ZigBee無線節(jié)點網(wǎng)絡成為農(nóng)田信息采集系統(tǒng)的首選,可對其所分布區(qū)域內的各種環(huán)境和檢測對象的信息進行實時的監(jiān)控[1]。然而,控制下層整個網(wǎng)絡狀態(tài)的核心是上位機ARM處理器,而且上位機與下位機通信大多以串口模式來實現(xiàn)[2-3]。但串口通信模式存在串口傳輸速率低 (波特率雙方一致)、傳送距離短[4]、數(shù)據(jù)冗余差(數(shù)據(jù)校驗)以及設計串口協(xié)議繁瑣(幀格式)等不足。因此本文研究了ZigBee在ARM9內核中的協(xié)調器字符驅動,利用I/O傳輸數(shù)據(jù),控制具有協(xié)調器驅動的設備在農(nóng)田任何位置即可組網(wǎng),以減少協(xié)調器的布局,實現(xiàn)方便快捷的動態(tài)數(shù)據(jù)監(jiān)測。

1 田間監(jiān)測系統(tǒng)的要求

因監(jiān)測節(jié)點需要零散分布在田間,以監(jiān)測田間的空氣和地表的溫度,因此,田間監(jiān)測系統(tǒng)所需要的技術指標應滿足:(1)低功耗。田間采電受到布線限制,因此節(jié)點模塊的耗電量應盡可能低。(2)低成本。田間需要大量布局節(jié)點,投資成本成為廣泛實施的制約因素。(3)低復雜度和高可靠性。田間節(jié)點開發(fā)設備應采用結構簡單、采集數(shù)據(jù)盡可能精確又廉價的設計。綜合上述特點,ZigBee可以作為田間無線協(xié)議首選。

ZigBee協(xié)議是基于IEEE802.15.4標準的低功耗、低速率、低復雜度的雙向通信技術。它可工作在國際上免授權的2.4 GHz,具有250 Kb/s的最高數(shù)據(jù)傳輸速率和10~75 m的可靠傳輸距離。ZigBee支持星型、樹型、對等和混合型網(wǎng)絡拓撲結構,網(wǎng)絡中的從設備高達254個。根據(jù)如圖1所示的節(jié)點在網(wǎng)絡分布的特點,節(jié)點在網(wǎng)絡中可實現(xiàn)多條數(shù)據(jù)鏈路通信,以選擇最佳的路徑進行傳輸,提高了網(wǎng)絡通信的可靠性。

協(xié)調器是整個網(wǎng)絡的核心部分,負責完成整個網(wǎng)絡的無線接入和組建,是維持路由器和終端節(jié)點之間的數(shù)據(jù)通信的關鍵。在田間固定放置協(xié)調器節(jié)點會浪費大量的資源,若動態(tài)地測量田間任意位置的數(shù)據(jù),把協(xié)調器作為移動設備動態(tài)地測量數(shù)據(jù)則是最好的選擇,并且可以減少田間協(xié)調器的放置,降低設計難度的成本。

圖1 網(wǎng)絡節(jié)點分布圖

2 嵌入式Linux驅動開發(fā)環(huán)境的搭建

Linux操作系統(tǒng)環(huán)境的搭建如圖2所示。

圖2 Linux環(huán)境搭建

2.1 Bootloader的移植

Bootloader是操作系統(tǒng)內核運行之前運行的一小段程序,它為加載內核提供合適的硬件環(huán)境。Bootloader分成Stage1和Stage2兩個階段,具體實現(xiàn)框圖如圖3所示。

圖3 bootloader實現(xiàn)原理圖

Stage1:主要由匯編實現(xiàn),包括GPIO驅動、使開發(fā)板上電LED閃爍、關閉所有中斷、設置系統(tǒng)時鐘、關閉看門狗、SDRAM初始化、實現(xiàn)相應驅動 (提供更大的執(zhí)行空間)、NAND Flash初始化(驅動開發(fā)板上唯一的固態(tài)存儲掉電不消失設備)以及設置SP棧指針為Stage2中的C語言代碼執(zhí)行做好準備。

Stage2:實現(xiàn)加電自搬移過程、串口調試信息、函數(shù)庫、shell命令等擴展功能。

2.2 內核的編譯和移植

本硬件移植2.6.27版本的Linux內核:(1)解壓縮tar xf linux-2.6.27.tar.bz2,進入該目錄。(2)移植平臺為ARM體系結構,修改Makefile中的ARCH?=arm CORSS_COMPILE?=arm-linux-(交叉編譯器的前綴)。(3)配置內核:make deconfig(清除原來編譯的config,如果是第一次配置可省略);make menuconfig進入配置菜單,選擇硬件所需的驅動。大部分可選擇默認選項,但注意網(wǎng)卡驅動一定必選,硬件類型也要匹配。(4)編譯內核make bzImage在~/linux-2.6.27/arch/arm/boot/bzImage生成內核映像,通過tftp把bzImage燒到地址為0x30008000內存上,然后用nand erase kernel擦除kernel分區(qū)上的數(shù)據(jù),最后用nand write 0x30008000把內存上的數(shù)據(jù)燒到Flash對應的kernel分區(qū)上。

2.3 根文件系統(tǒng)的移植

運行Linux操作系統(tǒng),除了內核外還需要根文件系統(tǒng)。用mkdir創(chuàng)建rootfs文件夾,在其中創(chuàng)建根文件系統(tǒng)目錄并安裝busybox。busybox是專門為嵌入式系統(tǒng)設計的,它把大多數(shù)常用的命令(如 ls,cp,cd,tar 等)拼 接在一起,在根文件系統(tǒng)中只有一個可執(zhí)行文件/bin/busybox,其余都是 busybox的鏈接。安裝 busybox與安裝內 核 類 似, 在 ~$tar xf busybox-1.9.1.tar.bz2、cd busybox-1.9.1/下修改 ARCH?=arm CROSS_COMPILE?=arm-linux-;make defconfig、make menuconfig設置 busybox安裝路徑 rootfs文件夾。 將 make、make install、busybox文件與一系列鏈接文件安裝在rootfs下。其他鏈接文件在/bin、/sbin、/usr/bin、/usr/sbin 中,配置 Linuxrc啟動文件、安裝glibc共享庫,在/dev目錄下創(chuàng)建設備文件,將主機系統(tǒng)時鐘拷貝到根文件系統(tǒng)中去,并配置網(wǎng)路和http相關配置文件。最后將文件系統(tǒng)配置成YAFFS文件系統(tǒng),可直接對文件系統(tǒng)進行讀寫。設置開發(fā)板為NFS方式,啟用可以直接在主機上操作開發(fā)板的根文件系統(tǒng)并進行調試。

3 硬件設計及驅動實現(xiàn)

3.1 系統(tǒng)硬件設計

本系統(tǒng)平臺是采用ARM體系結構的S3C2410作為處理器,通過移植的字符設備驅動與ZigBee CC2430無線收發(fā)節(jié)點進行數(shù)據(jù)的傳輸。系統(tǒng)硬件框架圖如圖4所示。

圖4 系統(tǒng)硬件框架圖

CC2430是一個真正的片上系統(tǒng)(SoC),以高性能和低功耗的8051為內核,專門針對IEEE802.15.4和 ZigBee應用,它可以用很低的費用構成ZigBee節(jié)點。

現(xiàn)有的硬件是通過串口實現(xiàn)數(shù)據(jù)傳輸,數(shù)據(jù)傳輸?shù)母袷揭凑沾谕ㄐ艆f(xié)議的格式封裝,大量數(shù)據(jù)的傳輸還需要在串口通信格式的基礎上再進行設計封裝,不僅數(shù)據(jù)傳輸速度慢,而且容錯能力低。如果在內核中加入ZigBee的字符驅動則可省去數(shù)據(jù)發(fā)送時的封裝以及接收時需要解析的麻煩。

3.2 Linux設備驅動實現(xiàn)

Linux的輸入輸出設備分為字符設備、塊設備和網(wǎng)絡設備三類。字符設備是發(fā)送和接收都按照字符方式進行。塊設備則是傳輸固定大小的數(shù)據(jù)給設備。網(wǎng)絡設備則是通過BSD套接口訪問設備。驅動程序一般以模塊方式編寫,加載和卸載主要由 module_init()和module_exit()完成[2]。

(1)模塊加載和卸載

模塊需要入口函數(shù)module_init(zigbee_init)的實現(xiàn)代碼如下:

在不同的系統(tǒng)中,同一設備的設備號不盡相同,如果靜態(tài)設置設備號,則在換另外的平臺時,設備號有可能沖突,所以動態(tài)分配是最佳選擇。

(2)模塊驅動實現(xiàn)

注冊設備編號后要將設備驅動與之連接,因此必須用file_operation結構建立鏈接,并建立中斷通知相關數(shù)據(jù)。其實現(xiàn)代碼如下:

當上層應用調用驅動程序時,驅動程序需要完成以下功能:

①初始化設備。S3C2410與下層ZigBee CC2430連接管腳處于工作狀態(tài),注冊并使能中斷。

②按照ZigBee協(xié)議規(guī)則構建數(shù)據(jù)包并發(fā)送給CC2430,實現(xiàn)不同控制命令,使芯片完成數(shù)據(jù)發(fā)送和狀態(tài)間的轉換。

③當下位機接收到的數(shù)據(jù)與協(xié)議包格式不符時,產(chǎn)生中斷,用戶須重新發(fā)送數(shù)據(jù)。

其實現(xiàn)代碼如下:

用戶發(fā)送數(shù)據(jù)通過ssize_t zigbee_write(struct file*filp,const char__usr*buf, ssize_t count,loff_t*f_ops)傳到內核空間,然后調用構建數(shù)據(jù)包函數(shù)把數(shù)據(jù)打包發(fā)送出去。

用戶控制下層命令,實現(xiàn)代碼如下:

除實現(xiàn)以上函數(shù)外,還需要實現(xiàn)zigbee_relese(struct inode*inode,struct file*filp),釋放程序運行中所有資源。

本文通過上位機處理器ARM9CS3C2410,設計了ZigBee內核字符驅動,輕松地實現(xiàn)了對下位機的控制,也方便了用戶的上層開發(fā),提供了用戶與下位機數(shù)據(jù)傳輸?shù)慕涌?,避免了用串口進行數(shù)據(jù)傳輸時程序設計的繁瑣性。由于篇幅限制本文沒給出控制下層模塊命令的具體實現(xiàn)代碼。希望通過本文能促進ZigBee協(xié)調器驅動的進一步實現(xiàn)和研究。

[1]楊帆,廖桂平,李錦衛(wèi),等.無線傳感器網(wǎng)絡在農(nóng)田環(huán)境信息監(jiān)測中的應用[J].農(nóng)業(yè)網(wǎng)絡信息,2008(3):20-23.

[2]甘勇,王華,常亞軍,等.基于 ARM平臺的 ZigBee網(wǎng)關設計[J].通信技術,2009,42(1):199-201.

[3]魏守包,唐慧強.基于嵌入式 ARM-uClinux的 ZigBee網(wǎng)絡設計[J].儀表技術與傳感器,2009(1):62-64.

[4]包長春,石瑞珍,馬玉泉.基于ZigBee技術的農(nóng)業(yè)設施測控系統(tǒng)的設計[J].農(nóng)業(yè)工程學報,2007,23(8):160~163.

猜你喜歡
內核串口田間
春日田間
科教新報(2023年13期)2023-08-15 10:18:52
萬物皆可IP的時代,我們當夯實的IP內核是什么?
田間地頭“惠”果農(nóng)
強化『高新』內核 打造農(nóng)業(yè)『硅谷』
“碼”上辦理“田間一件事”
淺談AB PLC串口跟RFID傳感器的通訊應用
田間地頭有了“新綠”
金橋(2020年9期)2020-10-27 01:59:34
基于嵌入式Linux內核的自恢復設計
Linux內核mmap保護機制研究
USB接口的多串口數(shù)據(jù)并行接收方法探索
长治县| 旺苍县| 牡丹江市| 平顺县| 维西| 察雅县| 龙陵县| 泰宁县| 甘肃省| 宁化县| 宁南县| 和龙市| 自贡市| 博客| 新和县| 栾城县| 巴彦淖尔市| 根河市| 渑池县| 黄平县| 嘉黎县| 乌恰县| 南岸区| 广安市| 贵港市| 炎陵县| 绩溪县| 陇川县| 磐石市| 龙州县| 多伦县| 永丰县| 馆陶县| 双桥区| 泽库县| 湘潭县| 雷山县| 南木林县| 金溪县| 乌拉特前旗| 定兴县|