打印
[新唐博主]

【优质评测精选】NuMaker-IIoT-NUC980 测评之 EMAC

[复制链接]
1626|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
21ic小管家|  楼主 | 2022-7-7 13:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AC, IO

NuMaker-IIoT-NUC980
测评之 EMAC
作者:出出啊

测评环境
开发板:NuMaker-IIoT-NUC980 V1.0
开发环境:keil 5.25 + env 1.2.0.7 + NuWriter v1.18
rt-thread:4.0.5 release
测评任务:EMAC

开箱
开箱图片


NUC980 有两个 EMAC 外设,NuMaker-IIoT-NUC980 只使用了 EMAC0。
支持 RMII 接口,收发都有 DMA 和 各自 256 字节的 FIFO。

搭建环境
下载安装 RT-Thread Studio
安装 Stutio 并运行,用个账号登录,无账号先注册。
后面的所有操作都不影响,为什么每次打开软件都要提示这个信息?这个提示的意思是 studio 不能完整正常工作还是能正常工作?我需要必须安装个 git 吗?
创建项目我们选择基于开发板,如果没有安装 NuMaker-IIoT-NUC980 开发板包,选择安装更多。
选择 rt-thread 版本,删掉不需要的版本。
选择 NK-980IOT 开发板包,点击【安装资源包】。
最后,再次创建项目,完成。


项目配置
打开 settings 之后,把所有选项过一遍,取消掉不需要的配置,先精简配置。我只留下和 EMAC GPIO UART 相关的配置,所有其它默认开启的 SPI ADC RTC WDT… 全去掉了。


先跑个最小系统,检查一下系统能不能正常运行,finsh 能不能工作。

启用 EMAC 外设
选用 EMAC0


同时启用 phy 芯片支持。


添加 webclient 包
添加 webclient 后,先编译了一下出现下面这个错误。

./packages/webclient-v2.2.0/src/webclient.o: In function `webclient_resolve_address':D:\RT-ThreadStudio\workspace\nk980iot\Debug/../packages/webclient-v2.2.0/src/webclient.c:221: undefined reference to `rt_strcpy'
太神奇了,rt_strcpy 函数是 #5404 2021/12/22 合并的
BernardXiong merged 1 commit into RT-Thread:master from mysterywolf:kservice on 22 Dec 2021
我下面的版本是 4.0.5 ,RT-Thread v4.0.5 released Latest
@Guozhanxin Guozhanxin released this 29 Dec 2021
2021/12/29 发布的版本竟然没有这个函数的实现了!!!
自己添加 rt_strcpy 的实现。再次编译通过。
测试代码
通过 webclient 下载文件。先在电脑端用 python 启用了一个简易 web 服务。然后在 rt-thread 系统终端里执行下载程序。

static int http_ota_shard_download_handle(char *buffer, int length){    int ret = RT_EOK;    begin_offset += length;    print_progress(begin_offset, file_size);__exit:    rt_free(buffer);    return ret;}static int http_ota_fw_download(const char* uri){    int ret = RT_EOK;    struct webclient_session* session = RT_NULL;    begin_offset = 0;    file_size = 0;    /* create webclient session and set header response size */    session = webclient_session_create(GET_HEADER_BUFSZ);    if (!session)    {        LOG_E("open uri failed.");        ret = -RT_ERROR;        goto __exit;    }    webclient_set_timeout(session, 1000);    /* get the real data length */    webclient_shard_head_function(session, uri, &file_size);    if (file_size == 0)    {        LOG_E("Request file size is 0!");        ret = -RT_ERROR;        goto __exit;    }    else if (file_size < 0)    {        LOG_E("webclient GET request type is chunked.");        ret = -RT_ERROR;        goto __exit;    }    LOG_I("OTA file size is (%d)", file_size);    LOG_I("\033[1A");    /* register the handle function, you can handle data in the function */    webclient_register_shard_position_function(session, http_ota_shard_download_handle);    /* the "memory size" that you can provide in the project and uri */    ret = webclient_shard_position_function(session, uri, begin_offset, file_size, HTTP_OTA_BUFF_LEN);    /* clear the handle function */    webclient_register_shard_position_function(session, RT_NULL);    if (ret == RT_EOK)    {        LOG_I("Download file success.");    }    else    {        LOG_E("Download file failed.");    }__exit:    rt_thread_delay(rt_tick_from_millisecond(5));    if (session != RT_NULL)        webclient_close(session);    begin_offset = 0;    return ret;}

以上是从 web 服务器下载文件的程序。经过多次测试,从1k大小文件开始,到 1.5M 。系统中没有其它多余线程,下载速度情况如下:
开启 RT_DEBUG ,11k/s。关闭所有调试信息,192k/s。

遇到的问题

  • 在使用新唐官方提供的 NonOS 源码测试时发现一个有意思的现象,当两个 EMAC 外设都初始化并且同时设置 LINK UP 会引起 EMAC0 只能被 ping 通,demo 里的 http 服务器访问不到了。去掉 EMAC1 的 LING_UP 标志,EMAC0 才正常工作。目前不知道原因在哪儿。

  • rt-thread 提供的驱动呢,明面上看是支持最多两个网卡设备的,但是 eth_device_init 初始化设备时用的是同一套 ip 地址配置,这样导致两个网卡配置成相同的 ip。这一点儿是 rt-thread 提供的 eth_device_init 函数处理不当,和芯片无关,换做另外一种芯片,如果它也支持双网卡也会面临相同的尴尬。

  • 解决上面这个问题,可能需要修改 struct eth_device 结构体定义,同时需要定义多组 RT_LWIP_IPADDR 了,把静态 IP 配置项挪到启用外设的位置一目了然(DHCP 可能也是和网卡紧密相关的,不是和 lwip 紧密相关的)。



附:测试应用代码
https://gitee.com/thewon/nuc980-emac-test





使用特权

评论回复
沙发
麻花油条| | 2022-7-8 15:21 | 只看该作者
开箱图片是不是没显示出来?

使用特权

评论回复
板凳
海滨消消| | 2022-7-13 16:23 | 只看该作者
很不错的测评贴,楼主优秀

使用特权

评论回复
地板
laocuo1142| | 2022-7-18 10:46 | 只看该作者
非常棒,最近身边用新塘的不多啊,不知道咋回事

使用特权

评论回复
5
duo点| | 2022-8-18 15:09 | 只看该作者
这个时候就是不要用新塘的,台湾货

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:祝大家天天开❤ ///w/// 有问题咨询联系QQ:3326242524

2751

主题

6438

帖子

239

粉丝