stmmac描述符的结构和初始化
stmmac 描述符(Descriptors)
stmmac的描述符有兩個(gè)個(gè)模式,分別是ring模式和chain模式,根據(jù)特性的不同支持,描述符又有以下3個(gè)形式norm、Alternate 、 Enhanced。下面主要講下ring模式下的Enhanced描述符結(jié)構(gòu),以及比較重要的位。stmmac的收發(fā)的描述符相同位的含義有些差別,所以我們分開分析下描述符的初始化
? 0.描述符幾個(gè)關(guān)鍵要素
-
OWN,用來表示描述符的狀態(tài),相當(dāng)于Intel網(wǎng)卡里的DD位
-
buf地址,指明網(wǎng)卡將收到的數(shù)據(jù)包放到哪里
-
狀態(tài)信息
術(shù)語
OWN:當(dāng)此位置位時(shí),表明這個(gè)描述符是屬于DMA的,DMA可以訪問。在host設(shè)置好接收、發(fā)送描述符后把OWN置位,DMA會(huì)自動(dòng)的把收到的描述符放到描述符指定的地址并把OWN復(fù)位,表示數(shù)據(jù)包以及放到host的內(nèi)存了,此時(shí)host可以進(jìn)行包處理。
ring:是指描述符在內(nèi)存中的排布,ring模式所有的描述符都在連續(xù)的物理內(nèi)存上
chain :是指描述符在內(nèi)存中的排布,chain模式下描述符地址不再連續(xù),下一個(gè)描述符的物理地址由描述符中的DES3指明
Receive Descriptor
接收描述符的結(jié)構(gòu)如下圖。如果沒有開啟extend status和timestamp則只需要關(guān)注DES0~DES3,此時(shí)描述符大小為16Byte
對(duì)于接收描述符的初始化以下步驟是必要的
Transmit Descriptor
發(fā)送描述符的結(jié)構(gòu)如下圖
對(duì)于發(fā)送描述符的初始化只需要將OWN位復(fù)位即可,下面講下要發(fā)包時(shí)對(duì)描述符的初始化
注意
以上填入DES2的物理地址需要是32位的物理地址
總結(jié)
以上是生活随笔為你收集整理的stmmac描述符的结构和初始化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 视觉SLAM十四讲学习记录 第三讲
- 下一篇: vscode代码跳转