嵌入式技术william hill官网
直播中

王秀珍

7年用户 1469经验值
私信 关注
[经验]

Numaker-IoT-M487开发板之emac测评

疫情原因,购买的开发板快递延误很多天才收到,收到后第一次时间做测试。

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

更多回帖

发帖
×
20
完善资料,
赚取积分