久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2838|回復: 2
打印 上一主題 下一主題
收起左側

操作系統和uip協議棧的接口

[復制鏈接]
跳轉到指定樓層
樓主
ID:82781 發表于 2015-6-13 16:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    這其實也是水到渠成的事,因為UIP協議棧是不需要操作系統支持的,也就是說他可以裸奔,可以覆蓋在系統上面,怎么樣裁減都是可以的,然而,lwip卻不行,第一LWIP的所有數據區都要先分先用,也就是說要給LWIP提供動態分配內存的所有接口和封裝函數,第二,LWIP是消息機制,如果裸奔就需要用戶構建一套消息機制,然而娛樂操作系統這一切就變得似乎簡單了,線程間的通信都可以依靠操作系統提供的時間接口,UIP就不同了,他不需要動態分配內存,他的緩存是靜態的,所以搞起來就一點要考慮,那么就是把消息機制融合到UIP和OS之間的接口中就可以了,我只這樣搞的,
1:建立三個線程,最高優先級的處理IP數據報文,次高優先級的作為輪訓底層驅動的接口使用,肩帶這輪訓ARP映射表和維護連接,最低優先級無事可做,所以就肩帶的做個定時器用吧,他更新ARP的輪訓時間值,這樣就完整了!我測試結果還是很好的,但是這樣的系統絕對比不上裸奔來的實時,哈哈這個很可笑,是啊操作系統不是萬能的,他需要時間調度,需要時間去傳遞接收,需要時間壓棧出棧,這都是CPU的時間!但是總體來說,操作系統使下層和上層之間的應用變得 簡單明了,所以,如果你的內存足夠大,那么兄弟上系統吧,當然再完美的東西也有缺憾,UIP的UDP功能很是牽強啊!功能也比LWIP弱很多,所以,總得找機會吧LWIP搞搞,繼續吧,誰知道呢?

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:82781 發表于 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();
}




}
回復

使用道具 舉報

板凳
ID:82781 發表于 2015-6-13 16:30 | 只看該作者
  昨天開始搞LWIP的移植,但是不會走怎么跑啊?所以一直在看源碼,終于今晚上突破了LWIP和系統的接口問題,我看著是這樣的:
首先操作系統創建兩個線程,兩個線程里面設置連個堵塞郵箱,一個線程專門接收數據,一個線程專門發送數據,當外部的網絡驅動芯片接收到數據包,那么他就發送一個指針到郵箱中,這時候操作系統輪訓到這個郵箱中的數據,就進入處理,其實他也沒處理,他就是把這個得到的指針放到LWIP棧中去了,讓LWIP的內核處理,另一條是發送,當LWIP要發送數據,就向發送郵箱發送一條郵箱指針,然后被掛起的發送線程被激活,調用底層發送程序發送出去 ,發送完畢馬上掛起再次等待下一次的數據發送,所以這樣就找到了數據收發的接口,這個顯然是操作系統和LWIP和底層硬件之間的數據交換,也就是說LWIP確實是建立在操作系統之上的!他無權操作底層硬件,要通過操作系統的這兩個堵塞線程來實現數據的收發!哎呀,這才是萬里冰山的一個小腳,還有很多問題沒有解決!比如數據怎么被放到地層中的?地層中的數據怎么何時被放到數據結構中?這就寫LWIP分裝的都非常的嚴實,以至于找到他的驅動很難很難!繼續加油吧!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 美女爽到呻吟久久久久 | 午夜精品一区二区三区在线视 | 日本久久视频 | 成人h动漫精品一区二区器材 | 亚洲成人自拍 | 国产亚洲成av人片在线观看桃 | 老头搡老女人毛片视频在线看 | 国产 日韩 欧美 制服 另类 | 久久久久久国 | 在线a视频网站 | 欧美精品在欧美一区二区 | 欧美精品电影一区 | 天天操网 | 91在线观看视频 | 日韩精品一区二区三区中文在线 | 成人在线免费电影 | 丁香婷婷综合激情五月色 | 亚洲免费一区 | 色视频网站 | 久久久久国产视频 | 色网在线看 | 欧美h视频 | www.日韩在线 | 欧美精三区欧美精三区 | 色网在线观看 | 免费成人在线网站 | 亚洲人成网亚洲欧洲无码 | 国产精品精品视频一区二区三区 | 狠狠操狠狠操 | 精品一二三区在线观看 | 国产精品综合 | 成人欧美一区二区三区黑人孕妇 | 视频在线亚洲 | k8久久久一区二区三区 | 欧美极品在线 | 久久国产精品一区二区三区 | 精品在线观看一区二区 | 国产日韩久久久久69影院 | 日韩伦理电影免费在线观看 | 911网站大全在线观看 | 91免费版在线 |