0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于DWC_ether_qos的以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-LWIP的ARP模塊介紹

嵌入式USB開(kāi)發(fā) ? 來(lái)源:嵌入式USB開(kāi)發(fā) ? 作者:嵌入式USB開(kāi)發(fā) ? 2023-09-18 09:34 ? 次閱讀

本文轉(zhuǎn)自公眾號(hào)歡迎關(guān)注
https://mp.weixin.qq.com/s/g4WKu5IaF0OVsxqyoIIhnw

一.前言

TCP/IP通訊第一步需要先調(diào)通ARP,否則TCP/IP包都不知道MAC地址要發(fā)給誰(shuí)。這一篇來(lái)基于LWIP的ARP實(shí)現(xiàn)進(jìn)行相關(guān)的分析。

二.ARP協(xié)議回顧

ARP協(xié)議可以參考rfc826

幀格式如下:

硬件類型~目的端協(xié)議地址部分才是ARP協(xié)議部分,其他的為MAC幀頭尾。

總共42字節(jié),注意要+18字節(jié)的填充

這樣包括后面4字節(jié)的CRC,才滿足42+18+4=64字節(jié)的最小幀長(zhǎng)要求。

區(qū)域目的MAC地址DA源MAC地址SA類型長(zhǎng)度Type/len硬件類型Hardware Type協(xié)議類型Protocol Type
大小字節(jié)66222
請(qǐng)求時(shí)一般用FFFFFFFFFFFF廣播,響應(yīng)時(shí)用請(qǐng)求中解析出的對(duì)端的地址。本機(jī)MAC地址0x0806Ethernet為0x0001IP為0x0800
區(qū)域硬件地址長(zhǎng)度Hardware Addr Len協(xié)議地址長(zhǎng)度Prot Addr Len操作碼Opcode發(fā)送端硬件地址Prot Addr Len發(fā)送端協(xié)議地址Sender Protocol Address
大小字節(jié)11264
64請(qǐng)求為1響應(yīng)為2發(fā)送端MAC地址發(fā)送端IP地址
區(qū)域目的端硬件地址Target Hardware Address目的端協(xié)議地址Target Protocol Address填充CRC
大小字節(jié)64184
目的端MAC地址目的端IP地址

以太網(wǎng)幀是通過(guò)MAC地址來(lái)定位發(fā)送者和接收者的,但是TCP/IP協(xié)議則是通過(guò)IP地址來(lái)定位的。協(xié)議層的地址和MAC幀的地址需要一個(gè)映射表,這樣底層才知道對(duì)應(yīng)的協(xié)議地址需要綁定哪個(gè)MAC地址,最終鏈路層看的是MAC地址。

其實(shí)ARP協(xié)議不僅僅是用于IP和MAC地址的解析,實(shí)際它是通用的,可以用于不同地址空間的地址解析,地址的大小也可不同。

使用wireshark可以幫助解析

圖片

圖片

ARP協(xié)議的工作過(guò)程簡(jiǎn)單描述就是,

發(fā)送端開(kāi)始知道IP但是不知道對(duì)應(yīng)的MAC地址,所以先發(fā)廣播包問(wèn),問(wèn)該IP的MAC地址是多少,同時(shí)附帶了字節(jié)IP和MAC地址,

接收端接收到這個(gè)廣播包就可以從中解析發(fā)送端的IP和MAC地址,添加到自己的ARP表格中。如果某個(gè)主機(jī)發(fā)現(xiàn)詢問(wèn)的是自己的MAC地址(IP匹配),則會(huì)響應(yīng)自己的IP和MAC地址。

發(fā)送端接收到響應(yīng)之后,就知道IP地址和MAC地址的對(duì)應(yīng)關(guān)系,存到ARP表中,就可以發(fā)IP包了。

三. LWIP的ARP處理

ARP需要使能宏LWIP_ARP

ARP的處理依賴于定時(shí)器,定時(shí)器前面有分析。

