AXI DMA SG模式下接收資料不連續的問題

2021-09-26 15:52:43 字數 642 閱讀 7875

在除錯axi-dma sg接收鏈路時,發現ps端配置的bd buffer的大小超過pl端配置的packet長度時,在status中讀取的實際在axi-stream中傳送的資料的長度就是乙個packet的長度

如:ps端配置的bd buffer為4096,pl端配置乙個packet的長度為2048,讀取status的值為0x8c000800,control len 為0x1000,0x8c000800表示axi-stream中傳送的長度為0x800,同時包含rxeof/rxsof,表示完整的接收到乙個packet。但是下乙個packet卻並沒有接著在當前bd buffer中存放,而是跳轉到下乙個bd buffer的起始位置開始存放。但為何會出現這種原理尚未得知。

當ps端配置的bd buffer的長度 <= 乙個packet長度時,資料在ddr中存放就是連續的。懷疑可能乙個 bd buffer中只能存放最多乙個packet,即識別到一次rxeof和rxsof,就認為當前bd buffer已滿,跳轉到下乙個bd的buffer中去存放,有待驗證。

winSocket下接收unsigned 資料

1.在除錯windows應用的過程中發現vs自帶的socket介面recv,int recv socket s,char far buf,int len,int flags 傳遞的資料型別是有符號的變數。2.linux伺服器傳送過來無符號資料。當傳送的資料位元組大於127 0x7f 時,就會把無符號...

Linux下接收串列埠資料0x0d變0X0a問題

許多流行的linux串列埠程式設計的版本中都沒對c iflag termios成員變數 這個變數進行有效的設定,這樣傳送ascii碼時沒什麼問題,但傳送二進位制資料時遇到0x0d,0x11和0x13卻會被丟掉。不用說也知道,這幾個肯定是特殊字元,被用作特殊控制了。關掉icrnl和ixon選項即可解決...

4 6 5 接收資料

在向伺服器傳送問候語之後,客戶端呼叫 recvline 函式接收伺服器的應答。recvline 函式的實現與伺服器相似,不同的是沒有對 recv 函式呼叫失敗作立即處理,而是返回 false 如果recvline 函式返回 false 則先呼叫 showerrormsg 函式顯示錯誤資訊,然後客戶端...