日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

stmmac描述符的结构和初始化

發(fā)布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stmmac描述符的结构和初始化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

stmmac 描述符(Descriptors)

stmmac的描述符有兩個個模式,分別是ring模式和chain模式,根據(jù)特性的不同支持,描述符又有以下3個形式norm、Alternate 、 Enhanced。下面主要講下ring模式下的Enhanced描述符結(jié)構(gòu),以及比較重要的位。stmmac的收發(fā)的描述符相同位的含義有些差別,所以我們分開分析下描述符的初始化

? 0.描述符幾個關(guān)鍵要素

  • OWN,用來表示描述符的狀態(tài),相當于Intel網(wǎng)卡里的DD位

  • buf地址,指明網(wǎng)卡將收到的數(shù)據(jù)包放到哪里

  • 狀態(tài)信息

  • 術(shù)語

    OWN:當此位置位時,表明這個描述符是屬于DMA的,DMA可以訪問。在host設置好接收、發(fā)送描述符后把OWN置位,DMA會自動的把收到的描述符放到描述符指定的地址并把OWN復位,表示數(shù)據(jù)包以及放到host的內(nèi)存了,此時host可以進行包處理。

    ring:是指描述符在內(nèi)存中的排布,ring模式所有的描述符都在連續(xù)的物理內(nèi)存上

    chain :是指描述符在內(nèi)存中的排布,chain模式下描述符地址不再連續(xù),下一個描述符的物理地址由描述符中的DES3指明

  • Receive Descriptor

    接收描述符的結(jié)構(gòu)如下圖。如果沒有開啟extend status和timestamp則只需要關(guān)注DES0~DES3,此時描述符大小為16Byte

    對于接收描述符的初始化以下步驟是必要的

  • 申請一塊內(nèi)存連續(xù)內(nèi)存內(nèi)存地址要對齊到stmmac的bus wide,內(nèi)存大小為N*32Byte。這塊內(nèi)存用來存放N個接收描述符。
  • 獲取這塊內(nèi)存起始地址的物理地址A。
  • 將物理地址A寫入到DMA的3號寄存器(Receive Descriptor List Address Register)
  • 申請N塊內(nèi)存,并獲得每塊內(nèi)存的起始物理地址,分別填入到每個描述符的RDES2,同時將這塊內(nèi)存的大小寫入到描述符的RDES1[12:0]
  • 把每個填寫好RDES2和RDES1[12:0]描述符的OWN位置位
  • 在填充最后一個描述符時還需要將RDES0的[8]置位,讓網(wǎng)卡知道這是最后一個描述符了,網(wǎng)卡在處理完這個描述符后會自動跳轉(zhuǎn)到第一個去
  • Transmit Descriptor

    發(fā)送描述符的結(jié)構(gòu)如下圖

    對于發(fā)送描述符的初始化只需要將OWN位復位即可,下面講下要發(fā)包時對描述符的初始化

  • 獲取數(shù)據(jù)包起始地址的物理地址,將物理地址填入到TDES2,并將需要發(fā)送的數(shù)據(jù)大小寫入到TDES1[12:0]
  • 如果數(shù)據(jù)包大小小于8K則將TDES0[29]、TDES0[28]置位,這兩位分別是LS(Last Segment)、FS(First Segment)
  • 如果數(shù)據(jù)包大小大于8K則需要填寫使用多個描述符,在最后一個將LS置位
  • 填寫完畢后把OWN位置位
  • 向DMA的1號寄存器寫入任意數(shù),啟動DMA的發(fā)送
  • 注意
    以上填入DES2的物理地址需要是32位的物理地址

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

    總結(jié)

    以上是生活随笔為你收集整理的stmmac描述符的结构和初始化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。