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

標題: 操作系統(tǒng)和uip協(xié)議棧的接口 [打印本頁]

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


作者: xuwei    時間: 2015-6-13 16:29
本人于下午一下午時間移植了一個UIP,修改后,好用了,由于內(nèi)存不足,所以吧內(nèi)部的靜態(tài)存儲區(qū)改成100個字節(jié),這樣對于ram的消耗會大大的降低,滿足我的硬件系統(tǒng)要求,我運行試過了,我的RAM只有4096程序我正好控制在4016字節(jié),正好可以跑起來,ICMP報文正常,TCP連接正常,數(shù)據(jù)也是正確的!哈哈,好高興!下一步芯片來了之后,開始加入操作系統(tǒng),那就是小菜一碟了!嘿嘿
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;              //指令狀態(tài)
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;    /* 向客戶端發(fā)送收到的數(shù)據(jù) */
   s->textlen = uip_len;
  senddata();
}




}

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




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产在线不卡视频 | 成人中文字幕在线观看 | 日韩综合一区 | 欧美激情啪啪 | 欧洲美一区二区三区亚洲 | 欧美日韩在线观看一区二区 | 黄色免费一级片 | 中文字幕超清在线观看 | 午夜精品影院 | 一级片在线观看视频 | 黄色片一级 | 日韩黄网| 精品久久一区二区三区 | 天天操网 | 亚洲在线免费视频 | 一区在线观看 | 九九久久免费视频 | 中文字幕日韩高清 | av不卡在线播放 | 亚洲a级片| 欧美精品网 | 五月激情丁香 | 日韩一区二区三区在线播放 | 国产小视频网站 | 欧美日韩免费一区二区三区 | 欧美视频一区二区三区 | 亚洲综合在线视频 | 黄色大片在线免费观看 | 日韩视频免费 | 亚洲一区在线视频 | 久久爱影视i | 小镇姑娘国语版在线观看免费 | 欧美日韩在线一区 | 久久夜色精品国产欧美乱极品 | 一级片免费网站 | 91福利在线观看 | 精品亚洲一区二区三区 | 亚洲一区二区免费 | www.狠狠干| 在线播放a | 四虎影音 |