EtherCAT之Lan9252除錯筆記

2021-08-09 21:10:54 字數 1238 閱讀 2030

1.介面

完成以後先去讀,0x64暫存器。如果值為0x87654321,則時序okay;否,則修改時序

2.訪問lan9252介面的時候

byte1byte2byte3byte4

資料線add[0+:16]add[16+:16]data[0+:16]data[16+:16]

位址線1組00000000100010000110

位址線2組010000110001110

3.dma流程

1)cpu做狀態機初始化

2) dma寫資料初始化

a) 讀位址0x314;判斷data[31]==1;是則跳轉到狀態b;否則跳轉到狀態c【這一步是為了判斷當前是不是在寫過程資料】

b) 寫位址0x314,data[30]<= 1;【這一步是為了停止當前寫過程資料】

c) 寫位址0x310,data<=;【address <= 0x1400,這是lan9252寫過程資料區的起始位址;length <= 待搬運的資料長度,單位為byte】

d) 寫位址0x314,data[31]<=1;【啟動寫操作】

e) 讀位址0x314,判斷data[0]==0?是,則開始dma資料搬運;否,則停留在這個操作等待可用。【判斷是否有可用空間,如果有,則fifocnt <= data[8+:5]】

3)dma資料搬運狀態

a)傳送第乙個資料,fifocnt <= fifocnt - 1'b1;跳至b

b)判斷fificnt ==0?是,則跳轉到c;否,則跳轉到d

d)傳送下乙個資料,fifocnt <= fifocnt - 1'b1;跳轉到e

e)判斷是否傳送完成;是,則跳轉到f;否則跳轉到b)

f)讀0x310,判斷當前資料是否寫入【僅供測試】

g)讀0x314,data[31]==0?是,則跳轉到h;否,則等到

h)結束傳送

4.dma如果遇到問題排查的順序

a)時序問題;(讀暫存器0x64)

b)流程問題:

i. 確保dma開始的時候,cpu已經完成初始化,從站狀態機==8(僅適合當前工程)

ii.如果dma不成功,dma完成後,讀0x310,看資料寫入狀態

5.除錯lan9252碰到的問題:

a)時序太快(cs持續時間太短;cs間隔時間太短)

b)dma的時候,寫入0x310的資料,位址和長度弄反了

c)dma的時候,用兩個cs寫資料,三個cs讀fifocnt;繼續搬運資料的時候位址沒有改回來

d)搬運長度不夠

Ethercat解析(二)之基礎答疑

答 一方面考慮到核心空間相比於使用者空間函式的延遲時間短且核心空間可直接操控硬體 另一方面,由於主站大多是週期工作,而核心定時器執行週期工作較為精準。ethercat 1.5.2理論上支援任何實時性 rtai,xenomai 或者非實時核心 linux 2.6以上的版本 4.0以下版本 2 ethe...

區域網技術基礎之 LAN交換

多種lan分段方法 區域網技術基礎之區域網分段 我們已經討論過了,現在該仔細研究一下lan中的交換技術。雖然第三層交換目前也有使用,但本文還是集中於傳統的第二層交換技術。二者的不同之處在於第三層交換是基於網路層目的位址 分組,而第二層交換是基於mac位址 幀。在並非很遙遠的過去,使用同軸電纜的10b...

動態規劃9之1014

1 題目編號 1014 2 題目內容 problem description 我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示。input 輸入資料的第一行是乙個整...