UDP 测试 ESP8266 出现不停重刷~~~

marhc_seven
Posts: 44
Joined: Sat Oct 17, 2015 4:49 pm

UDP 测试 ESP8266 出现不停重刷~~~

Postby marhc_seven » Fri Oct 30, 2015 2:53 pm

您好!

我根据 RTOS SDK 进行UDP 例子测试 代码如下:
1. 设置ESP8266 为 SotfAP mode

Code: Select all

void Set_wifi_softAP(void)
{
   struct ip_info info;
   struct softap_config cfg;
   wifi_softap_get_config(&cfg);
   strcpy((char *)cfg.ssid, "ESP8266_Mrtech_RTOS");
   cfg.ssid_len = strlen((char*)cfg.ssid);
   //strcpy((char *)cfg.password, "123456789");// password should be more than 8~63 charater
   //cfg.authmode = AUTH_WPA2_PSK;             // make password mode working
   wifi_softap_set_config_current(&cfg);
   wifi_set_opmode(SOFTAP_MODE);
   
   wifi_softap_dhcps_stop();
   IP4_ADDR(&info.ip, 192, 168, 101, 1);
   IP4_ADDR(&info.gw, 192, 168, 101, 1);
   IP4_ADDR(&info.netmask, 255, 255, 255, 0);
   wifi_set_ip_info(SOFTAP_IF, &info);
   dhcps_lease_test();
   wifi_softap_dhcps_start();
}


2. 新建一个 TestUDPTask 函数

Code: Select all

void TestUPDtask(void *pvParameters)
{
   struct sockaddr_in server_addr, client_addr;
   socklen_t client_len;

   int server_sock;
   char * udp_msg;
   int ret;
   int nNetTimeout = 1000;

   udp_msg = (char *)malloc(UDP_DATA_LEN); //UDP_DATA_LEN = 2048

   //bzero(&server_addr, sizeof(struct sockaddr_in));   /* Zero out structure */
   memset(&server_addr, 0, sizeof(struct sockaddr_in));/* Zero out structure */
   server_addr.sin_family = AF_INET;              /* Internet address family  IPV4 */
   server_addr.sin_addr.s_addr = INADDR_ANY;        /* Any incoming interface */
   server_addr.sin_port = htons(LOCAL_UDP_PORT);   /* Local port =1200*/
   server_addr.sin_len = sizeof(server_addr);

   do{
      server_sock = socket(AF_INET, SOCK_STREAM, 0);/* Create a socket steam type */
      if (server_sock == -1)
      {
         printf("creat a socket fail !!!");
         asm("break 1,1");
      }      
   }while(server_sock == -1);

   printf("creat socket success !!!");

   do{
      ret = bind(server_sock, (struct sockaddr *)(&server_addr), sizeof(struct sockaddr));/* Bind a socket */
      if (ret != 0)
      {
         printf("bind a socket fail !!!");
         asm("break 1,1");
      }   
   } while(ret != 0);

   printf("bind socket success !!!");

   for (;;)
   {
      memset(udp_msg, 0, UDP_DATA_LEN);
      memset(&client_addr, 0, sizeof(client_addr));

      setsockopt(server_sock, SOL_SOCKET, SO_RCVTIMEO,100, sizeof(int));
      client_len = sizeof(struct sockaddr_in);

      ret = recvfrom(server_sock, (uint8 *)udp_msg, UDP_DATA_LEN, 0, (struct sockaddr *)&client_addr, (socklen_t *)client_len);
      //client_addr.sin_port = 1200;
      if (ret > 0){
         printf("ESP8266 UDP task > recv %d Bytes from Port %d %s\n", ret, ntohs(client_addr.sin_port), inet_ntoa(client_addr.sin_addr));
      }
      else{
         printf("ESP8266 UDP task >receive nothing!!");
      }

      sendto(server_sock, (uint8 *)udp_msg, ret, 0, (struct sockaddr *)&client_addr, client_len);
   }

   if (udp_msg){
      free(udp_msg);
      udp_msg = NULL;

   }

   closesocket(server_sock);/* Close socket*/
}


3. 主函数user_init() 中创建Task

Code: Select all

void RAMFUNC user_init(void)
{
#ifdef ESP8266_GDBSTUB
   gdbstub_init();
#endif
   uart_init_new();
   
   Set_wifi_softAP();

   xTaskCreate(TestUPDtask, (signed char *)"TestUDP", 256, NULL, 2, NULL);

}



结果 启动后,串口一直打印 以下信息!!!!!

Code: Select all

d€?炧噑n'済?炷湝渓? c cgn冧c涿{r'沴刲 €?哙弐'g渙?靹溰?刣 b cg'?b靸rso娩噹lg噺驌l筘?鋌?儧倱`貃o?熰莧oo渘?鋵湝躼滌c#ng? b|?{r'沴刲 焸凔熰噑o?靹湝?? #bog?巆靸s{g冹菑db儍n??rson??鋵軠??d`?g??{r'g渙?靹溰??l`?踘|?熰剝{損`蹆泜'銓抈c{b?咪s踓?炧噑n'済弻軠?瀸?ccno媚 #鋬;so沝宭`{ls???$鞆屒d専銊cl刢l`{empty
mode : softAP(5e:cf:7f:07:0d:7d)
dhcp server start:(ip:192.168.101.1,mask:255.255.255.0,gw:192.168.101.1)
add if1
bcn 100
creat socket success !!!bind socket success !!!Fatal exception (9):
epc1=0x40268ff0
epc2=0x00000000
epc3=0x4024c16a
epcvaddr=0x00000001
depc=0x00000000
rtn_add=0x3fff5050

 ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x40100000, len 30576, room 16
tail 0
chksum 0xb0
load 0x3ffe8000, len 1164, room 8
tail 4
chksum 0xd1
load 0x3ffe8490, len 1124, room 4
tail 0
chksum 0x98
csum 0x98
屆諄MEM CHECK FAIL!!!


请问是什么问题!!!!

ESP_Faye
Posts: 1646
Joined: Mon Oct 27, 2014 11:08 am

Re: UDP 测试 ESP8266 出现不停重刷~~~

Postby ESP_Faye » Mon Nov 02, 2015 2:12 pm

您好,

fatal exception 可以参考这个帖子进行查证 http://bbs.espressif.com/viewtopic.php?f=61&t=292

Who is online

Users browsing this forum: No registered users and 27 guests