硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2428|回复: 6
收起左侧

[STM32H7] STM32H743ZI如何使用heap_5.c

[复制链接]

2

主题

3

回帖

9

积分

新手上路

积分
9
发表于 2019-3-5 21:46:50 | 显示全部楼层 |阅读模式
大家好,
      楼主是初学者,如果描述不专业,还请大家见谅。
      最近开始接触STM32H743ZI开发板,在修改官方的例程时发现,使用FreeRTOS+Lwip,采用大数据包Ping开发板时(例如,Ping xxx.xxx.xxx.xxx -l 5000),或者使用网络进行大数据量的网络包收发时,会因为prvMalloc导致系统崩溃。
      原因可能是分配的内存不够,因此想用Heap_5.c来实现多个内存块的管理与分配。
      尝试了官方介绍的方式,但是程序(Ping不通)无法运行。
      不知道大家有没有类似的情况,还请不吝赐教。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107104
QQ
发表于 2019-3-6 01:41:41 | 显示全部楼层
使用AXI SRAM就行,这个已经512KB,足够用了,除非你的程序设计有问题。

使用heap5的话,这个帖子末尾有使用说明和一个例子链接

https://www.freertos.org/a00111.html
回复

使用道具 举报

28

主题

274

回帖

358

积分

高级会员

积分
358
发表于 2019-3-6 15:05:41 | 显示全部楼层
lwip  不是一包数据  1500字节吗  
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107104
QQ
发表于 2019-3-6 15:09:20 | 显示全部楼层
suozhang 发表于 2019-3-6 15:05
lwip  不是一包数据  1500字节吗

估计楼主是整了个大缓冲,一次性让lwip分包发
回复

使用道具 举报

2

主题

3

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2019-3-6 17:43:42 | 显示全部楼层
硬汉好,确实像您所说的,使用了大缓冲,让Lwip分包发送。

另外,我看到官方的例程一般用的是D2 Domain的SRAM3来作为ETH DMA(0x30040000到0x30047FFF,main.c中的MPU, ethernetif.c),尝试用AXI SRAM(D1 Domain,0x20000000-0x20047FFFF),发现Ping不通。。

能跟您请教下您是怎么配置的AXI SRAM的么?
回复

使用道具 举报

2

主题

3

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2019-3-6 17:53:55 | 显示全部楼层
@硬汉,参考了STM32的官方网站,上面写了:

TX and RX DMA descriptors (defined in ethernetif.c file) should be located in D2 SRAM

地址:https://community.st.com/s/artic ... orking-on-STM32H7x3
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107104
QQ
发表于 2019-3-6 18:27:28 | 显示全部楼层
外乡人 发表于 2019-3-6 17:53
@硬汉,参考了STM32的官方网站,上面写了:

TX and RX DMA descriptors (defined in ethernetif.c file) ...

回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-18 11:35 , Processed in 0.233753 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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