硬汉嵌入式论坛

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

[emWin] 内存分配

[复制链接]

2

主题

5

回帖

76

积分

初级会员

积分
76
发表于 2018-3-28 18:11:28 | 显示全部楼层 |阅读模式
在阅读STemWIN提高篇音乐播放器例程时,发现程序中使用了rt_alloc_mem函数来分配内存,有点不懂为什么既然已经用上了FreeRTOS,还要再用自己的内存分配方案呢?直接用pvPortMalloc不行嘛?
捕获.PNG
捕获1.PNG
回复

使用道具 举报

2

主题

5

回帖

76

积分

初级会员

积分
76
 楼主| 发表于 2018-3-28 19:53:06 | 显示全部楼层
想了一下,可能是作者考虑了程序的可移植性吧,用自己的方案,不涉及操作系统,到时候不管裸奔还是换别的OS,都更简单些。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107396
QQ
发表于 2018-3-29 00:29:52 | 显示全部楼层
MrRS 发表于 2018-3-28 19:53
想了一下,可能是作者考虑了程序的可移植性吧,用自己的方案,不涉及操作系统,到时候不管裸奔还是换别的OS ...

不是,是FreeRTOS的只能管理一个,不能管理多个RAM的不同分区。管理多个分区的heap5方式没法用于这里。
回复

使用道具 举报

2

主题

5

回帖

76

积分

初级会员

积分
76
 楼主| 发表于 2018-3-29 21:45:58 | 显示全部楼层
eric2013 发表于 2018-3-29 00:29
不是,是FreeRTOS的只能管理一个,不能管理多个RAM的不同分区。管理多个分区的heap5方式没法用于这里。

heap5在这里不能用?为什么?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107396
QQ
发表于 2018-3-30 03:04:36 | 显示全部楼层
MrRS 发表于 2018-3-29 21:45
heap5在这里不能用?为什么?

heap5是统一管理的,没法分区管理。
回复

使用道具 举报

2

主题

5

回帖

76

积分

初级会员

积分
76
 楼主| 发表于 2018-3-30 21:46:48 | 显示全部楼层
eric2013 发表于 2018-3-30 03:04
heap5是统一管理的,没法分区管理。

还是有点不明白,能再解释一下嘛?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107396
QQ
发表于 2018-3-31 00:24:57 | 显示全部楼层
MrRS 发表于 2018-3-30 21:46
还是有点不明白,能再解释一下嘛?

比如你要配置内部SRAM,CCM RAM以及外部SDRAM三个空间,他们的速度等级不同,而且CCM RAM不支持DMA,如果你使用heap5,会将他们统一设置成一个区域,以后使用给你的重要任务栈配个SDRAM的空间,对性能影响就大了。
回复

使用道具 举报

2

主题

5

回帖

76

积分

初级会员

积分
76
 楼主| 发表于 2018-3-31 12:23:14 | 显示全部楼层
eric2013 发表于 2018-3-31 00:24
比如你要配置内部SRAM,CCM RAM以及外部SDRAM三个空间,他们的速度等级不同,而且CCM RAM不支持DMA,如果 ...

奥,懂了,谢谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-29 22:20 , Processed in 0.186770 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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