freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于armcortexm3的雙以太網(wǎng)口通信的實(shí)現(xiàn)畢業(yè)論文(文件)

 

【正文】 為了接收數(shù)據(jù),應(yīng)用程序會(huì)向協(xié)議棧注冊(cè)一個(gè)回調(diào)函數(shù)。主要缺點(diǎn)是應(yīng)用程序不 能使自己陷入長(zhǎng)期的連續(xù)運(yùn)算中,這樣會(huì)導(dǎo)致通訊性能下降,原因是TCP/IP處理與連續(xù)運(yùn)算是不能并行發(fā)生的。因此,接收與協(xié)議處理必須分開。數(shù)據(jù)包到達(dá)后,去掉以太網(wǎng)包頭得到IP包,然后直接調(diào)用tcpip_input()函數(shù)將其投遞到mbox郵箱。BSD API提供了基于openreadwriteclose模型的UNIX標(biāo)準(zhǔn)API,它的最大特點(diǎn)是使應(yīng)用程序移植到其它系統(tǒng)時(shí)比較容易,但用在嵌入式系統(tǒng)中效率比較低,占用資源多。 //目標(biāo) MAC 地址 PACK_STRUCT_FIELD(struct eth_addr src)。 struct pbuf *p。ethhdr = ppayload。default: pbuf_free(p)。一是數(shù)據(jù)包接收的方法是查詢方式,即處理器不斷向網(wǎng)卡芯片中讀取數(shù)據(jù),如果讀不到數(shù)據(jù),則控制器會(huì)重新啟動(dòng)一個(gè)讀取時(shí)序;如果能夠成功讀取到數(shù)據(jù),則將數(shù)據(jù)通過(guò)網(wǎng)卡注冊(cè)的input函數(shù)交往上層進(jìn)行處理。一般的網(wǎng)卡芯片都有中斷功能,即當(dāng)網(wǎng)卡接收到一個(gè)數(shù)據(jù)包后,它可以產(chǎn)生中斷信號(hào)告訴控制器自己接收到一個(gè)數(shù)據(jù)包。第二個(gè)需要注意的地方是htons(ethhdrtype)函數(shù)的使用,htons函數(shù)的功能是將一個(gè)半字長(zhǎng)的數(shù)據(jù)從網(wǎng)絡(luò)字節(jié)順序轉(zhuǎn)換到我們的處理器支持的字節(jié)順序。對(duì)于小端模式,則恰好相反。tcpip_input屬于IP層函數(shù),從這里我們可以看出LWIP的一個(gè)很大的特點(diǎn),即各層之間沒(méi)有明顯的界限劃分。3. LwIP協(xié)議棧的初始化在在使用LwIP 協(xié)議棧之前,需要初始化協(xié)議棧。 /*注冊(cè)以太網(wǎng)接口驅(qū)動(dòng)*/ rt hw stm32 eth init()。 }endif}int rt application init(){ rt thread t init thread。}另外。 extern void fm3_emac_hw_init(void)。 FM3_GPIO = 1。 PHY0_RESET_HIGH()。 rt_thread_delay(RT_TICK_PER_SECOND/100)。 lwip_sys_init()。 set_if(e1, , , )。 netconn connect(udp_text,amp。 while((buf = netconn recv(udp_text)) != NULL) { netconn send(udp_text,buf)。 } }endif}int rt_application_init(){ rt_thread_t tid。5. 主要函數(shù)功能的簡(jiǎn)介netconn recv() 原型聲明 struct netbuf *netconn recv(struct netconn *conn) 阻塞進(jìn)程,等待數(shù)據(jù)到達(dá)參數(shù)conn指定的連接。數(shù)據(jù)長(zhǎng)度不能大于發(fā)送網(wǎng)絡(luò)接口(outgoing network interface)的最大傳輸單元值(MTU)。對(duì)TCP,netconn connect()函數(shù)打開與指定遠(yuǎn)程主機(jī)的連接。使用TCP/IP的協(xié)議棧提供的服務(wù)的方法有兩個(gè):1是直接調(diào)用TCP和UDP模塊的函數(shù),2是使用Lwip的API函數(shù),應(yīng)用建議使用后者。支持Keil MDK/RVDS armcc編譯器;GNU GCC編譯器;IAR ARM編譯器等多種主流編譯器。TCP協(xié)議是面向連接的一個(gè)協(xié)議,可靠性高,費(fèi)用也高;UDP協(xié)議是提供最少服務(wù)和費(fèi)用的傳輸層協(xié)議。(4) 提供UDP 報(bào)的校驗(yàn)和:UDP 報(bào)頭包含有整個(gè)UDP 報(bào)(包括報(bào)頭和有效負(fù)載)及偽 報(bào)頭的校驗(yàn)和,計(jì)算方法與IP 數(shù)據(jù)報(bào)的校驗(yàn)和計(jì)算方法相同。LwIP的RAW API提供了較底層的UDP接口函數(shù)。 netconn bind(udp_text,NULL,4999)。 buf = netbuf new()。 } netconn delete(conn)。UDP測(cè)試工具”,目標(biāo)板的IP地址是“”,在該IP地址的1025端口上建立一個(gè)UDP連接,然后設(shè)置定時(shí)發(fā)送一個(gè)字符串?dāng)?shù)據(jù),我們可以在接收框中看到接收回來(lái)的數(shù)據(jù)。結(jié)論結(jié)論至此,基于ARM CortexM3的雙以太網(wǎng)口通信的實(shí)現(xiàn)基本上完成,在這幾天的測(cè)試過(guò)程中,也基本能實(shí)現(xiàn)網(wǎng)口通信的功能。在跟隨導(dǎo)師學(xué)習(xí)的這段時(shí)間里,得到了彭老師諸多的言傳身教,彭老師在論文選題、課題的研究以及論文的撰寫工作等方面給予了大量的指導(dǎo),彭老師使我獲得了進(jìn)一步的專業(yè)知識(shí),提高了研究能力,更使我從中學(xué)到了嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,崇高的敬業(yè)精神和平易近人的生活作風(fēng),所有這些將使我受益終生。本文參考了大量的文獻(xiàn)資料,在此,向?qū)W術(shù)界的前輩們致敬。經(jīng)過(guò)了這么長(zhǎng)的時(shí)間學(xué)習(xí)和工作,終于完成了我的畢業(yè)論文,在整個(gè)設(shè)計(jì)的過(guò)程中,出現(xiàn)了很多的困難,在老師和同學(xué)們的幫助下順利的解決了,在這期間我也感受到了自己學(xué)到的東西還是很少,也深刻的體會(huì)到了實(shí)踐對(duì)于學(xué)習(xí)的重要性。在同學(xué)和老師的幫助下讓我能更快的去完成我的畢業(yè)設(shè)計(jì),我的論文項(xiàng)目還不是很成熟,存在著很多的不足之處,希望這個(gè)的經(jīng)歷能讓我在以后的學(xué)習(xí)中激勵(lì)我繼續(xù)進(jìn)步。UDP測(cè)試5. 本章小結(jié)網(wǎng)口的通信功能通過(guò)調(diào)試已基本實(shí)現(xiàn)了,紙上得來(lái)終覺(jué)淺,絕知此事要躬行。 當(dāng)有UDP數(shù)據(jù)接收到時(shí),會(huì)把接收到的數(shù)據(jù)存放到buf中,同時(shí)獲取遠(yuǎn)程主機(jī)的IP地址和端口號(hào)等信息,如果buf不為空,說(shuō)明數(shù)據(jù)被正確的接收,這個(gè)時(shí)候數(shù)據(jù)會(huì)被發(fā)送回去。 while((buf = netconn recv(udp_text)) != NULL) { netconn send(udp_text, buf)。 netconn connect(udp_text,amp。況且,這些函數(shù)的編程思想是和BSD標(biāo)準(zhǔn)的Sockets相通的,都是基于openreadwriteclose模型的。緩沖區(qū)應(yīng)該由應(yīng)用層協(xié)議提供。(2) 不可靠:UDP 的數(shù)據(jù)報(bào)發(fā)送時(shí)沒(méi)有定序,所以UDP 傳送的數(shù)據(jù)是不可靠的,只有 在應(yīng)用層協(xié)議中增加超時(shí)重發(fā)和提供可靠服務(wù)。34第四章 系統(tǒng)功能模塊調(diào)試第四章 系統(tǒng)功能模塊調(diào)試1. 程序燒寫圖41 程序的燒寫2. 程序燒寫后圖42 網(wǎng)口的配置,設(shè)置完主機(jī)的IP后進(jìn)入CMD命令行輸入ipconfig查看重新配置的IP地址 圖43 主機(jī)IP的設(shè)置 接下來(lái)就可以ping板子的IP了,為了方便測(cè)試,可以再給主機(jī)添加一個(gè)IP:圖44 主機(jī)第二個(gè)IP的設(shè)置 添加好確定后在 CMD 命令行可看到如下設(shè)置:圖45 主機(jī)的2個(gè)IP設(shè)置 Ping測(cè)試的結(jié)果如下:圖46 雙網(wǎng)口的測(cè)試4. 網(wǎng)口的通信UDP在網(wǎng)絡(luò)體系結(jié)構(gòu)中屬于傳輸層協(xié)議。這兩部分通過(guò)操作系統(tǒng)封裝層實(shí)現(xiàn)的進(jìn)程間通訊機(jī)制(IPC)進(jìn)行通信。如果addr參數(shù)為NULL則本地IP地址由網(wǎng)絡(luò)系統(tǒng)確定。函數(shù)對(duì)要發(fā)送的數(shù)據(jù)大小沒(méi)有進(jìn) 行校驗(yàn),無(wú)論是非常小還是非常大,因而函數(shù)的執(zhí)行結(jié)果是不確定的。netconn send()原型聲明int netconn send(struct netconn *conn, struct netbuf *buf)使用參數(shù)conn指定的UDP連接發(fā)送參數(shù)buf中的數(shù)據(jù)。 if (tid != RT_NULL) rt_thread_startup(tid)。 } netconn delete(conn)。 buf = netbuf new()。 netconn bind(udp_text,NULL,4999)。 } { extern void set_if(char* netif_name, char* ip_addr, char* gw_addr, char* nm_addr)。 fm3_emac_hw_init()。 PHY1_RESET_LOW()。 FM3_GPIO = 1。 eth_system_device_init()。 rt_led_hw_init()。 if (init thread != RT NULL) rt thread startup(init thread)。 /*初始化LwIP系統(tǒng)*/ lwip sys init()。include ifdef RT USING LWIPinclude lwip/include netif/endifvoid rt init thread entry(void *parameter){ifdef RT USING LWIP { extern void lwip sys init(void)。LWIP協(xié)議棧進(jìn)程從郵箱中取到該地址后就可以對(duì)數(shù)據(jù)包進(jìn)行處理了。在調(diào)用htons(ethhdrtype)后,ethhdrtype的值就為0x0800或0x0806等。目前通常采用的存儲(chǔ)機(jī)制主要有兩種:bigendian和littleendian,即大端和小端。所以可以這樣來(lái)實(shí)現(xiàn)一個(gè)接收數(shù)據(jù)包進(jìn)程:在無(wú)數(shù)據(jù)包收到時(shí),數(shù)據(jù)包接收進(jìn)程阻塞在一個(gè)信號(hào)量下,當(dāng)有數(shù)據(jù)包到來(lái)時(shí),網(wǎng)卡芯片產(chǎn)生一個(gè)中斷信號(hào),處理器進(jìn)入中斷處理,并釋放一個(gè)信號(hào)量。上面的程序有個(gè)可以改進(jìn)的地方,即在讀取到的數(shù)據(jù)包為空時(shí),接收進(jìn)程調(diào)用系統(tǒng)函數(shù)將自己延時(shí)一段時(shí)間再啟動(dòng)下一個(gè)讀取過(guò)程,這樣可以使其不能阻止優(yōu)先級(jí)更低的進(jìn)程的運(yùn)行,缺點(diǎn)是數(shù)據(jù)包的接收得不到及時(shí)的響應(yīng)。 break。 p = NULL。 while (1) { p = low_level_input (netif)。 //類型} PACK_STRUCT_STRUCT。圖35 LwIP示意圖 LwIP的以太網(wǎng)數(shù)據(jù)接收?qǐng)D36 LwIP數(shù)據(jù)的接收示意圖LWIP使用了一個(gè)eth_hdr的數(shù)據(jù)
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1