ZYNQ使用88E1510 PHY晶元的驅動程式

2022-09-30 17:36:15 字數 2280 閱讀 2751

sdk v2014.4

phy 88e1510

pl端乙太網,自協商

standalone應用程式

pl端設計,略。

根據pl端生成的hdf,新建專案,採用官方lwip echo server例程。發現執行結果為

-----lwip tcp echo server ------

tcp packets sent to port 6001 will be echoed back

auto-negotiated link speed: 69073

很明顯不對。

1、除錯發現執行到 xaxiemacif_physpeed.c檔案中的get_ieee_phy_speed()函式時,phy_model = 464 = 0x1d0,不屬於例程自帶的以下兩個型號:

if (phy_identifier == marvel_phy_identifier)  else if (phy_model == marvel_phy_88e1111_model) 

}

2、所以加入該型號的驅動函式:

#define marvel_phy_88e1510_model  				0x1d0

unsigned get_phy_speed_88e1510(xaxiethernet *xaxiemacp, u32 phy_addr)

xil_printf("waiting for phy to complete autonegotiation.\r\n");

xaxiethernet_phyread(xaxiemacp, phy_addr, ieee_status_reg_offset, &status);

while ( !(status & ieee_stat_autonegotiate_complete) )

xaxiethernet_phyread(xaxiemacp, phy_addr, ieee_status_reg_offset, &status);

} xil_printf("autonegotiation complete \r\n");

xaxiethernet_phyread(xaxiemacp, phy_addr, ieee_specific_status_reg, &partner_capabilities);

if ( ((partner_capabilities >> 14) & 3) == 2)/* 1000mbps */

return 1000;

else if ( ((partner_capabilities >> 14) & 3) == 1)/* 100mbps */

return 100;

else /* 10mbps */

return 10;

}

3、然後將 get_ieee_phy_speed()函式改為:

if (phy_identifier == marvel_phy_identifier)  else if (phy_model == marvel_phy_88e1111_model) 

//新加

else if (phy_model == marvel_phy_88e1510_model)

}

4、編譯執行結果正確:

-----lwip tcp echo server ------

tcp packets sent to port 7 will be echoed back

in get_phy_speed_88e1510.

waiting for phy to complete autonegotiation.

autonegotiation complete

auto-negotiated link speed: 1000

board ip: 192.168.1.10

netmask : 255.255.255.0

gateway : 192.168.1.1

tcp echo server started @ port 7

5、官方例程是回顯網口資料,即在網口輸入什麼就輸出什麼,如果想在串列埠也輸出,可以改下recv_callback()函式:

if (tcp_sndbuf(tpcb) > p->len)  else

xil_printf("no space in tcp_sndbuf\n\r");

ZYNQ 使用EMIO點亮LED

硬體 xilinx zynq 7000 soc zc706 版本 vivado2015.4 目的 同時閃爍3個燈。點亮分為ps和pl兩部分。pl屬於硬體連線。gpio 0 tri io在.v檔案裡生成,注意不是gpio 0 管腳號package pin從datasheet中獲取 iostandard...

zynq中mgtx應用 ZYNQ中斷體系

arm中斷體系 01 arm體系中,在儲存位址的低位,固化了乙個32位元組的硬體中斷向量表。異常中斷發生時,程式計數器pc所指的位置不同,異常中斷就不同。中斷結束後,中斷不同,返回位址也不同。但是,對於系統復位中斷,不需要返回,因為整個應用系統就是從復位中斷中開始的。快速中斷請求 外部引腳的快速中斷...

ZYNQ中斷實驗

程式中編寫了 3 個函式,乙個是 main 主函式,乙個是中斷建立函式,另乙個是中斷呼叫 函式。首先在 main 函式中初始化定時器 timer,指定 timer 的裝置號為 xpar xscutimer 0 device id,此裝置號在 xparameters.h 的標頭檔案中定義了的。再設定定...