定時(shí)器回調(diào)函數(shù)是etharp_tmr

周期為1S

#define ARP_TMR_INTERVAL 1000

相關(guān)代碼位于

etharp.c/h

ARP表

數(shù)據(jù)結(jié)構(gòu)

表大小ARP_TABLE_SIZE可配置,默認(rèn)是10,可配置可存的ARP條目數(shù)。

struct etharp_entry {

#if ARP_QUEUEING

/** Pointer to queue of pending outgoing packets on this ARP entry. */

struct etharp_q_entry *q;

#else /* ARP_QUEUEING */

/** Pointer to a single pending outgoing packet on this ARP entry. */

struct pbuf *q;

#endif /* ARP_QUEUEING */

ip4_addr_t ipaddr;

struct netif *netif;

struct eth_addr ethaddr;

u16_t ctime;

u8_t state;

};

static struct etharp_entry arp_table[ARP_TABLE_SIZE];

其中使能ARP_QUEUEING則表示如果當(dāng)前還不知道IP對(duì)應(yīng)的MAC地址,可以先暫時(shí)掛起待發(fā)送的包,按照隊(duì)列掛起,如果未配置則只能掛起一個(gè)待發(fā)送的包。

ctime維護(hù)一個(gè)軟定時(shí)器,arp定時(shí)器回調(diào)時(shí)增加1,增加到一定值釋放表項(xiàng)。

在有ARP包IP包更新表項(xiàng)時(shí)清零。

Ipaddr ethaddr對(duì)應(yīng)IP和MAC地址

State維護(hù)一個(gè)狀態(tài)機(jī)

Netif對(duì)應(yīng)的接口

釋放表項(xiàng)****etharp_free_entry

設(shè)置表項(xiàng)狀態(tài)為EMPTY即可,注意如果有掛起的包也需要釋放。

查找表項(xiàng)etharp_find_entry

查找已有的表項(xiàng),或者沒(méi)有則找一個(gè)空閑的位置存新的信息。

如果找不到空閑位置則釋放最早的掛起的表項(xiàng)騰出位置。

更新表項(xiàng)etharp_update_arp_entry

調(diào)用etharp_update_arp_entry查找表項(xiàng),

如果有表項(xiàng)有掛起數(shù)據(jù)包則發(fā)送該掛起的IP包ethernet_output

靜態(tài)添加表項(xiàng)etharp_add_static_entry

需要配置宏ETHARP_SUPPORT_STATIC_ENTRIES

調(diào)用etharp_update_arp_entry手動(dòng)添加表項(xiàng)

靜態(tài)釋放表項(xiàng)etharp_remove_static_entry

需要配置宏ETHARP_SUPPORT_STATIC_ENTRIES

調(diào)用etharp_find_entry查找表項(xiàng)再釋放

清除所有表項(xiàng)etharp_cleanup_netif

遍歷清除etharp_free_entry

查找地址etharp_find_addr

調(diào)用etharp_find_entry,根據(jù)IP地址查找MAC地址

根據(jù)索引查找地址****etharp_get_entry

直接根據(jù)ARP表索引返回對(duì)應(yīng)的表項(xiàng)信息

超時(shí)處理

對(duì)于ARP表項(xiàng),需要有一個(gè)有效時(shí)間,如果長(zhǎng)時(shí)間未有對(duì)應(yīng)的ARP包或者IP包則需要釋放表項(xiàng)。

etharp_tmr

定時(shí)器前面已經(jīng)介紹過(guò),etharp_tmr會(huì)以默認(rèn)1S的間隔調(diào)用。

遍歷所有表項(xiàng)

如果某個(gè)表項(xiàng)超過(guò)ARP_MAXAGE(默認(rèn)300S)沒(méi)有更新時(shí),就會(huì)釋放。

定時(shí)器是在etharp_find_entry,etharp_query, etharp_update_arp_entry時(shí)清零的,也就是說(shuō)超過(guò)300S沒(méi)收收到對(duì)應(yīng)的地址的IP包和ARP包就認(rèn)為超時(shí)需要釋放。

