基于uCLinux和ARM7的網絡通信設計
引言
本文引用地址:http://www.j9360.com/article/216998.htmLinux是一種很受歡迎的操作系統,與UNIX系統兼容,開放源代碼。它原本被設計為桌面系統,現在廣泛應用于嵌入式設備。uCLinux正是在這種氛圍下產生的。在uCLinux這個英文單詞中,u表示Micro,是“小”的意思;C表示Control,是“控制”的意思,所以uCLinux就是Micro-Control-Linux,字面上的理解就是“針對微控制領域而設計的Linux系統”。它也是針對無MMU(內存管理單元模塊)的微處理器設計的操作系統。S3C4510B就是屬于該類的微處理器。
Samsung公司的S3C4510B是基于以太網應用系統高性價比16/32位RISC微控制器,內含一個由ARM公司設計16/32位ARM7TDMI RISC處理器核。ARM7TDMI為低功耗、高性能的16/32核,最適合用于對價格及功耗敏感的應用場合。除了ARM7TDMI核以外,S3C4510B還有許多重要的片內外圍功能模塊,其中就有1個以太網控制器,用于S3C4510B系統與其它設備的網絡通信工程。在S3C4510B的網絡控制平臺上移植了uCLinux操作系統,并在這個嵌入式平臺上實現網絡控制的各項功能。本文的敘述的網絡通信工程就是其中最主要的功能。
1 基于S3C4510B以太網電路的設計思路與實現
作為一款優秀的網絡控制器,基于S3C4510B的系統若沒有以太網接口,其應用價值就會大打折扣,因此,就整個系統而言,以太網接口電路應是必不可少的,但同時也是相對較復雜的。從硬件的角度看,以太網接口電路主要由MAC控制器和物理層接口(Physical Layer,PHY)兩大部分構成。
S3C4510B內嵌一個以太網控制器,支持媒體獨立接口(Media Independent Interface,MII)和帶緩沖DMA接口(Buffered DMA Interface,BDI),可在半雙工或全雙工模式下提供情報0M/100Mbps的以太網接入。在半雙工模式下,控制器支持CSMA/CD協議,在全雙工模式下支持IEEE802.3MAC控制層協議。因此,S3C4510B內部實際上已包含了以太網MAC控制,但并未提供物理層接口,故需外接一片物理層芯片,以提供以太網的接入通道。
常用的單口10M/100Mbps高速以太網物理層接口器件主要有RTL8201、DM9161等,均提供MII接口和傳統7線制網絡接口,可方便地與S3C4510B接口。以太網物理層接口器件主要功能一般包括:物理編碼子層、物理媒體附件、雙絞線物理媒體子層、10BASE-TX編碼/解碼器和雙絞線媒體訪問單元等。
在該設計中,使用DP9161作為以太網的物理層接口。DM9161是一款低功耗、高性能的CMOS芯片,支持10M和100M的以太網傳輸,它起編碼、譯碼輸入和輸出數據的作用。它與S3C4510B的引腳連線如圖圖1所示。
由于S3C4510B片內已民用有帶MII接口的MAC控制器,而DM9161也提供了MII接口,各種信號的定義也很明確,因此DM9161與S3C4510B的連接時序銜接,可以達到很好的網絡信號傳遞的目的。圖2為DM9161在本系統中的實際應用電路(圖中右下方的1、2、3以及14、15、16分別與網絡隔離變壓器相應引腳相連)。
S3C4510B的MAC控制器可通過MDC/MDIO管理接口控制多達斡爾1個DM9161,每個DM9161應有不同的PHY地址(可從00001B~11111B)。當系統復位時,DM9161鎖存引腳9、10、12、13、15的初始狀態作為與S3C4510B管理接口通信工程的PHY地址;但該地址不能設為00000B,否則DM9161進入掉電模式。
信號的發送和接收端應通過網絡隔離變壓器和RJ45接口接入傳輸媒體,實際應用電路如圖書室所示。
2 Linux下的網絡編程協議分析
Linux下的TCP/IP網絡協議棧的各層之間是通過一系列互相連接層的軟件來實現Internet地址族的,結構層次如圖4所示。
其中BSD socket層由專門用來處理BSD socket的通用套接字管理軟件來處理,它由INET socket層來支持。INET socket為基于IP的協議TCP和UDP管理傳輸端點。UDP(用戶數據報協議)是一個無連接協議,而TCP(傳輸控制協議)是一個可靠的端對端協議。傳輸UDP包的時候,Linux不知道也不關心它們是否安全到達了目的地。TCP則不同。在TCP連接的兩端都需要加上一個編號,以保證傳輸的數據被正確接收。在IP層,實現了Internet協議代碼,這些代碼要給傳輸的數據加上一個IP頭,并且知道如何把傳入的IP包送給TCP或者UDP協議。在IP層以下,就是網絡設備來支持所有的Linux網絡工作,如PLIP、SLIP和以太網。
3 uClinux環境下的socket編程
網絡的socket數據b傳輸是一種特殊的I/O,socket也是一種文件描述符,也具有一個類似文件的函數調用socket()。該函數返回一個整型的socket描述符,隨后的連接建立、數據傳輸等操作都是通過該socket函數實現的。常用的socket類型有兩種:流式socket和數據報式socket。兩者的區別在于:前者對應于TCP服務,后者對應于UDP服務。
linux相關文章:linux教程
數字通信相關文章:數字通信原理
通信相關文章:通信原理
評論