基於ARM和uC/OS的嵌入式SMI網路轉換器設計與應用

來源:互聯網
上載者:User
文章目錄
  • 基於ARM和uC/OS的嵌入式SMI網路轉換器設計與應用
基於ARM和uC/OS的嵌入式SMI網路轉換器設計與應用

2008-10-08      嵌入式線上      收藏 | 列印

   引言

       目前,隨著互連網和嵌入式系統的高度發展,越來越多的工業測控裝置已經將網路接入功能作為其預設配置,以實現裝置的遠程監控和資訊分散式處理。然而,大量工業現場裝置尚不具備網路介面。在IP113F光纖收發器監控系統的開發中,下位機通過單片機與光纖收發器的SMI進行通訊以實現監控,上下位機通過RS-232介面傳輸資料。南於串口傳輸距離短,工作人員每天都要到現場對資料進行檢查和診斷,不勝其煩。針對這種情況,有必要設計一個SMI到Internet的資料轉送模組,以便對光纖收發器的健全狀態作遠程監測。

    IP113F晶片簡介

      IP113F晶片是一款具有網管功能、超低功耗的光纖收發器,支援3.3V I/O,主要通過SMI(MDC,MDIO)對兩組獨立寄存器進行操作,以實現監控或重新設定本地或遠端光纖收發器的工作狀態。使用者可以通過串列管理介面來訪問寄存器,1所示。由於IP113F的地址是5位二進位碼,所以一個嵌入式管理單元最多可同時外掛32(25)個IP113F。資料在MDIO上是一位位傳輸的,是發生在MDC的上升沿跳變,MDIO上的資料通訊協定如表1所示。當SMI處於空閑狀態時,MDIO則處於高阻態,嵌入式管理單元在MDIO上發送32位連續的"1"和"01"訊號來初始化MDIO介面。

整體功能設計

      系統的準系統是32台光纖收發器同時通過同一個SMI網路轉換器與遠端上位機進行通訊,2所示。轉換器完成的具休工作是接收本地或遠端光纖收發器發送過來的測試資料,自動識別其長度和來源,將其轉化為網路資料格式,通過乙太網路發送到上位機,同時接收上位機通過乙太網路發送過來的控制資訊,並自動識別其發送的目標,再通過SMI口發送給相應的光纖收發器。根據實際需要,可以在上位機中通過乙太網路配置SMI網路轉換器的IP地址。

   硬體結構設計

      轉換器的硬體電路中選用基於ARM7核心的嵌入式處理器LPC2214晶片,用於進行整體控制。LPC2214晶片帶有256KB的高速FLASH,並帶有16K片內SRAM。為了滿足通訊過程中的資料緩衝和具備一定系統Runspace的要求,片外利用IS61LV25616AL擴充了512KB的SRAM。另外,通過IIC匯流排,片外擴充了256位元組的EEPROM,用於儲存已設定的IP地址。選用10M全雙工系統乙太網路控制器RTL8019AS晶片完成網路通訊功能,HR61101晶片充當網卡變壓器。採用通用I/O口,P0.5和P0.6類比SIM的通訊時序,對IP113F進行資料擷取。電路整體硬體電路3所示。

       LPC2214具有外部儲存空間介面,可以擴充4個Bank的儲存空間組(Bank0~Bank3),且Bank0~Bank3的片選訊號分別為CS0-CS3,本設計中,用Bank0擴充SRAM,Bank3擴充RTL8019AS模組。由於LPC2210晶片是一個8/16/32位的微處理器,可以接受16位元據位寬的讀寫。設計中將RTL8019AS晶片的16位I/O腳IOCS16B連到高電平,實現以16位操作模式讀寫控制寄存器的內容,與用單片機作為處理器的設計相比,系統運行效率提高。通過將RTL8019AS的65腳JP接高電平以選擇跳線工作方式,即RTL8019AS的I/O和中斷由跳線決定,不需外擴EEPROM 93C46晶片儲存資訊來控制RTL8019AS的I/O和中斷,減少了連線,提高了高頻電路的穩定性。RTL8019AS工作在跳線模式時,其基地址為0X300。由於RTL8019AS工作電源是5V,而LPC2210的I/O電壓是3.3V,因此在匯流排串連上串接470Ω的保護電阻。

