<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于uCLinux和ARM7的網(wǎng)絡(luò)通信設(shè)計(jì)

          基于uCLinux和ARM7的網(wǎng)絡(luò)通信設(shè)計(jì)

          作者: 時(shí)間:2013-04-12 來源:網(wǎng)絡(luò) 收藏

          引言

          本文引用地址:http://www.ex-cimer.com/article/216998.htm

          Linux是一種很受歡迎的操作系統(tǒng),與UNIX系統(tǒng)兼容,開放源代碼。它原本被設(shè)計(jì)為桌面系統(tǒng),現(xiàn)在廣泛應(yīng)用于嵌入式設(shè)備。正是在這種氛圍下產(chǎn)生的。在這個(gè)英文單詞中,u表示Micro,是“小”的意思;C表示Control,是“控制”的意思,所以就是Micro-Control-Linux,字面上的理解就是“針對微控制領(lǐng)域而設(shè)計(jì)的Linux系統(tǒng)”。它也是針對無MMU(內(nèi)存管理單元模塊)的微處理器設(shè)計(jì)的操作系統(tǒng)。就是屬于該類的微處理器。

          Samsung公司的是基于以太網(wǎng)應(yīng)用系統(tǒng)高性價(jià)比16/32位RISC微控制器,內(nèi)含一個(gè)由ARM公司設(shè)計(jì)16/32位ARM7TDMI RISC處理器核。ARM7TDMI為低功耗、高性能的16/32核,最適合用于對價(jià)格及功耗敏感的應(yīng)用場合。除了ARM7TDMI核以外,還有許多重要的片內(nèi)外圍功能模塊,其中就有1個(gè)以太網(wǎng)控制器,用于S3C4510B系統(tǒng)與其它設(shè)備的工程。在S3C4510B的網(wǎng)絡(luò)控制平臺上移植了uCLinux操作系統(tǒng),并在這個(gè)嵌入式平臺上實(shí)現(xiàn)網(wǎng)絡(luò)控制的各項(xiàng)功能。本文的敘述的工程就是其中最主要的功能。


          1 基于S3C4510B以太網(wǎng)電路的設(shè)計(jì)思路與實(shí)現(xiàn)

          作為一款優(yōu)秀的網(wǎng)絡(luò)控制器,基于S3C4510B的系統(tǒng)若沒有以太網(wǎng)接口,其應(yīng)用價(jià)值就會大打折扣,因此,就整個(gè)系統(tǒng)而言,以太網(wǎng)接口電路應(yīng)是必不可少的,但同時(shí)也是相對較復(fù)雜的。從硬件的角度看,以太網(wǎng)接口電路主要由MAC控制器和物理層接口(Physical Layer,PHY)兩大部分構(gòu)成。
          S3C4510B內(nèi)嵌一個(gè)以太網(wǎng)控制器,支持媒體獨(dú)立接口(Media Independent Interface,MII)和帶緩沖DMA接口(Buffered DMA Interface,BDI),可在半雙工或全雙工模式下提供情報(bào)0M/100Mbps的以太網(wǎng)接入。在半雙工模式下,控制器支持CSMA/CD協(xié)議,在全雙工模式下支持IEEE802.3MAC控制層協(xié)議。因此,S3C4510B內(nèi)部實(shí)際上已包含了以太網(wǎng)MAC控制,但并未提供物理層接口,故需外接一片物理層芯片,以提供以太網(wǎng)的接入通道。

          常用的單口10M/100Mbps高速以太網(wǎng)物理層接口器件主要有RTL8201、DM9161等,均提供MII接口和傳統(tǒng)7線制網(wǎng)絡(luò)接口,可方便地與S3C4510B接口。以太網(wǎng)物理層接口器件主要功能一般包括:物理編碼子層、物理媒體附件、雙絞線物理媒體子層、10BASE-TX編碼/解碼器和雙絞線媒體訪問單元等。

          在該設(shè)計(jì)中,使用DP9161作為以太網(wǎng)的物理層接口。DM9161是一款低功耗、高性能的CMOS芯片,支持10M和100M的以太網(wǎng)傳輸,它起編碼、譯碼輸入和輸出數(shù)據(jù)的作用。它與S3C4510B的引腳連線如圖圖1所示。

          由于S3C4510B片內(nèi)已民用有帶MII接口的MAC控制器,而DM9161也提供了MII接口,各種信號的定義也很明確,因此DM9161與S3C4510B的連接時(shí)序銜接,可以達(dá)到很好的網(wǎng)絡(luò)信號傳遞的目的。圖2為DM9161在本系統(tǒng)中的實(shí)際應(yīng)用電路(圖中右下方的1、2、3以及14、15、16分別與網(wǎng)絡(luò)隔離變壓器相應(yīng)引腳相連)。

          S3C4510B的MAC控制器可通過MDC/MDIO管理接口控制多達(dá)斡爾1個(gè)DM9161,每個(gè)DM9161應(yīng)有不同的PHY地址(可從00001B~11111B)。當(dāng)系統(tǒng)復(fù)位時(shí),DM9161鎖存引腳9、10、12、13、15的初始狀態(tài)作為與S3C4510B管理接口通信工程的PHY地址;但該地址不能設(shè)為00000B,否則DM9161進(jìn)入掉電模式。

          信號的發(fā)送和接收端應(yīng)通過網(wǎng)絡(luò)隔離變壓器和RJ45接口接入傳輸媒體,實(shí)際應(yīng)用電路如圖書室所示。


          2 Linux下的網(wǎng)絡(luò)編程協(xié)議分析

          Linux下的TCP/IP網(wǎng)絡(luò)協(xié)議棧的各層之間是通過一系列互相連接層的軟件來實(shí)現(xiàn)Internet地址族的,結(jié)構(gòu)層次如圖4所示。

          其中BSD socket層由專門用來處理BSD socket的通用套接字管理軟件來處理,它由INET socket層來支持。INET socket為基于IP的協(xié)議TCP和UDP管理傳輸端點(diǎn)。UDP(用戶數(shù)據(jù)報(bào)協(xié)議)是一個(gè)無連接協(xié)議,而TCP(傳輸控制協(xié)議)是一個(gè)可靠的端對端協(xié)議。傳輸U(kuò)DP包的時(shí)候,Linux不知道也不關(guān)心它們是否安全到達(dá)了目的地。TCP則不同。在TCP連接的兩端都需要加上一個(gè)編號,以保證傳輸?shù)臄?shù)據(jù)被正確接收。在IP層,實(shí)現(xiàn)了Internet協(xié)議代碼,這些代碼要給傳輸?shù)臄?shù)據(jù)加上一個(gè)IP頭,并且知道如何把傳入的IP包送給TCP或者UDP協(xié)議。在IP層以下,就是網(wǎng)絡(luò)設(shè)備來支持所有的Linux網(wǎng)絡(luò)工作,如PLIP、SLIP和以太網(wǎng)。

          3 uClinux環(huán)境下的socket編程

          網(wǎng)絡(luò)的socket數(shù)據(jù)b傳輸是一種特殊的I/O,socket也是一種文件描述符,也具有一個(gè)類似文件的函數(shù)調(diào)用socket()。該函數(shù)返回一個(gè)整型的socket描述符,隨后的連接建立、數(shù)據(jù)傳輸?shù)炔僮鞫际峭ㄟ^該socket函數(shù)實(shí)現(xiàn)的。常用的socket類型有兩種:流式socket和數(shù)據(jù)報(bào)式socket。兩者的區(qū)別在于:前者對應(yīng)于TCP服務(wù),后者對應(yīng)于UDP服務(wù)。

          linux相關(guān)文章:linux教程


          數(shù)字通信相關(guān)文章:數(shù)字通信原理


          通信相關(guān)文章:通信原理



          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();