疫情原因,购买的开发板快递延误很多天才收到,收到后第一次时间做测试。
emac硬件介绍:
M480是内置标准10/100Mpbs 半双工全双工以太网mac(EMAC),采用RMII接口,减少接口引脚,PHY外置采用IC Plus IP101GR。
emac使用说明
1.) menuconfig 配置→ Hardware Drivers Config → On-chip Peripheral Drivers
-- Enable Ethernet MAC Controller(EMAC) —->
会自动依赖配置好LwIP
pkgs —update
scons —target=mdk5 –s
也可以添加一些工具→ RT-Thread online packages → IoT - internet of things
[] netutils: Networking utilities for RT-Thread —->
可以选择iperf, NTP 等工具.
2.) nutool_pincfg.c引脚配置初始化:
SYS->GPA_MFPL &= ~(SYS_GPA_MFPL_PA7MFP_Msk | SYS_GPA_MFPL_PA6MFP_Msk);
SYS->GPA_MFPL |= (SYS_GPA_MFPL_PA7MFP_EMAC_RMII_CRSDV | SYS_GPA_MFPL_PA6MFP_EMAC_RMII_RXERR);
SYS->GPC_MFPH &= ~(SYS_GPC_MFPH_PC8MFP_Msk);
SYS->GPC_MFPH |= (SYS_GPC_MFPH_PC8MFP_EMAC_RMII_REFCLK);
SYS->GPC_MFPL &= ~(SYS_GPC_MFPL_PC7MFP_Msk | SYS_GPC_MFPL_PC6MFP_Msk);
SYS->GPC_MFPL |= (SYS_GPC_MFPL_PC7MFP_EMAC_RMII_RXD0 | SYS_GPC_MFPL_PC6MFP_EMAC_RMII_RXD1);
SYS->GPE_MFPH &= ~(SYS_GPE_MFPH_PE12MFP_Msk | SYS_GPE_MFPH_PE11MFP_Msk | SYS_GPE_MFPH_PE10MFP_Msk | SYS_GPE_MFPH_PE9MFP_Msk | SYS_GPE_MFPH_PE8MFP_Msk);
SYS->GPE_MFPH |= (SYS_GPE_MFPH_PE12MFP_EMAC_RMII_TXEN | SYS_GPE_MFPH_PE11MFP_EMAC_RMII_TXD1 | SYS_GPE_MFPH_PE10MFP_EMAC_RMII_TXD0 | SYS_GPE_MFPH_PE9MFP_EMAC_RMII_MDIO | SYS_GPE_MFPH_PE8MFP_EMAC_RMII_MDC);
/* Enable high slew rate on all RMII TX output pins */
GPIO_SetSlewCtl(PE, BIT10 | BIT11 | BIT12, GPIO_SLEWCTL_HIGH);
3.) drv_emac.c系统注册
eth_device_init(&nu_emac_dev.eth, dev_name);
注册接口函数,并初始化lwip网络协议。
4.) 应用层也是使用sock来编程。
if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
{
rt_kprintf("Socket error\n");
rt_free(recv_data);
return;
}
EMAC性能指标测试
使用iperf测试性能。在100Mbps局网网内,测试基本上25Mbps左右,测试结果如下:
[I/iperf] iperfd01: 25.1570 Mbps!
[I/iperf] iperfd01: 25.9970 Mbps!
心得体会
开始编译驱动EMAC查看需要打开BSP_USING_EMAC,RT_USING_LWIP。编译出错需要ethernetif.h文件,查找还没有lwIP,如果还需要移植lwIP工作量还不少,仔细阅读rt-thread使用说明还有env工具,可以使用menuconfig来配置, 和linux 一样,需要添加删除模块功能配置一下就可以,简单方便。
M487 rt-thread默认是开启esp8266,添加了EMAC后,有两个网络接口,应用程序默认会使用esp8266,从而无法通过EMAC通讯,暂时先disable esp8266,只留一个EMAC接口就通讯正常,后面有时间查看一下LwIP的路由部分。
原作者:ZQUT_5596