系統軟體設計與實現

    引入RTOS

      光纖收發器資料擷取要求即時性比較高,若採用傳統的前後台設計方法,會過於複雜,且即時性不能保證。採用即時作業系統RTOS可以解決這個問題。μC/OS-II作業系統是一種原始碼公升的RTOS,具有代碼短小精悍、簡單易學的特點,對本設計來說是一個理想的選擇。

  TCP/IP協議的選擇與裁減

      為使SMI轉換器具有乙太網路接入功能,必須在ARM處理器中嵌入TCP/IP協議。參考開放系統互相連線模型(OSI)模型,在ARM中嵌入的TCP/IP協議採用簡化的四層模型,即鏈路層、網路層、傳輸層、應用程式層。根據實際需求,結合ARM微處理器的處理能力,設計中對完整的TCP/IP協議進行了全方位裁減。鏈路層由控制同一物理網路上不同機器間資料傳送的底層協議組成,RTL8019AS的驅動程式就是在該層實現的;在網路層,對於ARP包只響應ARP請求,取消了RARP,只維護最簡單的一個IP地址與MAC地址的映射Cache表,定時重新整理;對傳輸層,考慮到所設計的系統資料轉送安全性,設計中選用TCP協議;對應用程式層,裁剪掉HTTP協議,通過將控制介面設定在上位機上來代替其功能。

      通過上述裁剪,就得到一個適用的TCP/IP協議。把裁減後的TCP/IP協議嵌入到作業系統μC/OS-II中,並提供API介面函數供應用程式調用,使得ARM可以快速無衝突地收髮網絡TCP資料包,符合工業測控系統對即時性和可靠性的要求。

     關鍵問題的解決

      當SMI串口和乙太網路進行雙向通訊時,如果雙方的資料轉送率處於同步狀態,即接收方速率等於發送方速率,系統能夠即時地將資料進行轉寄。但大多數情況下,收發雙方的資料轉送速率並不一致,相對於乙太網路來說,串口是一個慢速連線,可能導致遺失資料。因此,在系統中必須定義迴圈隊列作為資料收發的緩衝區。在本系統中,定義了兩個1024位元組的迴圈隊列作為資料收發的緩衝區,一個是串口接收緩衝區,另一個是乙太網路接收緩衝區。乙太網路的接收是通過中斷觸發的,相對而言,串口和乙太網路的發送任務優先順序較低,接收的資料並不能立即轉寄出去,而是暫存在迴圈緩衝區中。4所示,Head和Tail分別指向隊列的頭部和尾部,當Head=Tail時表示隊列空,(Head+1)Mod 1024=Tail表示隊列己滿,空閑緩衝區的大小也可通過Head和Tail指標計算。

       收發器的串口通訊協定中通過加入本地/遠端和收發器號來辨別源地址和目的地址,對資料進行校正。由於轉換器IP地址主要採用上位機通過乙太網路進行設定,所以在乙太網路的資料幀中加入命令頭,以辨別設定的是IP資料還是與收發器通訊的資料。

軟體系統的實現

       本系統整個軟體設計由作業系統和一系列使用者應用程式構成。系統建立了一個啟動任務TaskStart(),主要負責系統硬體的初始化,包括時鐘的初始化和啟動、中斷的啟動、RTL8019AS的初始化與啟動等,並對各個應用任務進行了劃分。根據各任務的重要性和即時性,整個模組被分成6個具有不同優先順序的應用任務,即IP地址設定、接收協議轉換、發送協議轉換、NET發送、SMI發送、SMI採集。

   任務的執行

       任務劃分後,各任務便具有獨立的堆棧空間,彼此爭奪CPU的使用權。一旦獲得CPU的使用權,就會獨立運行,完成特定的功能。

        本系統採用ARM作為伺服器,PC端作為用戶端的TCP通訊模式,由上位機主動請求串連ARM。在串口和乙太網路建立通訊之前,首先要調用IP地址設定任務,對IP地址、子網路遮罩、網關和SMI口的通訊參數進行初始化設定。

        SMI口通訊實現的功能有SMI發送和SMI採集。SMI採集任務優先順序較低,進行多任務調度後若沒有相關事件發生,系統就一直運行SMI採集任務,若採集到本地或遠端IP113F的狀態發生變化,資料通過協議轉換後發送到遠端上位機。SMI發送作為一個單獨的任務獨立運行。SMI發送任務需要系統 調度器通知緩衝區中是否有待發送的資料。若沒有資料發送,則將該任務掛起,系統運行其他任務,5所示。

        乙太網路通訊模組由乙太網路資料收發和協議轉換構成。資料的接收在RTL8019的中斷服務程式中實現。乙太網路資料的發送、接收協議轉換及發送協議轉換分別作為獨立的任務運行。乙太網路資料的發送任務同樣需要系統調度器對緩衝區中是否有待發送的資料進行通知。協議轉換主要實現對接收資料報文的解析及給待發送資料添加協議前序,在編程時可以直接調用嵌入TCP/IP協議的API函數,對資料報文進行分層。

        任務間的同步與調度

       通常多任務作業系統的任務是一個無限迴圈,而且沒有傳回值。如果沒有更高優先順序的任務進入就緒態,當前任務不會放棄對CPU的使用權。為了實現作業系統的正常運行和有關事件的同步,必須正確處理任務間的通訊和事件標誌的設定。系統的功能結構6所示。

        系統進行多任務調度後,高優先順序任務由於申請某個資源而發生阻塞,進入掛起態,系統運行較低優先順序的SMI採集任務。每個事件分配一個訊號量,一旦事件發生就進入就緒態的任務。當接收中斷髮生時,啟動協議轉換任務,此過程通過訊號量的通訊機制實現。接收協議轉換任務先對來自上位機的資料解析,然後根據資料的命令頭髮往SMI發送隊列或EEPROM發送隊列,進而啟動相應的SMI發送任務或IP設定任務。發送協議轉換任務對SMI採集的資料進行協議轉換後,存入乙太網路發送隊列,然後通知NET發送任務,把資料發給上位機,從而保證任務與事件同步。

   結語

       本文所設計的SMI網路轉換器實現了上位機同時對本地/遠端32對光纖收發器進行監控的功能。設計中採用LPC2214晶片,克服了原先使用8位單片機處理器所帶來的資源短缺和處理能力有限等問題。軟體上,採用裁減所得的TCP/IP協議,極大地簡化了編程的複雜度,嵌入μC/OS作業系統使系統的即時性極大提高。系統健全狀態良好,工作穩定,軟體上稍加改變就可應用於其他串口裝置上,具有廣闊的應用前景。

本文來源:《電子設計應用》    作者:福州大學物理與資訊工程學院嵌入式研發室 廖一鵬 劉大

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.