EBAZ4205礦板的以太網通信解析2

在上篇文章中,EBAZ4205礦板的以太網通信解析,已經分析過了礦板的以太網硬件方案,礦板的以太網是掛在 PL 端的。畢竟 EBAZ4205 用的是 ZYNQ 芯片,ARM 那邊肯定會需要用到以太網,而今天這篇文章,要解決的問題就是怎麼把掛在 PL 端的以太網提供給 PS 端進行使用。
本篇文章中 Vitis 使用的是自帶的 LwIP Echo Sever 例程,咱們先看下效果圖。
 
 
 
效果已經看到了,那接下來就詳細的說下怎麼實現的。具體的實現過程也不復雜,可以說都不用自己寫代碼,只需要調用 ZYNQ 裏面已有的 IP 就可以了。
一、在 Vivado 中創建相關工程
 
先來說 ZYNQ IP 的配置。
 
 
 
ZYNQ IP 裏一定記得按照上面的配置進行選擇,不然是無法正常測試的。
另外,大家還可以看到 Block Design 中還有兩種 IP ,一個是叫 xlconcat,另一個是 ila 。xlconcat 的作用是將 ZYNQ IP 的 8 bit 數據顯式的連接成 4 bit ,其原因咱們在上篇文章中已經分析過,EBAZ4205 的 PHY 芯片數據位寬只有 4bit,所以咱們也需要更改。
ila 這個 IP 不是必須的,這個只是我當時用來調試確認某些信號的。大家如果是自己搭建工程的話,不需要添加。
各個 IP 間的連線,大家可以參考前面的 Block Design 視圖。
大家看到 ZYNQ IP 上以太網接口的名字中有 GMII,名字中帶有 “G” ,意味着是千兆以太網的一個接口,而 EBAZ4205 用的是百兆,他們之間確定能正常通信嗎?
剛開始的時候,我也有這個疑問,由於擔心 ZYNQ 不能直接使用百兆網 MII 這個接口,一直想着將 MII 轉成 GMII,後面看 ZYNQ 的手冊,發現可以直接用,所以大家不用有這個顧慮。
 
二、Vitis 工程創建
 
在創建好的 Vitis 工程中,我這邊是需要對 Lwip 進行設置,將其直接設置爲百兆的速率。它的默認配置是進行自動協商,但在我這邊進行試驗的時候,自動協商不成功,所以我直接將其設置爲百兆。
配置步驟如下:
 
 
配置好之後,直接點擊 OK。
還有一個點,需要在例程中修改,在 main.c 文件添加
#define LWIP_DHCP 0
當然這一步,也可以直接在對應的頭文件中直接改給這個宏定義。
 
LWIP_DHCP定義爲 0 ,這個是在實驗中不斷調試得出來的結果,它在相應的頭文件中是將其設置爲了 1 。但是在 LWIP_DHCP定義爲 1 的情況下,這個程序運行不下去。
這個現象只是在我這邊出現,具體是否有共性,還不確定。理論上這些例程都是可以直接用的,不存在說需要去改哪些地方。
這些都改好了之後,Ctrl + B 對工程進行編譯。連接好硬件,編譯好後,進行下載,全速運行。
後續大家就可以在嘗試使用網絡調試助手或者是 PING 命令進行測試了。
同樣的,我也會將這個工程上傳到網盤歸類,另外也會將用到的網絡調試助手傳到同一個鏈接中的【工具】這個文件夾下。大家可以進行下載。
 
這個分享鏈接經常失效,若出現失效,大家可以加我私人微信,我單獨發鏈接過來。
以太網可以用了之後,後面其實能做的東西就很多了,比如做一個網絡的視頻傳輸,礦板採集視頻,傳給 PC 端的上位機。或者是進行遠程更新,這個其實在很多產品裏也有類似的功能。
以太網相關的內容,就更新到這,後面會開始寫 u-boot、系統移植相關的內容了。說真的,ZYNQ 涉及到的內容是非常多的,我現在也沒有一個詳細的計劃去寫什麼內容,後面寫完 u-boot 和系統移植相關的,就是想自己用礦板在做什麼開發,就寫什麼文章了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章