傳統的醫療電子設備并不具備無線功能,不能實現隨時隨地的醫療監控.文中提出一個基于IPV6的用于醫療電子無線網絡的路由協議,并基于國產CK610CPU和TI公司的CC2520射頻芯片實現了基本無線通信,并在PC上通過圖形界面顯示出醫療檢驗結果.
0引言
醫療電子領域中,在嵌入式處理器方面,目前使用最廣泛和主流的象ARM.MIPS都是國外廠商生產的CPU,而國內的具有自主知識產權的CPU卻很少被人注意.
此外,隨著無線技術的進步和無線設備成本的降低,醫療電子無線化必將是未來發展的趨勢.目前已經有一些企業和團體在醫療電子無線化的方向上作出了研究和開發,但是目前的無線醫療電子使用的網絡協議基本都是基于IPV4的,將更加先進的IPV6網絡運用到無線醫療電子是未來發展必須面臨的問題.
本文主要為醫療電子設計了一個基于IPV6的網絡協議,為實現該協議編寫了路由協議程序和射頻適配程序,實現了醫療電子的無線功能.
1系統概述
主要系統架構如圖1所示:單個節點由CK610開發板與醫療電子板和CC2520射頻芯片組成,控制器為普通節點與PC相連接.Linux用作CK610的操作系統,CK610通過操作FPGAIP核模擬的SPI來控制CC2520,CC2591由CC2520的管腳控制.
在整個醫療電子應用的網絡系統中,可以有多個節點,但是只有一個控制器.所有節點數據發送的終點是控制器,距離較遠的節點可以通過其他節點轉發來傳輸數據.
2網絡協議設計
為了實現圖1的系統架構,需要為系統設計一個基于IPV6的網絡協議.
2.1路由算法設計
建立和維護無線網絡,必須要發送和處理三種形式的數據包,分別是路由請求包.路由廣播包和路由匯報包.
網絡中的每個節點都維護一個路由表,路由表的每項都是與本節點相鄰的節點.一個典型節點路由表內容如表1所示.(點擊可查看大圖)
每個節點會對路由表中的每項根據總鏈路代價進行排序,總鏈路代價最小的對應的節點會被選為默認路由,只要節點有數據要發送或者轉發,都會將數據發往默認路由.
總鏈路代價表示的是這條鏈路信道的質量,該值越小越好,它是本地鏈路代價和前驅節點鏈路代價兩者之和.前驅節點鏈路代價是從本節點定期發送的路由廣播包中獲取的.如果前驅節點是控制器,那么前驅節點鏈路代價是0.本地鏈路代價指的是自身節點同前驅節點之間信道的鏈路代價,表示的是通信信道質量,該值越小越好.為了計算本地鏈路代價,必須要維護長期發送數據包總數LT.長期發送數據包成功數LS.近期發送數據包總數ST和近期發送數據包成功數SS這四個數據.
ST和SS從零開始計數,節點每發送一次數據(包括重傳),近期發送數據包總數ST就會加1,而近期發送數據包成功數SS則是每成功發送一次數據就加1.這兩個值會在RTIMER定時器到期之時更新完長期發送數據包總數LT和長期發送數據包成功數LS之后清零.長期發送數據包總數LT和長期發送數據包成功數LS在RTIMER定時器到期之時更新,更新的規則是將當前長期發送數據包總數LT加上近期發送數據包總數ST作為新的長期發送數據包總數LT,將長期發送數據包成功數LS加上近期發送數據包成功數SS作為新的長期發送數據包成功數LS,如果此時長期發送數據包總數LT大于0XF000,那么將長期發送數據包總數LT和長期發送數據包成功數LS右移一位.這樣做有兩個好處:
(1)避免長期發送數據包總數LT和長期發送數據包成功數LS無限增大到無法存儲.
(2)離當前時間越遠的統計值對計算鏈路代價的影響越小,符合自然規律.
本地鏈路代價的計算公式如下:
節點會在收到鄰居節點的路由廣播包和RTIMER定時器到期的時候更新路由表鏈路代價信息.
2.2網絡節點的加入
當節點1要加入網絡中時首先要發送一個路由請求包,申請加入無線網絡.控制器接收到這個請求之后,向節點1發送一個路由廣播包.節點1接收到該路由廣播包之后,將網絡地址前綴加上自己的節點ID組成自己的網絡地址,并且將控制器加入自己的路由表.此時節點1的默認路由是控制器.
同時,節點1會立即啟動TTIMER和RTIMER兩個定時器,當TTIMER到期時,節點1就會向控制器發送路由匯報包,控制器收到該包及時更新網絡拓撲.
而控制器的RTIMER到期之時,也會給節點1發送路由廣播,節點1立即更新路由表.
網絡運行的過程中,有新的節點要加入這個網絡,且該節點能夠直接同控制器通信,此時的情況比第一個節點加入網絡的情況復雜些.節點2啟動時,首先發送一個路由請求包,控制器和節點1接收到該包后會先后發送路由廣播包,節點2收到這些包之后修改自己的網絡地址,并且將控制器和節點1都加入自己的路由表中.當RTIMER定時器到期時,會發送路由匯報包給控制器,經過一段時間穩定之后,路由匯報包的內容應該包括節點1和控制器.
之后節點1的RTIMER定時器到期,發送路由廣播包,控制器和節點2都能收到,節點2更新其路由表,節點2的RTIMER定時器到期也會發送路由廣播包,此時節點1將節點2加入自己的路由表.
如果新加入的節點無法直接同控制器通信,即節點1已經存在于網絡中,節點2無法同控制器通信.節點2啟動的時候也會發送路由請求包,這個包只有節點1可以收到,于是節點1給節點2回復一個路由廣播包,節點2和控制器都可以收到.節點2收到這個包之后,會設置好自己的網絡地址,同時將節點1加入自己的路由表中.此時節點2的路由表只有節點1這一項,因此節點2的默認路由是節點1.節點2的TTIMER定時器到期時會向默認路由,即節點1發送路由匯報包,節點1收到路由匯報包之后將其轉發給控制器.節點1的RTIMER定時器到期,發送路由廣播包,節點2更新其路由表.
節點2的RTIMER定時器到期之時發送路由廣播包,節點1接收到該包之時更新路由表.
2.3網絡的維護與更新
網絡運行過程中,信道都是隨時變化的.為了使整個網絡工作正常,必須要及時更新網絡參數.
網絡的維護和更新是通過每個節點的RTIMER定時器實現的,每當該定時器到期,節點都會廣播路由廣播包,所有接收到該廣播包的節點都會更新自己的路由表信息,這樣整個網絡的信道信息得到了更新.
3軟件和硬件設計
3.1硬件結構
圖1中的硬件主要包括CK610開發板.CC2591和CK610為杭州中天微系統有限公司生產的CPU,主要特性有:八級流水線;雙發射超標量流水線技術,提升性能近50%;非阻塞指令發射.投機執行和按序退休;返回地址預測(4–entryreturnstack);哈佛結構數據/指令Cache和SPM,大小可配置;數據CacheWrite–back/Write–through動態可配置;內部雙通用數據總線;AHB/AXI總線接口,和可擴展的協處理器接口.
CC2520為TI公司生產的一款低功耗射頻芯片,主要特性有:發射功率可達到5dBm;數據傳輸速率最大可達250kbps;工作在2.4GHzISM頻段;4–線SPI;6個可配置
CC2591為TI公司生產的一款高性能低成本前端,適用于如ZigBee網絡等2.4GHz無線系統,可以改善RF性能.
CC2520與CC2591結合使用可以使得輸出功率范圍擴大到-24dBm~22dBm,接收靈敏度增加到-90dBm,傳輸距離可達到幾百米甚至上千米.
3.2網絡系統架構
為了實現在第3節中定義的網絡協議,需要在Linux之上編寫一個應用程序,該程序需要實現網絡協議中的規則.除此以外,還需要根據協議,選擇合適的路由,該程序稱為路由協議程序.此外,為了使IPV6運行在CC2520射頻芯片上,移植了6LoWPAN協議到Linux系統中,大大減小了包頭的字節,減少了能量消耗.
在用戶應用程序中,當有數據要發送時,Linux內核會查找內核路由表,找到下一跳的地址,然后將數據交給相應的設備以發送數據.系統所用的網絡設備是CC2520射頻芯片,但是Linux并沒用為CC2520開發對應的網絡驅動,因此可以虛擬一個網絡設備tun,將網絡層傳過來的數據都交給tun,讀取tun接口便能夠得到要發送的網絡數據.射頻適配層得到該數據之后,經過適配層6LoWPAN協議的壓縮之后,然后再通過SPI操作CC2520芯片發送數據.對應從底層來的數據,其處理過程跟上述方式類似.
3.3射頻適配程序的設計
當內核有數據要發送之時,要使用正確的方法驅動CC2520芯片無線發送出去,負責這部分內容的程序稱為射頻適配程序.
在實現過程中,使用CC2520芯片作為無線網絡收發設備.在Linux內核中,并無CC2520作為網絡設備的驅動.為了實現使用CC2520收發數據的功能,可以建立一個虛擬網絡設備tun.字符設備tun是內核空間和用戶空間的數據接口,內核將數據包發送到虛擬網絡設備上,數據包會被保存到設備的隊列中,此時用戶空間可以通過打開字符設備tun并調用read函數讀取其中的數據,此時數據傳遞到了用戶空間,程序可以對這些數據進行處理.
同樣,用戶空間程序可以通過write函數將收到的數據包交給內核.這樣就可以在上層有數據來的時候先經過6LoWPAN的處理壓縮,再通過驅動CC2520發送數據,在CC2520收到數據的時候,將數據經過6LoWPAN還原之后交給Linux內核,實現無線收發數據包的功能.
4系統測試
整個系統的工作流程為:醫療板首先采集醫療檢驗結果,將其傳遞給CK610開發板,開發板通過操作CC2520進行無線發送.而當CC2520接收到數據時,通過讀取CC2520SO管腳獲得收到的數據,通過UART輸出給PC,PC運行C#編寫的圖形界面將檢驗結果顯示出來,如圖2所示.
5結束語
本文主要提出了一種基于國產CPU的SOC醫療電子無線網絡的路由協議以及整個平臺的軟件架構和射頻適配程序,并實現了醫療電子板的點對點無線通信,實驗結果證明,系統運行正常,達到預期效果.在后期工作中,將加入更多節點來驗證系統性能.
(審核編輯: 智匯李)
分享