如果表項(xiàng)處于ETHARP_STATE_PENDING狀態(tài)且超過(guò)ARP_MAXAGE(默認(rèn)是5)時(shí)也要釋放表項(xiàng)。即比如一開(kāi)始給某個(gè)IP發(fā)包,但是MAC地址不知道,于是發(fā)了ARP請(qǐng)求包,但是此時(shí)還沒(méi)有收到響應(yīng),所以設(shè)置ARP表項(xiàng)為ETHARP_STATE_PENDING狀態(tài),同時(shí)掛起待發(fā)送的包,等收到ARP響應(yīng)了再發(fā)這個(gè)掛起的包。掛起的超時(shí)時(shí)間就是ARP_MAXAGE,實(shí)際值要根據(jù)etharp_tmr間隔來(lái),間隔是1S則實(shí)際是1x2x5=10S。

這里x2是因?yàn)椤?/p>

如果處于ETHARP_STATE_PENDING狀態(tài)則發(fā)送,ARP請(qǐng)求etharp_request,直到ARP_MAXAGE超時(shí)釋放表項(xiàng)。

如果是以下?tīng)顟B(tài)則間隔1S切換到下一狀態(tài)

ETHARP_STATE_STABLE_REREQUESTING_1->ETHARP_STATE_STABLE_REREQUESTING_2->ETHARP_STATE_STABLE

數(shù)據(jù)流

主動(dòng)廣播

手動(dòng)發(fā)請(qǐng)求etharp_gratuitous

即廣播問(wèn)IP地址是本機(jī)的MAC地址是多少,

為什么這里問(wèn)的是自己的IP不是別人的呢?因?yàn)檫@是自己的IP或者狀態(tài)變了,實(shí)際是廣播一下告訴別人。

修改IP,LINK UP時(shí)會(huì)手動(dòng)發(fā)一次請(qǐng)求,比如如下接口調(diào)用時(shí)

netif_do_set_ipaddr

netif_set_up

netif_set_link_up

ARP包輸入處理

etharp_input

根據(jù)收到的ARP包,不管是請(qǐng)求還是響應(yīng)包,都可以從源IP地址和源MAC地址獲取信息,更新ARP表。比如ARP廣播請(qǐng)求哪怕不是發(fā)給自己的也可以知道網(wǎng)絡(luò)上有源IP地址和源MAC的設(shè)備,可以更新ARP表,下次如果要給這個(gè)IP發(fā)包就可以直接發(fā),注意如果源IP地址不是單播地址也不處理。如是請(qǐng)求自己的ARP包就進(jìn)行響應(yīng)。

圖片

發(fā)包

etharp_output->

etharp_output_to_arp_index

在IP包上添加MAC地址,

相應(yīng)的接口直接查看源碼

etharp_query

etharp_raw

etharp_request_dst

etharp_request

ACD檢測(cè)

沖突地址檢測(cè)ACD

存在多個(gè)主機(jī)使用同一IP地址的問(wèn)題,在RFC5227中定義了ACD的概念,其中定義了兩種ARP報(bào)文:ARP Probe和ARP Announcement。ARP Probe用于探測(cè)當(dāng)前廣播域是否有其他主機(jī)使用某個(gè)IP地址,ARP Probe報(bào)文的發(fā)送者IP地址字段是全0,這是為了避免ARP污染(因?yàn)锳RP請(qǐng)求報(bào)文會(huì)在廣播域內(nèi)廣播到每個(gè)主機(jī)上,所以主機(jī)收到帶發(fā)送者IP地址的ARP報(bào)文后都會(huì)創(chuàng)建緩存表項(xiàng),太多ARP報(bào)文會(huì)造成域內(nèi)主機(jī)上的緩存浪費(fèi))。而前面代碼中可以看出對(duì)于發(fā)送端即源IP地址為0的并不會(huì)更新到緩存。

