搜索
bottom↓
回复: 60

EK-LM3S8962 以太网速度测试 96Mbps ! (无OS、无协议栈)

[复制链接]

出0入0汤圆

发表于 2010-1-15 13:09:12 | 显示全部楼层 |阅读模式
本来另外一个帖子里已经讲过了,不过还是按捺不住激动要郑重的通知大家一下 ^_^

用免费申请的EK-LM3S8962开发板,写了一个简单的以太网发送速度测试程序,发送的数据是一个固定的UDP报文,循环反复发送,实测PC端网卡占用率 96%,也就是在 96Mbps 左右!

当然这个测试不涉及任何计算,实际应用中是没有意义的,不过可以看出LM的网口效率还是挺高的,如果能用DMA的话就更好了。(8962好像没有DMA?9000系列才有?)

另外,说明一下,这个测试是没有跑协议栈的,更没有操作系统,只是单纯的往网口的FIFO写数据,测试以太网帧的发送速度。目的是为了了解一下器件传输速度的极限,无实际应用意义。



PC端网络占用率 (原文件名:netload.JPG)


Wireshark抓包结果 (原文件名:pak.JPG)

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2010-1-15 13:11:26 | 显示全部楼层
测试代码:略去UDP报文数据部分(太长)

#include "../../../inc/hw_ints.h"
#include "../../../inc/hw_memmap.h"
#include "../../../inc/hw_nvic.h"
#include "../../../inc/hw_types.h"
#include "../../../inc/hw_ethernet.h"
#include "../../../driverlib/sysctl.h"
#include "../../../driverlib/gpio.h"
#include "../../../driverlib/ethernet.h"


static unsigned char nMACAddr[] = {0x00, 0x07, 0x63, 0x04, 0xF9, 0x30, 0x00, 0x00};
static unsigned char nSendData[] = {
/*Length = 1066 - 14 = 1052(0x041c)*/
                        0x1c, 0x04,                       
/*Frame*/
/*0000*/        0x00, 0x14, 0x2a, 0x6c, 0xae, 0xa8, 0x00, 0x07, 0x63, 0x04, 0xf9, 0x30, 0x08, 0x00, 0x45, 0x00,

// 此处略去若干行
// ......
//

/*Pads*/
                        0x00, 0x00//, 0x00, 0x00
};

int main(void)
{
        unsigned long* pS;
        unsigned long nEthClk, ulTemp;
        int i;

        // Set the clocking to run at 50MHz from the PLL.
        SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ);

        // Enable and Reset the Ethernet Controller.
        SysCtlPeripheralEnable(SYSCTL_PERIPH_ETH);
        SysCtlPeripheralReset(SYSCTL_PERIPH_ETH);
       
        // Enable Port F for Ethernet LEDs.
        //  LED0        Bit 3   Output
        //  LED1        Bit 2   Output
        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
        GPIODirModeSet(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3, GPIO_DIR_MODE_HW);
        GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);
       
        // Intialize the Ethernet Controller and disable all Ethernet Controller
        // interrupt sources.
        EthernetIntDisable(ETH_BASE, (ETH_INT_PHY | ETH_INT_MDIO | ETH_INT_RXER | ETH_INT_RXOF | ETH_INT_TX | ETH_INT_TXER | ETH_INT_RX));
        ulTemp = EthernetIntStatus(ETH_BASE, false);
        EthernetIntClear(ETH_BASE, ulTemp);
       
        // Initialize the Ethernet controller for operation
        nEthClk = SysCtlClockGet();
        EthernetInitExpClk(ETH_BASE, nEthClk);

        // Configure the Ethernet controller for normal operation
        // Enable TX Duplex Mode
        // Enable TX Padding
        EthernetConfigSet(ETH_BASE, (ETH_CFG_TX_DPLXEN | ETH_CFG_TX_PADEN | ETH_CFG_TX_CRCEN));

        HWREG(ETH_BASE + MAC_O_THR) = 0x0;

        // Program the MAC Address (01-23-45-67-89-AB)
        EthernetMACAddrSet(ETH_BASE, nMACAddr);

        // Enable the Ethernet controller
        EthernetEnable(ETH_BASE);

        // Send
        while(1)
        {
                // Wait for current packet (if any) to complete.
                while(HWREG(ETH_BASE + MAC_O_TR) & MAC_TR_NEWTX)
                {
                }

                // Copy data to FIFO
                pS = (unsigned long*)nSendData;
                for ( i = 0; i < sizeof(nSendData) / 4; i++ )
                        HWREG(ETH_BASE + MAC_O_DATA) = *pS++;

                // Activate the transmitter
                // HWREG(ETH_BASE + MAC_O_TR) = MAC_TR_NEWTX;
        }
}

