新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM-Linux的數據采集和網絡傳輸系統設計

        基于ARM-Linux的數據采集和網絡傳輸系統設計

        作者: 時間:2016-09-12 來源:網絡 收藏

        8片MAX1308由兩片Altera公司的Cyclone II系列FPGA芯片控制,每片FPGA內部分為兩個模塊,一個為AD轉換控制模塊,另一個為FIFO存儲模塊。最終兩個FIFO存儲器分別掛在S3C2440芯片的BANK3和BANK5上,通過數據總線,ARM處理器可以讀取FIFO內的數據。ARM與FPGA(FIFO)接口電路如圖4所示。

        基于ARM-Linux的數據采集和網絡傳輸系統設計

        其中的FIFO由Quartus II提供的IP核手動配置,自動生成。FIFO的輸出通過一組三態門與ARM的數據總線相連,三態門的EN端分別由nGC S3和nGCS5控制,同時nGCS3和nGCS5通過反相器分別與兩個FIFO的rdreq端相連,這樣ARM通過這兩個片選信號可同時打開FIFO的輸出通道以及讀使能信號rdreq。nOE信號通過反相器分別與兩個FIFO的rdclk端相連,來提供FIFO的讀時鐘信號。

        3 軟件設計

        3.1 AD控制部分

        MAX1308采用內部時鐘的采樣時序圖如下圖5所示。其中雙向并行接口DO~D7用來設置8位配置寄存器,以激活和禁止相應的采樣通道。內部時鐘模式下,啟動一次轉換,需在采樣時間(tACQ)內將CONVST置為低電平,此時T/H捕獲信號,在CONVST上升沿轉換開始。一旦能夠讀取轉換結果,轉換結束信號(基于ARM-Linux的數據采集和網絡傳輸系統設計)將給出一個低電平脈沖。當最后一個通道的轉換結果可以被讀取時,最后轉換結束信號(基于ARM-Linux的數據采集和網絡傳輸系統設計)跳變到低電平。

        基于ARM-Linux的數據采集和網絡傳輸系統設計

        FPGA內部按照上述時序邏輯實現采集模塊后,再連接到FIFO模塊上,然后通過一組三態門掛接到ARM數據總線上。

        3.2 設備驅動

        設備驅動程序在內核中扮演著特殊的角色,它使某個特定硬件響應一個定義良好的內部編程接口,這些接口完全隱藏了設備的工作細節。用戶的操作通過一組標準化的調用執行,而這些調用獨立于特定的驅動程序。將這些調用映射到作用于實際硬件的設備特有操作上,則是設備驅動程序的任務。

        3.2.1 FIFO設備驅動

        用戶空間驅動程序具有很多優點,比如可以和整個C庫連接,可以使用通常的調試器調試驅動程序代碼,而不用費力地調試正在運行的內核等。

        該驅動程序是通過mmap函數將外設FIFO存儲器映射到用戶空間的一段內存中,進而對其進行操作。映射一個設備意味著將用戶空間的一段內存與設備內存關聯起來。mmap函數定義如下:

        #include

        void*mmap(void*addr,size_t len,int prot,int flag,int filedes,off_t off);

        此函數將在進程的虛擬地址空間(地址起始為addr,長度為len字節)和與文件描述符fd關聯的文件(偏移量為off,長度為len字節)之間建立映射。映射后系統對設備的讀寫操作就等同于對用戶內存的讀寫。

        基于ARM-Linux的數據采集和網絡傳輸系統設計

        程序中需要對S3C2440的存儲器控制寄存器進行配置,主要是BANKCON3、BANKCON5和BWSCON 3個寄存器,使BANK3和BANK5數據總線寬度為16位,WAIT等待信號無效,合理配置讀寫信號周期。這些同樣是通過存儲映射的方式實現。

        3.2.2 DM9000網絡設備驅動

        2.6.30.4內核中的網卡驅動相當完善,其中包含DM9000的驅動,所以隨著內核的移植,該驅動就可以直接使用了。

        3.3 網絡應用程序

        Linux OS之所以得到廣泛應用的一個主要原因是其卓越的網絡應用。是一種實現網絡不同主機進程間通信的一種機制。

        為了數據的可靠傳輸,我們選擇基于面向連接的TCP通信協議進行應用層的開發,面向連接的通信流程如圖7所示。

        基于ARM-Linux的數據采集和網絡傳輸系統設計

        眾所周知,使用多進程的服務器模型有利于程序的健壯性。下位機作為服務器端,設置listen()偵聽客戶端的連接請求,針對每個Soc ket連接請求,利用fork()函數產生一個子進程處理到來的連接,在子進程中完成客戶指令的接收與判斷、數據的處理與發送等,并關閉服務器偵聽,在父進程中關閉客戶端的連接,采用多進程思想,解決多客戶端問題。上位機應用程序為字符界面,將接收到的數據以文件的形式保持起來。

        4 系統測試實驗

        用SG1110數字合成信號發生器給采集板輸入一個頻率為4 kHz,峰峰值為8.6 V的正弦波信號,如圖8(a)所示,在單通道采集的模式下將采集的一段數據傳送給網絡上的客戶端,并將此數據用MATLAB程序畫圖如圖8(b)所示。

        基于ARM-Linux的數據采集和網絡傳輸系統設計

        由上圖可以看出,還原后的圖像為一正弦波,每個周期的采樣點數約為160個,采樣頻率接近640 kHz,符合預期結果。

        5 結論

        嵌入式遠程系統是一種新的將分散信息集中處理的有效方法,對工業控制的數據集中處理、環境監控等有非常重要的應用價值。該系統的創新點是在用戶空間實現了FIFO設備驅動,最大的特點是實現了多達64通道的模擬,實現了多數據源采集的要求。系統的便攜化程度高,實用性和智能性強,潛在的經濟效益巨大。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 修文县| 平邑县| 湘西| 汤阴县| 广宁县| 石楼县| 渝北区| 凤凰县| 郁南县| 广宗县| 南昌市| 佛冈县| 万源市| 邹城市| 沅江市| 临武县| 勃利县| 淄博市| 武汉市| 江阴市| 金坛市| 元朗区| 广东省| 吉安县| 景德镇市| 彩票| 延安市| 通化县| 南木林县| 莆田市| 洛浦县| 富锦市| 江门市| 丰宁| 清苑县| 绥芬河市| 新郑市| 夏邑县| 辰溪县| 永城市| 商河县|