搜索
查看: 5404|回复: 6

[已解决] 悬赏500元解决STM32F207 CubeMx FreeRtos Lwip 无法建立多个端口问题

[复制链接]

该用户从未签到

3

主题

15

帖子

0

蝴蝶豆

初级会员

最后登录
2020-11-10
发表于 2018-3-3 12:31:40 | 显示全部楼层 |阅读模式
1ST金币
本帖最后由 waiwai-409857 于 2018-3-4 00:41 编辑

刚刚转入Freertos阵营,就遇到了问题,卡住了,在此悬赏200-500大洋求助。
项目信息:
CPU:STM32F207VC
PHY:KSZ8041NL
协议栈:LWIP
OS:Freertos
当前源码采用STM32CubeMX生产的源码,底层稍微改动,已经完成了硬件功能的调试。
可确保所有硬件没问题,前后台程序能正常运行,网络通信正常,相关功能正常。
QQ截图20180303121033.png

现状:
1. 只能使用netconn_new建议一个连接,建立多个的时候,程序卡死。



已解决:
1. 硬件问题。调试的时候采用的是仿真器给电路板供电,供电电压不够,只开一个连接的时候,能ping通,开多个连接就不行了。外接电源后,开了5个端口都可以ping通。(不理解为什么多开几个socket的任务会导致电压的跌落)

2. 配置问题。电源导致的ping问题解决后,出现无法建立多个连接的问题,解决办法:
修改opt.h配置:
#define MEMP_NUM_RAW_PCB                8                        //4
#define MEMP_NUM_UDP_PCB                8 //4
#define MEMP_NUM_TCP_PCB                8 //5
#define MEMP_NUM_NETBUF                 8//2    这个很关键
#define MEMP_NUM_NETCONN                8//4   这个很关键
注释内容为原有配置




1. mian函数进程

端口.png

需要5个端口,只打开任意一个都能成功,打开2个以上就死机。


2. tcpecho_thread进程


  1. #define TCP_SOCKET_NUM 5
  2. struct netconn *conn[TCP_SOCKET_NUM];
  3. const unsigned short TCP_SOCKET_PORT[TCP_SOCKET_NUM] = {7,4000,4001,4002,4003};

  4. /*-----------------------------------------------------------------------------------*/
  5. void tcpecho_thread(void *arg)
  6. {
  7.   err_t err;
  8.         struct netconn *newconn;
  9.         int id;
  10.         
  11.         id = (int)arg;
  12.         
  13.   LWIP_UNUSED_ARG(arg);
  14.   vTaskDelay(5000);
  15.   /* Create a new connection identifier. */
  16.         conn[id] = netconn_new(NETCONN_TCP);
  17.         err = netconn_bind(conn[id], NULL, TCP_SOCKET_PORT[id]);
  18.         if (err == ERR_OK)
  19.                         netconn_listen(conn[id]);
  20.         
  21.          while (1)
  22.         {
  23.                 /* Grab new connection. */
  24.                 err = netconn_accept(conn[id], &newconn);

  25.                 /* Process the new connection. */
  26.                 if (err == ERR_OK)
  27.                 {
  28.                         struct netbuf *buf;
  29.                         void *data;
  30.                         u16_t len;
  31.         
  32.                         while ((err = netconn_recv(newconn, &buf)) == ERR_OK)
  33.                         {
  34.                                 do
  35.                                 {
  36.                                         netbuf_data(buf, &data, &len);
  37.                                         netconn_write(newconn, data, len, NETCONN_COPY);
  38.                         
  39.                                 }
  40.                                 while (netbuf_next(buf) >= 0);
  41.                         
  42.                                 netbuf_delete(buf);
  43.                         }
  44.                
  45.                         /* Close connection and discard connection identifier. */
  46.                         netconn_close(newconn);
  47.                         netconn_delete(newconn);
  48.                 }
  49.         }
  50. }
复制代码





最佳答案

查看完整内容

LWIP在配置的头文件中有个有关连接数的宏定义,你可以找找
回复

使用道具 举报

该用户从未签到

20

主题

1130

帖子

125

蝴蝶豆

论坛元老

最后登录
2019-5-4
发表于 2018-3-3 12:31:41 | 显示全部楼层
LWIP在配置的头文件中有个有关连接数的宏定义,你可以找找

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

回复

使用道具 举报

该用户从未签到

3

主题

1002

帖子

363

蝴蝶豆

版主

最后登录
2021-4-15
发表于 2018-3-3 13:38:05 | 显示全部楼层
现在的软件技术这么便宜了么?
回复

使用道具 举报

该用户从未签到

3

主题

15

帖子

0

蝴蝶豆

初级会员

最后登录
2020-11-10
 楼主| 发表于 2018-3-3 16:08:31 | 显示全部楼层
MrJiu 发表于 2018-3-3 13:38
现在的软件技术这么便宜了么?

纯属友情指导,不是完整项目外包,完整外包应该在后面加2个0以上,应该是某个地方设置不对,明眼人应该一下子看出问题,帮指导一下而已。欢迎吐槽!
回复

使用道具 举报

该用户从未签到

0

主题

1

帖子

0

蝴蝶豆

新手上路

最后登录
2018-3-5
发表于 2018-3-3 21:56:58 | 显示全部楼层
了解了解
回复

使用道具 举报

该用户从未签到

2

主题

3

帖子

0

蝴蝶豆

新手上路

最后登录
2019-5-15
发表于 2018-3-5 16:42:34 | 显示全部楼层
解决了?
回复

使用道具 举报

该用户从未签到

0

主题

4

帖子

0

蝴蝶豆

初级会员

最后登录
2020-11-3
发表于 2019-3-21 19:07:59 | 显示全部楼层
STM32F207VC和ksz8041nl 用cubemx要怎么设置呀?我的都没法ping通
求教育
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-5-2 05:21 , Processed in 0.181407 second(s), 41 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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