出0入0汤圆

发表于 2010-1-15 13:11:33 | 显示全部楼层
关注这个话题

出0入20汤圆

发表于 2010-1-15 13:16:03 | 显示全部楼层
这个片子太厉害了,我们使用9G20,400M的ARM9,平均速度才能达到50M.

出0入0汤圆

 楼主| 发表于 2010-1-15 14:31:41 | 显示全部楼层
用例子StellarisWare\boards\ek-lm3s8962\enet_lwip,写了一小段循环发送UDP的代码替代原来的死循环,实际测试PC端网口资源占用22%,因此可以看出协议的处理所消耗的资源还是蛮大的,TCP没有测试,应该会更慢。

to【3楼】 wenming 老王
    你们9G20测试的时候是通过协议栈来测试吗?
    如果是那样的话会慢很多,毕竟协议栈没有针对器件进行优化

出0入20汤圆

发表于 2010-1-15 14:39:17 | 显示全部楼层
我们用的BSD协议栈.LINUX内核自带的,使用TCP测试4K,小文件.

出0入0汤圆

 楼主| 发表于 2010-1-15 14:58:01 | 显示全部楼层
to 【5楼】 wenming 老王
    Linux下的性能估计跟网卡驱动有很大的关系


附上测试工程,有板子的都可以感受一下,程序中发送的目的MAC地址是我的计算机,大家可以修改一下,改成自己电脑的MAC地址。(测试的电脑由于收到大量的UDP包,速度会变慢!)

以太网速度测试工程MyEthernetourdev_526496.rar(文件大小:59K) (原文件名:MyEthernet.rar)

出0入0汤圆

发表于 2010-1-15 15:00:32 | 显示全部楼层
真厉害

出0入0汤圆

发表于 2010-1-15 15:03:52 | 显示全部楼层
回复【3楼】wenming  老王
这个片子太厉害了,我们使用9G20,400M的ARM9,平均速度才能达到50M.
-----------------------------------------------------------------------

他的测试和你的测试是两样的,

他的是直接往硬件中一直不断的持续写,而你的经过了协议层,一层层上来/下去的。

lm3s上,TCP测试过,
无OS的情况,LwIP的发送速度在3.2MB/s左右,接收速度在800KB/s左右
有OS的情况(RT-Thread),lwIP的发送速度在2.2MB/s左右,接收速度700KB/s左右。

是LM3S6918的片子

出0入0汤圆

发表于 2010-1-28 21:14:30 | 显示全部楼层
回复【楼主位】hugeice 戬峰
-----------------------------------------------------------------------

请问楼主,为什么我用你的项目程序改成自己的MAC地址,结果抓包显示还是发往您的地址呢?

出0入0汤圆

发表于 2010-1-28 21:15:05 | 显示全部楼层
我给您发了个邮件,您看下吧

出0入0汤圆

发表于 2010-1-28 23:27:40 | 显示全部楼层
mark  这些天我也使用8962学习tcp/ip,有时间测试一下

出0入0汤圆

 楼主| 发表于 2010-1-29 16:15:28 | 显示全部楼层
EthernetMACAddrSet(ETH_BASE, nMACAddr); 是设置单片机的MAC地址,也就是源地址,要修改目的MAC地址要改以太网帧头

出0入0汤圆

发表于 2010-1-29 20:24:58 | 显示全部楼层
理论上的100M

出0入0汤圆

 楼主| 发表于 2010-1-31 21:46:27 | 显示全部楼层
LM3S的以太网口的发送FIFO只能容纳一个以太网帧,因此达不到理论上点100M,因为没有发送的时候才能开始向发送FIFO填充一个新的以太帧,而填充是需要时间的,填充的这段时间是没有发送数据的,因此肯定达不到理论上的100M!

为什么就不能把发送FIFO弄两个,或者扩大一倍,采用PingPong方式,那样就能让网口100M全负荷运行了,不解……

接收FIFO可以容纳多帧,因此只要帧小于2K(以太网标准最大帧大小1500字节,但LM3S可以发送2K大小的非标准的帧)是有可能达到100M的接收性能的,不过这个纯属猜想,没有验证,呵呵

出0入0汤圆

发表于 2010-1-31 22:05:17 | 显示全部楼层
我的开发板还没有开工呢?

出0入0汤圆

