OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4589|回复: 1

STM32F4 lwip和httpd同时使用 httpd快速刷新网页异常

[复制链接]

19

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
211
金钱
211
注册时间
2015-12-6
在线时间
47 小时
发表于 2022-9-20 10:17:34 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 我是520老谢 于 2022-9-21 17:09 编辑

1、平台:STM32F407
2、硬件:  以太网
3、系统:FreeRtos

问题1、:(网上找的一个工程)使用消耗内存的工程,内存不够了,功能都正常
问题2、:使用cubeMx生成的工程,内存余量还比较足,但是同时使用netconn和httpd的时候
             (测试1、httpd2秒刷新一次页面,而且刷新页面变得很慢。和问题1上面的工程,刷新的数据的速度,差距太大了,一个感觉不明显,一个看着刷网页                            以太网的任务就不运行了,其他任务继续运行,http也不正常了)                          
              (测试2、如果不使用httpd刷新页面,单独只有netconn任务,作为客户端往服务器上面发送数据,目前以太网还正常)

说之前:我需要使用以太网,但是不想用到太多的内存,因为我还有好些地方的代码需要使用到内存
             目前情况是这样的,以太网和FreeRtos消耗了太多的ram。这个工程是之前网上找的,功能都正常沿用至今,但是消耗内存非常严重。
             一开始代码还算够用,就凑合着用,用着用着就越来越被动了,到最后实在是没有办法了,
             我试过修改了FreeRTOSConfig.h、lwipopts.h只有部分修改了但是不能修改得太小,修改得太小不是串口有问题,就是以太网又不行了
             最后我使用cubeMx重新生成了一个工程,这个工程蛮好,内存消耗比之前小很多,(工程系统+以太网消耗内存大约40Kb。之前的大约90Kb)
             但是cubeMx生成的工程,还有另外一个问题,就是问题2的情况。所以咨询一下,

mem、memp属于lwip使用heap_4 属于 freeros使用

消耗内存大的工程内存使用情况:接近100K的内存,非常的被动。
2220      14936   app_eth_client.o
23412       6260   bsp_eth.o
1200      19259   drv_st_usart.o
24576       4331   heap_4.o
1024      34017   httpd.o
24595       8605   mem.o
28583      11428   memp.o
1088       6520   mod_malloc.o
1024        992   startup_stm32f407xx.o
最大内存使用100K

使用cubeMx生成的工程内存使用情况:我自己将一些工程的内存加大了,但是余量对比还是很足的。

      最大内存使用41.8K
      1908        396          0         16       4156      15244   app_eth_client.o
      1734         54          0          4       1720      76450   cmsis_os2.o
      1810        100         32          0       1712      19407   drv_st_usart.o
      1944        228          0          4      12520      11373   ethernetif.o
       724         74          0         32      15360       5095   heap_4.o
      4974       1332        154         36       1024      25466   httpd.o
      2656       1098          0         16       1619       9061   mem.o
       816        502        208         52      12427      11476   memp.o
       504         60         12         20       2176       6568   mod_malloc.o
        36          8        392          0       1024        868   startup_stm32f407xx.o
      3444        422          0         60       1220      33244   tasks.o

目前修改方向有两个
1、要么我将之前的工程的内存缩小。
     ---》内存问题,这个内存不是修改.h文件这样就可以的,因为我修改过几个,修改之后要么这里不正常,要么那里不正常的。
            比如修改了memp、mem的堆情况,串口、或者SPI、或者网络不能用,总会出现一些奇奇怪挂的问题。
            但是我不将内存减小,已经没有办法使用内存了
2、要么我将cubuMx工程存在的问题解决。
    ---》以太网和httpd同时使用有问题,且网页刷新特别的卡,同时也还不确定有没有其他问题,目前来看主要是这个问题。
有朋友了解怎么处理的希望告知一下,我先自己调试看看,哪些地方能减少消耗的。
--------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------
我修改了几个地方:
1、mem
2、memp
3、heap_4
4、以太网缓存,最终由于这几个缓存都没有办法缩小,如果缩小了就有一些奇奇怪怪的问题出现
#define ETH_RXBUFNB                    ((uint32_t)8U)       /* 4 Rx buffers of size ETH_RX_BUF_SIZE  */
#define ETH_TXBUFNB                    ((uint32_t)8U)       /* 4 Tx buffers of size ETH_TX_BUF_SIZE  */

测试1、修改freertosconfigTOTAL_HEAP_SIZE   ((size_t)(22*1024))#define configTOTAL_HEAP_SIZE((size_t)(24*1024))串口发送:正常以太网httpd:正常以太网tcp连接:正常SPI:正常但是,只要串口发送数据,以太网就不正常,系统卡主

测试2、MEM_SIZE 从 24减小到20 串口不正常#define MEM_SIZE  (20*1024)//(16*1024) 临时测试使用 SPI已经无法使用     24


测试3、ETH_RXBUFNB、ETH_TXBUFNB较小到7。以太网就无法使用














正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
211
金钱
211
注册时间
2015-12-6
在线时间
47 小时
 楼主| 发表于 2022-9-21 15:58:09 | 显示全部楼层
本帖最后由 我是520老谢 于 2022-9-21 16:20 编辑

目前我使用的是cubeMx编译出来的工程,这样内存消耗的比较少。
网页刷新变慢问题已经解决。

目前还存在1个问题
问题1:当httpd开启一个网页自动刷新的时候,目前刷新时间2秒和tcp连接到服务器同时运行的时候会出现网络线程异常的情况。
            仅网络出现了异常,其他线程运行正常。

        测试方式:现在我把使用内存加大一些再试试。
        效果      : 我加大了一次内存,我觉得问题和内存的情况有关系,因为加大内存之后,出现异常的时间变长了,之前刷新页面不超过10次就会异常。
                         现在刷新一百多次,才会出现一次网络异常。我在这个方向上再试试看,看看有没有什么调试信息之类的。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 05:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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