还是关于以太网样例程序的问题

除了修改作为Echo Server的PC的IP地址时,修改的是WLAN而非Ethernet的IP地址,其余操作都和文档一致。按照文档在cmd中转移目录后运行
> python echoserver.py,按键后无反应,python脚本并未退出,只是在tool\py3文件夹中生成了一个文件。

请问工程师,这个可能是因为什么原因?

  • 试一下,把板子运行起来,看看有没有回显数据
  • 作为echo server的电脑修改的是WLAN的IP地址(只有一个RJ45),Python安装正确,防火墙设置正确,在cmd中用cd/d转换目录后运行> python echoserver.py。运行样例程序后在HOST PC的端口助手上显示如下图。


    第一次尝试显示了很多,但是和文档给出的并不一致,没有截图,之后的尝试的显示都如上图所示。

  • 需要修改有线接口的防火墙,也就是连接板子的这个网口的防火墙

  • 非常感谢工程师,让我发现之前对修改IP地址的理解有偏差。

    再次运行样例程序,HOST PC上显示的内容如文件所示。看内容感觉防火墙的设置应该没有问题,但是一直连接失败。烦请工程师不吝赐教。

    个人感觉还是python脚本那里存在问题,因为运行后并没有像文档说的那样自动退出。想知道这个python脚本的作用是什么。

    test.txt
    140 33162 [Echo0] Echo demo failed to connect to echo server 192.168.128.1.
    141 33162 [IP-task] FreeRTOS_closesocket[58032 to c0a88001ip:50000]: buffers 8 socks 0
    142 33312 [Echo0] Connecting to echo server
    143 33312 [Echo0] FreeRTOS_connect: 58043 to c0a88001ip:50000
    144 33312 [Echo0] Socket 58043 -> c0a88001ip:50000 State eCLOSED->eCONNECT_SYN
    145 33312 [IP-task] prvSocketSetMSS: 1460 bytes for c0a88001ip:50000
    146 33312 [IP-task] prvWinScaleFactor: uxRxWinSize 4 MSS 1460 Factor 0
    147 33312 [IP-task] Connect[c0a88001ip:50000]: next timeout 1: 3000 ms
    0 0 [IP-task] prvIPTask started
    1 511 [Tmr Svc] recover retry count = 4.
    2 511 [Tmr Svc] EEPROM(main) hash check...
    3 512 [Tmr Svc] OK
    4 512 [Tmr Svc] EEPROM(mirror) hash check...
    5 513 [Tmr Svc] OK
    6 513 [Tmr Svc] EEPROM(main) hash check...
    7 514 [Tmr Svc] OK
    8 514 [Tmr Svc] EEPROM(mirror) hash check...
    9 515 [Tmr Svc] OK
    10 517 [Tmr Svc] Write code signing certificate...
    11 517 [Tmr Svc] Key provisioning done...
    12 3108 [IP-task] IP Address: 192.168.128.2
    13 3108 [IP-task] Subnet Mask: 255.255.255.0
    14 3108 [IP-task] Gateway Address: 192.168.128.100
    15 3108 [IP-task] DNS Server Address: 192.168.128.200
    17 3208 [IP-task] recover retry count = 4.
    18 3208 [IP-task] EEPROM(main) hash check...
    19 3208 [IP-task] OK
    20 3208 [IP-task] EEPROM(mirror) hash check...
    21 3208 [IP-task] OK
    22 3208 [IP-task] EEPROM(main) hash check...
    23 3208 [IP-task] OK
    24 3208 [IP-task] EEPROM(mirror) hash check...
    25 3208 [IP-task] OK
    26 3209 [Echo0] FreeRTOS_connect: 42484 to c0a88001ip:50000
    27 3209 [Echo0] Socket 42484 -> c0a88001ip:50000 State eCLOSED->eCONNECT_SYN
    30 3710 [IP-task] ARP for c0a88001ip (using c0a88001ip): rc=0 00:00:00 00:00:00
    31 3710 [IP-task] Connect[c0a88001ip:50000]: next timeout 2: 500 ms
    32 4210 [IP-task] ARP for c0a88001ip (using c0a88001ip): rc=0 00:00:00 00:00:00
    33 4210 [IP-task] Connect[c0a88001ip:50000]: next timeout 3: 500 ms
    34 4710 [IP-task] Connect: giving up c0a88001ip:50000
    35 4710 [IP-task] Socket 42484 -> c0a88001ip:50000 State eCONNECT_SYN->eCLOSE_WAIT
    36 5210 [Echo0] Echo demo failed to connect to echo server 192.168.128.1.
    37 5210 [IP-task] FreeRTOS_closesocket[42484 to c0a88001ip:50000]: buffers 8 socks 0
    38 5360 [Echo0] Connecting to echo server
    39 5360 [Echo0] FreeRTOS_connect: 39179 to c0a88001ip:50000
    40 5360 [Echo0] Socket 39179 -> c0a88001ip:50000 State eCLOSED->eCONNECT_SYN
    41 5360 [IP-task] prvSocketSetMSS: 1460 bytes for c0a88001ip:50000
    42 5360 [IP-task] prvWinScaleFactor: uxRxWinSize 4 MSS 1460 Factor 0
    43 5360 [IP-task] Connect[c0a88001ip:50000]: next timeout 1: 3000 ms
    44 7360 [Echo0] Echo demo failed to connect to echo server 192.168.128.1.
    45 7360 [IP-task] FreeRTOS_closesocket[39179 to c0a88001ip:50000]: buffers 8 socks 0
    46 7510 [Echo0] Connecting to echo server
    47 7510 [Echo0] FreeRTOS_connect: 24810 to c0a88001ip:50000
    48 7510 [Echo0] Socket 24810 -> c0a88001ip:50000 State eCLOSED->eCONNECT_SYN
    49 7510 [IP-task] prvSocketSetMSS: 1460 bytes for c0a88001ip:50000
    50 7510 [IP-task] prvWinScaleFactor: uxRxWinSize 4 MSS 1460 Factor 0
    51 7510 [IP-task] Connect[c0a88001ip:50000]: next timeout 1: 3000 ms
    52 9510 [Echo0] Echo demo failed to connect to echo server 192.168.128.1.
    53 9510 [IP-task] FreeRTOS_closesocket[24810 to c0a88001ip:50000]: buffers 8 socks 0
    54 9660 [Echo0] Connecting to echo server
    55 9660 [Echo0] FreeRTOS_connect: 25740 to c0a88001ip:50000
    56 9660 [Echo0] Socket 25740 -> c0a88001ip:50000 State eCLOSED->eCONNECT_SYN
    57 9660 [IP-task] prvSocketSetMSS: 1460 bytes for c0a88001ip:50000
    58 9660 [IP-task] prvWinScaleFactor: uxRxWinSize 4 MSS 1460 Factor 0
    59 9660 [IP-task] Connect[c0a88001ip:50000]: next timeout 1: 3000 ms
    60 11660 [Echo0] Echo demo failed to connect to echo server 192.168.128.1.
    61 11660 [IP-task] FreeRTOS_closesocket[25740 to c0a88001ip:50000]: buffers 8 socks 0
    62 11810 [Echo0] Connecting to echo server
    63 11810 [Echo0] FreeRTOS_connect: 41617 to c0a88001ip:50000
    64 11810 [Echo0] Socket 41617 -> c0a88001ip:50000 State eCLOSED->eCONNECT_SYN
    65 11810 [IP-task] prvSocketSetMSS: 1460 bytes for c0a88001ip:50000
    66 11810 [IP-task] prvWinScaleFactor: uxRxWinSize 4 MSS 1460 Factor 0
    67 11810 [IP-task] Connect[c0a88001ip:50000]: next timeout 1: 3000 ms
    68 13810 [Echo0] Echo demo failed to connect to echo server 192.168.128.1.
    69 13810 [IP-task] FreeRTOS_closesocket[41617 to c0a88001ip:50000]: buffers 8 socks 0
    70 13960 [Echo0] Connecting to echo server
    71 13960 [Echo0] FreeRTOS_connect: 25731 to c0a88001ip:50000
    72 13960 [Echo0] Socket 25731 -> c0a88001ip:50000 State eCLOSED->eCONNECT_SYN
    73 13960 [IP-task] prvSocketSetMSS: 1460 bytes for c0a88001ip:50000
    74 13960 [IP-task] prvWinScaleFactor: uxRxWinSize 4 MSS 1460 Factor 0
    75 13960 [IP-task] Connect[c0a88001ip:50000]: next timeout 1: 3000 ms
    

  • 从你的连接信息上看,是没有连接上计算机的echo server软件(再重新检查配置,或者换个机器试试),我的理解这个pyhton脚本软件实现了echo server的功能,这个echoserver是一个简单的回显程序,如果echo server收到什么数据,就会返回什么数据,主要用来调试看板子上的网络软件收发是否正常。
    /rza2m_ethernet_sample_freertos_gcc/src/aws/demos/common/tcp/aws_tcp_echo_client_single_task.c
    里面的prvEchoClientTask就是这段例程的代码,可以跟踪一下看看卡在哪里,我觉得有很大的可能在计算机的配置上。
  • 感谢工程师的指点。在查看样例程序中包含的文档时,发现了一个疑点:

    设置防火墙,一开始写的是python脚本使用的是TCP端口7。

    但是在新建入站和出站规则时,本地端口却是50000。

    而在rza2m_ethernet_sample_freertos_gcc/src/config_files/FreeRTOSConfig.h中,configTCP_ECHO_CLIENT_PORT又是50000。

    产生这个疑问是因为看到WiFi样例程序中包含的文档中使用的TCP端口是50000。所以我在想会不会是这里的问题。

  • python 程序里面是监听的50000这个端口,你可以看一下,运行python程序后,不要按按键,不要关闭这个python程序,然后再连板子试试。
  • 感谢工程师!昨天没有看到,今天试了一下,连上了!
  • 继续看连接到AWS的MQTTEcho样例程序,又遇到了问题……

    1.之前设置的IP地址是192.168.128.1,

     

    但是后面设置的IP地址变成了192.168.128.1。请问是因为子网掩码的原因吗?

    2.运行MQTTEcho样例程序,在串口助手打印出的调试信息如下:

    串口.txt
    -----------------------------
    R : Show each value of the customizable registers.
    D : All Default Settings.
    >>0 0 [IP-task] prvIPTask started
    1 511 [Tmr Svc] recover retry count = 4.
    2 511 [Tmr Svc] EEPROM(main) hash check...
    3 512 [Tmr Svc] NG
    4 512 [Tmr Svc] EEPROM(mirror) hash check...
    5 513 [Tmr Svc] OK
    6 513 [Tmr Svc] recover main from mirror.
    7 513 [Tmr Svc] write EEPROM(main)...
    8 1448 [Tmr Svc] OK
    9 1448 [Tmr Svc] recover retry count = 5.
    10 1448 [Tmr Svc] EEPROM(main) hash check...
    11 1449 [Tmr Svc] OK
    12 1449 [Tmr Svc] EEPROM(mirror) hash check...
    13 1450 [Tmr Svc] OK
    14 1450 [Tmr Svc] EEPROM(main) hash check...
    15 1451 [Tmr Svc] OK
    54 8532 [MQTTEcho] MQTT echo attempting to connect to a3gquk4t6kvvy2-ats.iot.us-east-2.amazonaws.com.
    55 8633 [MQTT] recover retry count = 4.
    56 8633 [MQTT] EEPROM(main) hash check...
    57 8633 [MQTT] OK
    58 8633 [MQTT] EEPROM(mirror) hash check...
    59 8633 [MQTT] OK
    60 8633 [MQTT] EEPROM(main) hash check...
    61 8633 [MQTT] OK
    62 8633 [MQTT] EEPROM(mirror) hash check...
    63 8633 [MQTT] OK
    64 28635 [MQTT] FreeRTOS_connect: 44794 to 0ip:8883
    65 28635 [MQTT] Socket 44794 -> 0ip:8883 State eCLOSED->eCONNECT_SYN
    66 28635 [IP-task] ARP for 0ip (using c0a88064ip): rc=0 00:00:00 00:00:00
    67 28635 [IP-task] Connect[0ip:8883]: next timeout 1: 500 ms
    68 29135 [IP-task] ARP for 0ip (using c0a88064ip): rc=0 00:00:00 00:00:00
    69 29135 [IP-task] Connect[0ip:8883]: next timeout 2: 500 ms
    70 29635 [IP-task] ARP for 0ip (using c0a88064ip): rc=0 00:00:00 00:00:00
    71 29635 [IP-task] Connect[0ip:8883]: next timeout 3: 500 ms
    72 30135 [IP-task] Connect: giving up 0ip:8883
    73 30135 [IP-task] Socket 44794 -> 0ip:8883 State eCONNECT_SYN->eCLOSE_WAIT
    74 38635 [IP-task] FreeRTOS_closesocket[44794 to 0ip:8883]: buffers 8 socks 0
    75 38635 [MQTTEcho] ERROR:  MQTT echo failed to connect with error 1.
    76 38635 [MQTTEcho] MQTT echo test could not connect to broker.
    77 38635 [MQTTEcho] MQTT echo demo finished.
    78 38635 [MQTTEcho] ----Demo finished----
    

    显示出现了错误1。尝试跟踪了一下,还是没找到原因……

    烦请工程师指点。

  • 要连接AWS的话,首先要按手册创建账号,和配置云,然后保证你的这个A2M板子可以链接到外网。
    可以直接用你的A2M板子连接路由器,然后板子的IP按照路由器的要求去配。
    从提示信息看是板子连不到服务器。