发表于 2010-1-31 22:19:07 | 显示全部楼层
实际效果会差很多,之前我在8738上用lwip做过,收到pc机发送的tcp包后回传,能做到双向同时10M多.没有dma的支持,速度提升有限,而且cpu没有留下太多的时间给别的处理.看截图:
(原文件名:QQ截图未命名.jpg)
黄线是pc上接受的速度,红线是发送的速度.总速率到了20M+

出10入95汤圆

发表于 2010-1-31 23:00:55 | 显示全部楼层
关注一下

出0入0汤圆

发表于 2010-2-8 01:21:08 | 显示全部楼层
这个板子很火了

出0入0汤圆

发表于 2010-2-8 09:28:05 | 显示全部楼层
mark.

出0入0汤圆

发表于 2010-4-25 00:48:06 | 显示全部楼层
回复【楼主位】hugeice  戬
-----------------------------------------------------------------------

mark

出0入0汤圆

发表于 2010-5-8 17:15:00 | 显示全部楼层
刚刚测试通过;;

移植中需要修改的地方是:

需要修改的地方 (原文件名:ethernet test 中需要修改的部分.jpg)

效果图:

以太网测试 (原文件名:ethernet test.jpg)

最后 如果 板子直接与电脑相连,网线需要用交叉线。。

出0入0汤圆

发表于 2010-5-8 17:38:11 | 显示全部楼层
我也测试过:
1. zlg的LM3Ss8962开发板以及淘宝上买的6916开发板,无操作系统+lwip,一直向PC发UDP包,包大小1500字节,平均速率22Mbps。丢包率<0.3%
2. ucos+lwip,测试条件相同,最好的情况下平均速率3Mbps。

出0入0汤圆

发表于 2010-5-8 18:58:32 | 显示全部楼层
回复【22楼】haeha
我也测试过:
1. zlg的lm3ss8962开发板以及淘宝上买的6916开发板,无操作系统+lwip,一直向pc发udp包,包大小1500字节,平均速率22mbps。丢包率&lt;0.3%
2. ucos+lwip,测试条件相同,最好的情况下平均速率3mbps。
-----------------------------------------------------------------------

haeha 兄弟,能不能共享你的 ucos+lwip程序?

出0入0汤圆

发表于 2010-5-12 15:13:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-7-13 09:00:54 | 显示全部楼层
-----------------------------------------------------------------------
请问楼主,为什么我用你的项目程序改成自己的mac地址,结果抓包显示还是发往您的地址呢?
-----------------------------------------------------------------------

貌似楼主的以太网帧里封装了ip帧,所以ip那部分也需要自己改

出0入0汤圆

发表于 2010-7-13 09:02:13 | 显示全部楼层
我想请问大家,在发送目标mac地址之前 为什么要发送
/*Length = 1066 - 14 = 1052(0x041c)*/
0x1c, 0x04,

这2个字节呢

出0入0汤圆

 楼主| 发表于 2010-7-13 13:15:15 | 显示全部楼层
写入FIFO的头两个字节是该帧数据的长度, 长度不包括以太帧头部, 所以减去14字节. 结果按照主机字节顺序(低字节在前,高字节在后)写入FIFO.  这是LM的芯片的以太网外设的特性, 具体可以看8962的datasheet的以太网部分关于FIFO格式的描述

出0入0汤圆

发表于 2010-7-31 17:58:17 | 显示全部楼层
回复【14楼】hugeice 戬
lm3s的以太网口的发送fifo只能容纳一个以太网帧,因此达不到理论上点100m,因为没有发送的时候才能开始向发送fifo填充一个新的以太帧,而填充是需要时间的,填充的这段时间是没有发送数据的,因此肯定达不到理论上的100m!
为什么就不能把发送fifo弄两个,或者扩大一倍,采用pingpong方式,那样就能让网口100m全负荷运行了,不解……
接收fifo可以容纳多帧,因此只要帧小于2k(以太网标准最大帧大小1500字节,但lm3s可以发送2k大小的非标准的帧)是有可能达到100m的接收性能的,不过这个纯属猜想,没有验证,呵呵
-----------------------------------------------------------------------

2K的接受FIFO,还是太小了。

出0入0汤圆

发表于 2010-7-31 21:22:37 | 显示全部楼层
好像买回来玩一下啊!

出0入0汤圆

发表于 2010-8-2 14:00:13 | 显示全部楼层
请问LZ:

我的电脑IP 为 172.17.109.16, 怎样化为6字节的 IP 地址?

出0入0汤圆

