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