欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
操作系統和uip協議棧的接口
[打印本頁]
作者:
xuwei
時間:
2015-6-13 16:29
標題:
操作系統和uip協議棧的接口
這其實也是水到渠成的事,因為UIP協議棧是不需要操作系統支持的,也就是說他可以裸奔,可以覆蓋在系統上面,怎么樣裁減都是可以的,然而,lwip卻不行,第一LWIP的所有數據區都要先分先用,也就是說要給LWIP提供動態分配內存的所有接口和封裝函數,第二,LWIP是消息機制,如果裸奔就需要用戶構建一套消息機制,然而娛樂操作系統這一切就變得似乎簡單了,線程間的通信都可以依靠操作系統提供的時間接口,UIP就不同了,他不需要動態分配內存,他的緩存是靜態的,所以搞起來就一點要考慮,那么就是把消息機制融合到UIP和OS之間的接口中就可以了,我只這樣搞的,
1:建立三個線程,最高優先級的處理IP數據報文,次高優先級的作為輪訓底層驅動的接口使用,肩帶這輪訓ARP映射表和維護連接,最低優先級無事可做,所以就肩帶的做個定時器用吧,他更新ARP的輪訓時間值,這樣就完整了!我測試結果還是很好的,但是這樣的系統絕對比不上裸奔來的實時,哈哈這個很可笑,是啊操作系統不是萬能的,他需要時間調度,需要時間去傳遞接收,需要時間壓棧出棧,這都是CPU的時間!但是總體來說,操作系統使下層和上層之間的應用變得 簡單明了,所以,如果你的內存足夠大,那么兄弟上系統吧,當然再完美的東西也有缺憾,UIP的UDP功能很是牽強啊!功能也比LWIP弱很多,所以,總得找機會吧LWIP搞搞,繼續吧,誰知道呢?
作者:
xuwei
時間:
2015-6-13 16:29
本人于下午一下午時間移植了一個UIP,修改后,好用了,由于內存不足,所以吧內部的靜態存儲區改成100個字節,這樣對于ram的消耗會大大的降低,滿足我的硬件系統要求,我運行試過了,我的RAM只有4096程序我正好控制在4016字節,正好可以跑起來,ICMP報文正常,TCP連接正常,數據也是正確的!哈哈,好高興!下一步芯片來了之后,開始加入操作系統,那就是小菜一碟了!嘿嘿
oid tcp_wangjunwei_appcall()//我自己的TCP端口
{
if (uip_closed())
{
// USART_OUT(USART1,"uip_closed!\r\n");
closed();
}
if (uip_connected())
{
struct tcp_demo_appstate *s = (struct tcp_demo_appstate *)&uip_conn->appstate;
s->state = STATE_CMD; //指令狀態
s->textlen = 0;
s->textptr = "連接到王均偉的TCP端口上,哈哈哈!掃噶!";
s->textlen = strlen((char *)s->textptr);
senddata();
}
if (uip_acked())
{
acked();
}
if (uip_rexmit() || uip_newdata() || uip_acked() || uip_connected() || uip_poll())
{
struct tcp_demo_appstate *s = (struct tcp_demo_appstate *)&uip_conn->appstate;
s->textptr = uip_appdata; /* 向客戶端發送收到的數據 */
s->textlen = uip_len;
senddata();
}
}
作者:
xuwei
時間:
2015-6-13 16:30
昨天開始搞LWIP的移植,但是不會走怎么跑啊?所以一直在看源碼,終于今晚上突破了LWIP和系統的接口問題,我看著是這樣的:
首先操作系統創建兩個線程,兩個線程里面設置連個堵塞郵箱,一個線程專門接收數據,一個線程專門發送數據,當外部的網絡驅動芯片接收到數據包,那么他就發送一個指針到郵箱中,這時候操作系統輪訓到這個郵箱中的數據,就進入處理,其實他也沒處理,他就是把這個得到的指針放到LWIP棧中去了,讓LWIP的內核處理,另一條是發送,當LWIP要發送數據,就向發送郵箱發送一條郵箱指針,然后被掛起的發送線程被激活,調用底層發送程序發送出去 ,發送完畢馬上掛起再次等待下一次的數據發送,所以這樣就找到了數據收發的接口,這個顯然是操作系統和LWIP和底層硬件之間的數據交換,也就是說LWIP確實是建立在操作系統之上的!他無權操作底層硬件,要通過操作系統的這兩個堵塞線程來實現數據的收發!哎呀,這才是萬里冰山的一個小腳,還有很多問題沒有解決!比如數據怎么被放到地層中的?地層中的數據怎么何時被放到數據結構中?這就寫LWIP分裝的都非常的嚴實,以至于找到他的驅動很難很難!繼續加油吧!
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1