发表于 2010-8-3 07:59:06 | 显示全部楼层
回复【30楼】zhang..yb
请问lz:
我的电脑ip 为 172.17.109.16, 怎样化为6字节的 ip 地址?
-----------------------------------------------------------------------

看一下例程,只要用到以太网实验的例程都有

出0入0汤圆

发表于 2010-8-4 09:54:55 | 显示全部楼层
楼上,找不到呀,可否解释一下,谢谢!

出0入0汤圆

发表于 2010-8-4 13:18:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-2 18:20:34 | 显示全部楼层
回复【30楼】zhang..yb
请问lz:
我的电脑ip 为 172.17.109.16, 怎样化为6字节的 ip 地址?
-----------------------------------------------------------------------

6位的不是IP地址,是MAC地址,也就是网卡的物理地址,WIN+R,然后输入cmd,打开dos窗口,输入ipconfig -all,回车
显示的就是所有网卡的信息,MAC地址就是那个physical address。

出0入0汤圆

发表于 2010-9-2 19:34:38 | 显示全部楼层
最近也在看这方面的,不晓得有os的和没有os的究竟有什么区别的》?

出0入0汤圆

发表于 2010-10-9 14:15:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-18 17:38:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-21 17:25:44 | 显示全部楼层
学习,正在用8962

出0入0汤圆

发表于 2010-11-22 16:53:42 | 显示全部楼层
MARK,刚收到板子,正好要研究

出0入0汤圆

发表于 2010-11-22 17:37:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-7 21:45:06 | 显示全部楼层
我测试过UDP,最快3MBYTES有效数据,发送前后用IO翻转,,每个包1200字节有效数据,连_发10个包,看IO翻转,同时看电脑UDP,没有丢失,当然如果一个包比较小那速度就满了,8个字节的小包也要70us发完,但是1200字节的大包只要400us发完

出0入0汤圆

发表于 2011-7-23 13:47:29 | 显示全部楼层
mark  楼主真牛  学习了

出0入0汤圆

发表于 2011-7-27 14:49:54 | 显示全部楼层
MARK!!!

出0入0汤圆

发表于 2011-9-10 12:06:54 | 显示全部楼层
没操作系统当然快的多。

出0入0汤圆

发表于 2011-9-19 21:28:36 | 显示全部楼层
收藏了~~

出0入0汤圆

发表于 2012-8-13 19:21:37 | 显示全部楼层
楼主厉害,我自己做了一块板子,用了别人做的核心板, 自己布的底板,效果为94M--95M之间,不到96M
同样的程序在EK8962板子上可以达到96M,这是为啥?

出0入0汤圆

发表于 2012-10-10 11:04:37 | 显示全部楼层
学到这了跑一下

出0入0汤圆

发表于 2013-2-19 16:44:16 | 显示全部楼层
没有权限,楼主透漏下QQ联系

出0入0汤圆

发表于 2013-2-19 16:44:40 | 显示全部楼层
急需帮忙,

出0入0汤圆

发表于 2013-2-19 16:45:51 | 显示全部楼层
关于网口无操作系统和上位机之间通讯问题

出0入0汤圆

发表于 2013-2-20 09:20:53 | 显示全部楼层
急等楼主出现

出0入0汤圆

发表于 2013-2-20 11:31:31 | 显示全部楼层
楼主,加我QQ啊:836587669。。。急需帮助

出0入0汤圆

发表于 2013-4-23 09:28:45 | 显示全部楼层
用任务管理器测速靠谱吗

出0入0汤圆

发表于 2013-5-2 15:48:56 | 显示全部楼层
手头正好有个板子,谢谢分享例程。

出0入0汤圆

发表于 2013-8-12 18:29:51 来自手机 | 显示全部楼层
mark……
顶一个…

出0入0汤圆

发表于 2014-3-18 10:15:04 | 显示全部楼层
haeha 发表于 2010-5-8 17:38
我也测试过:
1. zlg的LM3Ss8962开发板以及淘宝上买的6916开发板,无操作系统+lwip,一直向PC发UDP包,包大 ...

速度和丢包率都是怎么测试的呢

出0入0汤圆

发表于 2014-4-16 09:15:12 | 显示全部楼层
  顶一下

出0入0汤圆

发表于 2014-5-30 15:36:52 | 显示全部楼层
顶顶更健康!

出0入0汤圆

发表于 2014-8-3 09:42:14 | 显示全部楼层
顶一下 顶一下

出0入0汤圆

发表于 2015-2-9 11:20:02 | 显示全部楼层
目的是为了了解一下器件传输速度的极限,无实际应用意义
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 05:47

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表