<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于嵌入式USB的以太網(wǎng)應用系統設計

基于嵌入式USB的以太網(wǎng)應用系統設計

作者: 時(shí)間:2010-03-16 來(lái)源:網(wǎng)絡(luò ) 收藏
3 軟件
  系統軟件主要由TCP/IP程序和兩個(gè)部分組成。系統程序通過(guò)收到的數據包的類(lèi)型來(lái)進(jìn)行相應的處理,完成特定的功能。例如通過(guò)遠程登陸的方式瀏覽和修改本地數據,達到本地數據網(wǎng)絡(luò )共享的目的。
3.1 TCP/IP實(shí)現
  嵌入式TCP/IP實(shí)現包括控制器ENC28J60底層驅動(dòng)、TCP/IP協(xié)議。ENC28J60 可與許多主控制器上的SPI接口直接相連。此器件只支持SPI 的0,0模式。另外,SPI 端口要求SCK 在空閑狀態(tài)時(shí)為低電平,不支持時(shí)鐘極性選擇。在SCK 的每個(gè)上升沿移入數據,命令和數據通過(guò)SI 引腳送入器件。 ENC28J60在SCK的下降沿從SO引腳輸出數據。當執行操作時(shí)CS 引腳必須保持低電平,當操作完成時(shí)返回高電平[4]。
3.1.1ENC28J60底層驅動(dòng)
  在使用ENC28J60發(fā)送和接收數據包前,必須對器件進(jìn)行初始化設置。根據應用的不同,一些配置選項可能需要更改。通常初始化任務(wù)會(huì )在復位之后立即完成,并且不再需要更改。初始化任務(wù)主要包括:(1)初始化接收緩沖器:在接收數據包前,必須編程ERXST和ERXND指針來(lái)對接收緩沖器進(jìn)行初始化。ERXST與ERXND之間的存儲空間專(zhuān)供接收硬件使用。(2)初始化發(fā)送緩沖器:所有未被用作接收緩沖器的存儲空間都將作為發(fā)送緩沖器,故不需要專(zhuān)門(mén)對發(fā)送緩沖器進(jìn)行專(zhuān)門(mén)的初始化。(3)等待OST:如果在上電復位后立即進(jìn)行初始化,應查詢(xún)ESTAT.CLKRDY位,確保在開(kāi)始修改MAC和PHY寄存器前已經(jīng)經(jīng)過(guò)足夠長(cháng)的時(shí)間。(4)PHY初始化:PHY寄存器不能通過(guò)SPI控制接口直接訪(fǎng)問(wèn),而是通過(guò)一組帶有MIIM的特殊MAC控制寄存器來(lái)完成的。程序中在配置LED時(shí)用到了PHY寫(xiě)函數。寫(xiě)PHY寄存器時(shí),先將PHY寄存器的地址寫(xiě)入MIREGADR,然后將要寫(xiě)入高低8位的內容分別寫(xiě)入MIWRH、MIWRL即可。
  發(fā)送數據包時(shí),ENC28J60會(huì )自動(dòng)生成前導符和幀起始定界符。此外MAC還可以根據配置自動(dòng)生成填充和CRC字段。主控制器要生成所有其他幀字段,并將他們寫(xiě)入緩沖器,以待發(fā)送。此外,ENC28J60還要求在待發(fā)送的數據包前添加一個(gè)包的控制字節。接收數據包時(shí)可以使用中斷的方式,也可以使用查詢(xún)的方式。由于本對實(shí)時(shí)性要求不是很高,故采用查詢(xún)的方式。如果有數據包到達,ENC28J60將置位EIR寄存器的PTKIF位。程序運行時(shí)不斷地查詢(xún)該位以判斷有無(wú)數據包到達。
3.1.2 以太網(wǎng)數據包處理
  網(wǎng)絡(luò )協(xié)議通常是在不同的協(xié)議層上進(jìn)行開(kāi)發(fā),每一層負責不同的通信功能。TCP/IP 協(xié)議是一組不同層次上的多個(gè)協(xié)議的組合。當系統收到以太網(wǎng)的數據時(shí),數據就開(kāi)始從協(xié)議中由數據鏈路層逐層剝離其中各層協(xié)議所加的首部。主程序按照以太網(wǎng)數據幀分用的思路進(jìn)行編制,程序框架如圖4所示。

本文引用地址:http://dyxdggzs.com/article/152024.htm

圖4


3.2 嵌入式實(shí)現[5-6]
  嵌入式軟件主要分成4個(gè)部分:SL811HS初始化、USB設備的識別及配置、海量存儲協(xié)議和FAT文件系統。SL811HS共有16個(gè)配置寄存器,其中00-04H、08H-0CH是USB-A、USB-B的工作配置寄存器,05H是控制寄存器1,06H是中斷使能寄存器,07H的各位均為保留位,0DH為狀態(tài)寄存器,0EH為SOF計數寄存器,0FH為SOF計數寄存器的高位和控制寄存器2。在SL811HS上電開(kāi)始工作之后,首先將寄存器05H的第3位置1,延時(shí)30 ms后清零,便可以對USB總線(xiàn)復位;然后在06H寄存器中寫(xiě)入61H,使能設備檢測中斷。
  當有設備插入時(shí),會(huì )使SL811HS的D+管腳置高,SL811HS的寄存器0DH的第7位置1并產(chǎn)生中斷,系統會(huì )識別到有USB設備插入,即可對USB設備進(jìn)行配置了。通過(guò)標準設備請求函數ClearFeaure()、GetConfiguration()、GetDescriptor()、SetAddress()等函數完成對設備的配置。
  本系統可以檢測U盤(pán)的狀態(tài)(如接入、拔出),通過(guò)網(wǎng)絡(luò )對U盤(pán)的訪(fǎng)問(wèn),包括創(chuàng )建文件、目錄和讀寫(xiě)文件等,實(shí)現了USB設備網(wǎng)絡(luò )共享的目的。 但是由于不同USB設備的驅動(dòng)通常也不同,USB作為嵌入式應用時(shí)不可能像PC機操作系統把所有的驅動(dòng)都裝上。但是隨著(zhù)嵌入式技術(shù)的發(fā)展,可以采用網(wǎng)絡(luò )更新驅動(dòng)的方式,只要某種USB設備接上就可以通過(guò)更新系統的固件,達到識別該設備和使用該設備的目的。這也是本系統目前這也是本系統目前需要完善的地方。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>