即etharp_update_arp_entry的

如下處理ip4_addr_isany(ipaddr)

/* non-unicast address? */


if (ip4_addr_isany(ipaddr) ||


    ip4_addr_isbroadcast(ipaddr, netif) ||


    ip4_addr_ismulticast(ipaddr)) {


  LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_update_arp_entry: will not add non-unicast IP address to ARP cachen"));


  return ERR_ARG;


}

ARP Announcement報(bào)文用于通告域內(nèi)主機(jī)自己的IP地址和MAC地址,特征是其目標(biāo)硬件地址字段全0,該報(bào)文不希望某個(gè)特定的主機(jī)回應(yīng),只需要域內(nèi)主機(jī)創(chuàng)建起ARP表項(xiàng)即可。

也是對(duì)應(yīng)上述代碼的處理。

需要使能宏LWIP_ACD

對(duì)應(yīng)兩個(gè)接口

etharp_acd_probe

etharp_acd_announce

其他代碼位于acd.c中

四.調(diào)試

#define ETHARP_DEBUG LWIP_DBG_ON 使能調(diào)試打印

ping一下設(shè)備可以看到打印如下(這里的printf不支持某些格式所以一些打印不正常)

可以借助wireshark抓包分析。

ethernet_input: dest:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx, src:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx, type:%hx


etharp_find_entry: found empty entry 0


etharp_find_entry: selecting empty entry 0


etharp_request: sending ARP request.


etharp_raw: sending raw ARP packet.


ethernet_output: sending packet 0x28214a18


etharp_query: queued packet 0x28214ae8 on ARP entry %hu


ethernet_input: dest:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx, src:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx, type:%hx


etharp_update_arp_entry: %hu.%hu.%hu.%hu - %02hx:%02hx:%02hx:%02hx:%02hx:%02hx


etharp_find_entry: found matching entry 0


etharp_update_arp_entry: updating stable entry %hd


ethernet_output: sending packet 0x28214ae8


etharp_input: incoming ARP reply


etharp_timer


ethernet_input: dest:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx, src:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx, type:%hx


ethernet_output: sending packet 0x28214ae8


etharp_timer


etharp_timer


ethernet_input: dest:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx, src:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx, type:%hx


ethernet_output: sending packet 0x28214ae8


etharp_timer


ct: dest:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx, src:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx, type:%hx


ethernet_output: sending packet 0x28214ae8


etharp_timer


ethernet_input: dest:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx, src:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx, type:%hx


etharp_update_arp_entry: %hu.%hu.%hu.%hu - %02hx:%02hx:%02hx:%02hx:%02hx:%02hx


etharp_find_entry: found matching entry 0


etharp_update_arp_entry: updating stable entry %hd


etharp_input: incoming ARP request


etharp_raw: sending raw ARP packet.


ethernet_output: sending packet 0x28214a18


etharp_timer


etharp_timer


etharp_timer


etharp_timer


etharp_timer


etharp_timer

五.總結(jié)

