lwip在ucos_ii上的移植

lwip在ucos_ii上的移植

ID:10074711

大?。?6.50 KB

頁數(shù):6頁

時間:2018-05-24

lwip在ucos_ii上的移植_第1頁
lwip在ucos_ii上的移植_第2頁
lwip在ucos_ii上的移植_第3頁
lwip在ucos_ii上的移植_第4頁
lwip在ucos_ii上的移植_第5頁
資源描述:

《lwip在ucos_ii上的移植》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、LwIP在uCOS_II上的移植1與CPU或編譯器有關(guān)的文件22sys_arch操作系統(tǒng)相關(guān)部分3LwIP信號量的實(shí)現(xiàn)3LwIP消息隊(duì)列的實(shí)現(xiàn)4LwIP定時器的實(shí)現(xiàn)4LwIP線程的創(chuàng)建5LwIP(Light-weightInternetProtocol)是瑞士計(jì)算機(jī)科學(xué)院(SwedishInstituteofComputerScience)的AdamDunkels等開發(fā)出來的一套用于嵌入式系統(tǒng)的開放源代碼TCP/IP協(xié)議棧。一般情況下,LwIP既可移植到操作系統(tǒng)上,又可在無操作系統(tǒng)的情況下獨(dú)立運(yùn)行。LwIP實(shí)現(xiàn)的主要優(yōu)點(diǎn)是在保持了TCP/IP協(xié)議主要功能

2、的基礎(chǔ)上,減少了其對RAM的占用。一般它只要幾十KB的RAM和40KB左右的ROM就可以運(yùn)行,這使得LwIP協(xié)議非常適合在嵌入式系統(tǒng)中使用。目前最新版的LwIP已經(jīng)發(fā)展到1.2.0版了。LwIP的主要特點(diǎn)如下:◇支持多網(wǎng)絡(luò)接口下的IP轉(zhuǎn)發(fā);◇支持網(wǎng)間控制報(bào)文協(xié)議ICMP(InternetControlMessagesProtocol);◇包含有實(shí)驗(yàn)性擴(kuò)展的用戶數(shù)據(jù)報(bào)協(xié)議UDP(UserDatagramProtocol);◇包括阻塞控制、RTT估算和快速恢復(fù)及快速轉(zhuǎn)發(fā)的傳輸控制協(xié)議TCP(TransferControlProtocol);◇具有專門提供的內(nèi)

3、部回調(diào)應(yīng)用編程接口RawAPI(ApplicationProgrammingInterface),可用于提高應(yīng)用程序性能;◇帶有可選擇的Berkeley接口API(多線程情況下);◇可在最新的版本中支持端對端協(xié)議PPP(Peer-PeerProtocol);◇新版本中增加了IPfragment的支持;◇能支持動態(tài)主機(jī)配置協(xié)議(DHCP)和動態(tài)分配IP地址。LwIP一般由幾個模塊組成,除TCP/IP協(xié)議的實(shí)現(xiàn)模塊外(IP,ICMP,UDP,TCP),還有許多相關(guān)支持模塊。這些支持模塊包括:操作系統(tǒng)模擬層、緩沖與內(nèi)存管理子系統(tǒng)、網(wǎng)絡(luò)接口函數(shù)、及一組Inter

4、net校驗(yàn)和計(jì)算函數(shù),此外,LWIP還包括一個API概要說明。LwIP的進(jìn)程模型如圖3所示Tftp_threadTcpecho_threadUDPTCPICMPIPIPpacketArppacket傳輸層網(wǎng)絡(luò)層網(wǎng)絡(luò)接口層應(yīng)用層Tcpip_threadLwIP協(xié)議在設(shè)計(jì)時為了適應(yīng)不同的操作系統(tǒng),沒有在代碼中使用和某一個操作系統(tǒng)相關(guān)的系統(tǒng)調(diào)用和數(shù)據(jù)結(jié)構(gòu),而是在LwIP和操作系統(tǒng)之間增加了一個操作系統(tǒng)的封裝層(sys_arch),該封裝層主要用于把所有與硬件、操作系統(tǒng)和編譯器相關(guān)的.c文件和.h頭文件獨(dú)立出來并按要求存放于/arch目錄下。這樣在移植LwIP到

5、底層操作系統(tǒng)時,只需要改寫這個接口里相關(guān)的文件即可。圖3LwIP進(jìn)程模型1與CPU或編譯器有關(guān)的文件與CPU或編譯器有關(guān)的文件有cc.h、cpu.h和perf.h。在cc.h文件中主要是對數(shù)據(jù)類型的定義,要求它們與ARM處理器的要求相一致。具體數(shù)據(jù)定義如下:typedefunsignedcharu8_t;typedefsignedchars8_t;typedefunsignedshortu16_t;typedefsignedshorts16_t;typedefunsignedintu32_t;typedefsignedints32_t;typedefu3

6、2_tmem_ptr_t;另外ARM系統(tǒng)默認(rèn)以4字節(jié)對齊,在ADS編譯環(huán)境中,結(jié)構(gòu)體是4字節(jié)對齊的。但是處理網(wǎng)絡(luò)數(shù)據(jù)包時,LwIP是根據(jù)結(jié)構(gòu)體中不同數(shù)據(jù)的長度來讀取相應(yīng)的數(shù)據(jù)的,所以一定要在定義數(shù)據(jù)包結(jié)構(gòu)體的時候使用__packed關(guān)鍵字,讓編譯器放棄原先的字節(jié)對齊。具體定義如下:#definePACK_STRUCT_FIELD(x)x#definePACK_STRUCT_STRUCT#definePACK_STRUCT_BEGIN__packed#definePACK_STRUCT_END在cpu.h中主要是對字的大小端進(jìn)行定義,再次定義為小端模式,定

7、義語句為#defineBYTE_ORDERLITTLE_ENDIAN,而在per.h文件中主要是定義#definePERF_START和#definePERF_STOP(x)。到此與CPU和編譯器有關(guān)的文件就編寫完成了。2sys_arch操作系統(tǒng)相關(guān)部分sys_arch.c和sys_arch.h中的內(nèi)容是與操作系統(tǒng)相關(guān)的一些結(jié)構(gòu)和函數(shù),主要可以分為4部分:信號量及相關(guān)函數(shù)、消息隊(duì)列及相關(guān)函數(shù)、定時器相關(guān)函數(shù)以及創(chuàng)建新線程函數(shù)等,因此在sys_arch.c文件中需要把這四部分解決。LwIP信號量的實(shí)現(xiàn)LwIP中需要使用信號量進(jìn)行通信,由于uCOS_II中已

8、經(jīng)實(shí)現(xiàn)了信號量OS_EVENT的各種操作,并且可以滿足LwIP通信的各種要求,所

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。