ucos+lwip應(yīng)用心得[社區(qū)]

ucos+lwip應(yīng)用心得[社區(qū)]

ID:25243662

大?。?4.00 KB

頁(yè)數(shù):7頁(yè)

時(shí)間:2018-11-19

ucos+lwip應(yīng)用心得[社區(qū)]_第1頁(yè)
ucos+lwip應(yīng)用心得[社區(qū)]_第2頁(yè)
ucos+lwip應(yīng)用心得[社區(qū)]_第3頁(yè)
ucos+lwip應(yīng)用心得[社區(qū)]_第4頁(yè)
ucos+lwip應(yīng)用心得[社區(qū)]_第5頁(yè)
資源描述:

《ucos+lwip應(yīng)用心得[社區(qū)]》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。

1、ucos+lwip應(yīng)用心得[社區(qū)]經(jīng)過(guò)幾天調(diào)試除掉幾個(gè)bug以后,ucos+lodel)先貼上來(lái),如果大家有興趣我再接著往下寫.另外我的移植參看了skyeye揚(yáng)曄大俠的代碼,大家可以去看看揚(yáng)曄大俠的lDunkels等開發(fā)的一套用于嵌入式系統(tǒng)的開放源代碼TCP/IP協(xié)議棧。Lent的支持.(9)支持DHCP協(xié)議,動(dòng)態(tài)分配ip地址.現(xiàn)在網(wǎng)上最新的版本是V0.6.41.lodel)tcp/ip協(xié)議棧的processmodel一般有幾種方式.1.tcp/ip協(xié)議的每一層是一個(gè)單獨(dú)進(jìn)程.鏈路層是一個(gè)進(jìn)程,ip層是一個(gè)進(jìn)程,tcp層是一個(gè)進(jìn)程.這樣的好處是網(wǎng)絡(luò)協(xié)議的每一層都非常清晰,代碼的

2、調(diào)試和理解都非常容易.但是最大的壞處數(shù)據(jù)跨層傳遞時(shí)會(huì)引起上下文切換(contextsent要引起3次contextscall)和協(xié)議棧來(lái)進(jìn)行通訊.這樣TCP/IP的協(xié)議棧就限定于特定的操作系統(tǒng)內(nèi)核了.如odel:所有tcp/ip協(xié)議棧都在一個(gè)進(jìn)程當(dāng)中,這樣tcp/ip協(xié)議棧就和操作系統(tǒng)內(nèi)核分開了.而應(yīng)用層程序既可以是單獨(dú)的進(jìn)程也可以駐留在tcp/ip進(jìn)程中.如果應(yīng)用程序是單獨(dú)的進(jìn)程可以通過(guò)操作系統(tǒng)的郵箱,消息隊(duì)列等和tcp/ip進(jìn)程進(jìn)行通訊.>voidsys_sem_signal(sys_sem_tsem)//發(fā)送一個(gè)信號(hào)量voidsys_sem__tsem)//等待一個(gè)信號(hào)量

3、voidsys_timeout(u32_tmsecs,sys_timeout_handlerh,void*arg)//設(shè)置一個(gè)超時(shí)事件voidsys_untimeout(sys_timeout_handlerh,void*arg)//刪除一個(gè)超時(shí)事件…關(guān)于操作系統(tǒng)封裝層的信息可以閱讀lbox_t;//可見lbox其實(shí)是ucos的消息隊(duì)列staticcharpcQueueMemoryPool[MAX_QUEUES*sizeof(TQ_DESCR)];voidsys_init(void){u8_ti;s8_tucErr;pQueueMem=OSMemCreate((void*)pc

4、QueueMemoryPool,MAX_QUEUES,sizeof(TQ_DESCR),ucErr);//為消息隊(duì)列創(chuàng)建內(nèi)存分區(qū)//initleoutsforeveryleouts[i].next=NULL;}}2.2.2創(chuàng)建一個(gè)和tcp/ip相關(guān)新進(jìn)程:l,所以設(shè)大//一點(diǎn)也沒(méi)有關(guān)系:)//maxnumberoflp;LAX];Leouts的對(duì)應(yīng)表項(xiàng)中.imeouts(void){u8_tcurr_prio;s16_terr,offset;OS_TCBcurr_task_pcb;null_timeouts.next=NULL;//獲取當(dāng)前任務(wù)的優(yōu)先級(jí)err=OSTaskQue

5、ry(OS_PRIO_SELF,curr_task_pcb);curr_prio=curr_task_pcb.OSTCBPrio;offset=curr_prio-LAX){returnnull_timeouts;}returnleouts[offset];}ext!=NULL)t->next->time+=t->time;memp_free(MEMP_SYS_TIMEOUT,t);return;}}return;}2.2.3“mbox”的實(shí)現(xiàn):}}}}u32_tsys_arch_mbox_fetch(sys_mbox_tmbox,void**data,u32

6、_ttimeout){u32_tucErr;u16_tucos_timeout;//在leout的單位是ms//在ucosII,timeout的單位是timertickucos_timeout=0;if(timeout!=0){ucos_timeout=(timeout)*(OS_TICKS_PER_SEC/1000);if(ucos_timeout<1)ucos_timeout=1;elseif(ucos_timeout>65535)ucos_timeout=65535;}//如果data!=NULL就返回消息指針,if(data!=NULL){*data=OSQ

7、Pend(mbox->pQ,(u16_t)ucos_timeout,ucErr);}else{OSQPend(mbox->pQ,(u16_t)ucos_timeout,ucErr);}//這里修改了ucos中的OSQPend系統(tǒng)調(diào)用,//原來(lái)的void*OSQPend(OS_EVENT*pevent,INT16Utimeout,INT8U*err)//err的返回值只有兩種:收到消息就返回OS_NO_ERR,超時(shí)則返回OS_TIMEOUT//這里先將err從8位數(shù)據(jù)改變成了16位

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

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

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