主要了解ARP表項(xiàng)的更新,以及超時(shí)處理。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 以太網(wǎng)
    +關(guān)注

    關(guān)注

    40

    文章

    5288

    瀏覽量

    169653
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1324

    瀏覽量

    78756
  • ARP
    ARP
    +關(guān)注

    關(guān)注

    0

    文章

    50

    瀏覽量

    14706
  • LwIP
    +關(guān)注

    關(guān)注

    2

    文章

    84

    瀏覽量

    26932
  • 驅(qū)動(dòng)開(kāi)發(fā)

    關(guān)注

    0

    文章

    130

    瀏覽量

    12036
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-MAC幀格式介紹

    本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注 基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-MAC幀格式介紹 (qq.com) 一.前言 ? 在
    的頭像 發(fā)表于 08-30 09:23 ?1898次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-MAC幀格式<b class='flag-5'>介紹</b>

    基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-MDIO驅(qū)動(dòng)編寫(xiě)與測(cè)試

    本文轉(zhuǎn)自公眾號(hào)歡迎關(guān)注 基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-MDIO驅(qū)動(dòng)編寫(xiě)與測(cè)試 一.前言
    的頭像 發(fā)表于 08-30 09:37 ?3277次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-MDIO<b class='flag-5'>驅(qū)動(dòng)</b>編寫(xiě)與測(cè)試

    基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-描述符鏈表介紹

    本文轉(zhuǎn)自公眾號(hào)歡迎關(guān)注 一.描述符概述 1.0 前言 對(duì)于DWC Ethernet QoS驅(qū)動(dòng)的編寫(xiě)來(lái)說(shuō),初始化完成之后,核心操作就是DMA的描述符鏈表配置(linked list
    的頭像 發(fā)表于 08-30 09:39 ?3894次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-描述符鏈表<b class='flag-5'>介紹</b>

    基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-數(shù)據(jù)流驗(yàn)證過(guò)程

    轉(zhuǎn)自公眾號(hào)歡迎關(guān)注 https://mp.weixin.qq.com/s/klrHhaLMM_0W3FGVwHXFkA 基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-數(shù)據(jù)流驗(yàn)證過(guò)程
    的頭像 發(fā)表于 08-31 08:41 ?1649次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-數(shù)據(jù)流驗(yàn)證過(guò)程

    基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-收發(fā)驅(qū)動(dòng)編寫(xiě)與調(diào)試

    本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注 基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-收發(fā)驅(qū)動(dòng)編寫(xiě)與調(diào)試 (qq.com) https://mp.wei
    的頭像 發(fā)表于 09-05 08:47 ?1918次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-收發(fā)<b class='flag-5'>驅(qū)動(dòng)</b>編寫(xiě)與調(diào)試

    基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-無(wú)OS環(huán)境移植LWIP

    本文轉(zhuǎn)自公眾號(hào)歡迎關(guān)注 基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-無(wú)OS環(huán)境移植LWIP (qq.com) https://mp.we
    的頭像 發(fā)表于 09-06 08:40 ?1297次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-無(wú)OS環(huán)境移植<b class='flag-5'>LWIP</b>

    基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-LWIP的內(nèi)存池介紹

    本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注 https://mp.weixin.qq.com/s/mBoGSf_u9edFF01U_OZT9g 一.前言 lwIP為基礎(chǔ)結(jié)構(gòu)提供了專用的內(nèi)存池管理,比如netconn
    的頭像 發(fā)表于 09-07 08:45 ?1340次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-<b class='flag-5'>LWIP</b>的內(nèi)存池<b class='flag-5'>介紹</b>

    基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-LWIP的堆管理介紹

    本文轉(zhuǎn)自公眾號(hào)歡迎關(guān)注 基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-LWIP的堆管理介紹 (
    的頭像 發(fā)表于 09-08 08:40 ?1031次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-<b class='flag-5'>LWIP</b>的堆管理<b class='flag-5'>介紹</b>

    基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-LWIP的堆(內(nèi)存池)未對(duì)齊導(dǎo)致問(wèn)題的案例分享

    本文轉(zhuǎn)自公眾號(hào)歡迎關(guān)注 https://mp.weixin.qq.com/s/ErIa2ss2YZLGYbSwoJEzog 一.?前言 內(nèi)存未對(duì)齊訪問(wèn)問(wèn)題這個(gè)已經(jīng)是老生常談的問(wèn)題了, 由于LWIP
    的頭像 發(fā)表于 09-09 08:44 ?1521次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-<b class='flag-5'>LWIP</b>的堆(內(nèi)存池)未對(duì)齊導(dǎo)致問(wèn)題的案例分享

    基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-RTOS環(huán)境移植LWIP與性能測(cè)試

    本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注 基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-RTOS環(huán)境移植LWIP與性能測(cè)試 (qq.com) https:
    的頭像 發(fā)表于 09-11 11:20 ?1684次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-RTOS環(huán)境移植<b class='flag-5'>LWIP</b>與性能測(cè)試

    基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-LWIP在PC上進(jìn)行開(kāi)發(fā)調(diào)試

    本文轉(zhuǎn)自公眾號(hào)歡迎關(guān)注 基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-LWIP在PC上進(jìn)行開(kāi)發(fā)
    的頭像 發(fā)表于 09-11 08:40 ?1673次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-<b class='flag-5'>LWIP</b>在PC上進(jìn)行<b class='flag-5'>開(kāi)發(fā)</b>調(diào)試

    基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-LWIP的定時(shí)器模塊詳解

    一. 前言 LWIP的定時(shí)器模塊,實(shí)現(xiàn)了通用的軟件定時(shí)器,用于內(nèi)部的周期事件處理,比如arp,tcp的超時(shí)等,用戶也可以使用。這一篇來(lái)分析該模塊的實(shí)現(xiàn)。 二.代碼分析 2.1源碼 源碼
    的頭像 發(fā)表于 09-18 09:33 ?1360次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-<b class='flag-5'>LWIP</b>的定時(shí)器<b class='flag-5'>模塊</b>詳解

    基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-LWIP的ICMP模塊介紹與PING收發(fā)測(cè)

    本文轉(zhuǎn)自公眾號(hào)歡迎關(guān)注 https://mp.weixin.qq.com/s/6MTNop3zBKdQ-gabbWo63Q 一. 前言 ICMP即Internet Control Message Protocol因特網(wǎng)控制消息協(xié)議。 ICMP是網(wǎng)絡(luò)層協(xié)議,IP不可分割的一部分。 ICMP用于報(bào)告數(shù)據(jù)報(bào)處理中的錯(cuò)誤,比如以下情況下時(shí)發(fā)送ICMP消息:當(dāng)數(shù)據(jù)報(bào)無(wú)法到達(dá)其目的地時(shí),當(dāng)網(wǎng)關(guān)沒(méi)有轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)的緩沖能力時(shí),以及當(dāng)網(wǎng)關(guān)可以指示主機(jī)在較短的路由上發(fā)送數(shù)據(jù)時(shí)。 互聯(lián)網(wǎng)協(xié)議的設(shè)計(jì)并不是絕對(duì)可靠的。ICMP這些控制消息的目的是提供有關(guān)通信環(huán)境中問(wèn)題的反饋
    的頭像 發(fā)表于 09-18 17:51 ?1599次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-<b class='flag-5'>LWIP</b>的ICMP<b class='flag-5'>模塊</b><b class='flag-5'>介紹</b>與PING收發(fā)測(cè)

    設(shè)計(jì)軟件核心以太網(wǎng)服務(wù)質(zhì)量數(shù)據(jù)手冊(cè)免費(fèi)下載

    本文描述Synopsys設(shè)計(jì)軟件核心以太網(wǎng)服務(wù)質(zhì)量DWC以太網(wǎng)QoS核心5.10A。DWC以太網(wǎng)
    發(fā)表于 10-23 08:00 ?16次下載
    設(shè)計(jì)軟件核心<b class='flag-5'>以太網(wǎng)</b>服務(wù)質(zhì)量數(shù)據(jù)手冊(cè)免費(fèi)下載

    基于DWC_ether_qos以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-軟復(fù)位介紹與問(wèn)題案例

    一般模塊都會(huì)有軟復(fù)位的功能,軟復(fù)位在驅(qū)動(dòng)編寫(xiě)中很重要。一般初始化時(shí)執(zhí)行軟復(fù)位使得模塊進(jìn)入確定的初始狀態(tài)以提高可靠性,異常時(shí)也可以重新初始化來(lái)恢復(fù),所以軟復(fù)位在驅(qū)動(dòng)中一般是必須要做的動(dòng)作
    的頭像 發(fā)表于 09-02 09:17 ?1291次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>-軟復(fù)位<b class='flag-5'>介紹</b>與問(wèn)題案例