硬汉嵌入式论坛

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

[RTOS] 成功将RTX5的动态内存管理独立出来,在H7的五个分区同时使用测试成功,支持使用率统计,需要的拿去用于RT1052

  [复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2018-4-9 03:22:42 | 显示全部楼层 |阅读模式
例程下载:https://forum.anfulai.cn/forum.php?mod=viewthread&tid=86087

适合用于MP3解码,JPEG解码,cJSON,矢量字库等需要随意申请动态内存大小的场合。


空间分配:
/* AXI SRAM, D1域名, 128KB */
mem_head_t *AXISRAMUsed;
uint64_t AppMallocAXISRAM[128*1024/8];

/* SRAM1, D2域, 128KB */
mem_head_t *SRAM1Used;
uint64_t AppMallocSRAM1[128*1024/8]__attribute__((at(0x30000000)));

/* SRAM2, D2域, 128KB */
mem_head_t *SRAM2Used;
uint64_t AppMallocSRAM2[128*1024/8]__attribute__((at(0x30020000)));

/* DTCM, 128KB */
mem_head_t *DTCMUsed;
uint64_t AppMallocDTCM[128*1024/8]__attribute__((at(0x20000000)));

初始化:
/* 初始化动态内存空间 */
osRtxMemoryInit(AppMallocAXISRAM, 128*1024);
osRtxMemoryInit(AppMallocSRAM1, 128*1024);
osRtxMemoryInit(AppMallocSRAM2, 128*1024);
osRtxMemoryInit(AppMallocDTCM, 128*1024);

AXI SRAM(申请三次,释放三次,释放完毕后会固定占用16字节):


SRAM1(同上)


SRAM2(同上)


DTCM(同上)



移植仅需要rtx_lib.h和rtx_memory.c文件,可用于任何其它CM内核。




回复

使用道具 举报

59

主题

674

回帖

856

积分

金牌会员

积分
856
发表于 2018-4-9 08:12:42 | 显示全部楼层
硬汉哥,你不睡觉啊,这帖子几点还发呢
回复

使用道具 举报

20

主题

249

回帖

309

积分

高级会员

积分
309
发表于 2018-4-9 09:08:01 | 显示全部楼层
硬汉哥注意身体啊,,
谢谢分享,有机会试试

请问硬汉哥哪里有uC/fs的源码没?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2018-4-9 10:38:37 | 显示全部楼层
小狐狸 发表于 2018-4-9 09:08
硬汉哥注意身体啊,,
谢谢分享,有机会试试

以个人名义或者公司名义申请Micrium的创客,会有源码的。
回复

使用道具 举报

20

主题

249

回帖

309

积分

高级会员

积分
309
发表于 2018-4-9 10:51:55 | 显示全部楼层
eric2013 发表于 2018-4-9 10:38
以个人名义或者公司名义申请Micrium的创客,会有源码的。

好的,谢谢啦
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2018-4-9 11:50:01 | 显示全部楼层
ou513 发表于 2018-4-9 08:12
硬汉哥,你不睡觉啊,这帖子几点还发呢



测试中出了点问题,所以时间长了些
回复

使用道具 举报

3

主题

105

回帖

114

积分

初级会员

积分
114
发表于 2018-4-9 17:00:21 | 显示全部楼层
看了下RTX的内存管理实现方法,感觉不如lwip的mem管理强大。还是从lwip搬过来用更好吧。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2018-4-9 17:12:37 | 显示全部楼层
公仆 发表于 2018-4-9 17:00
看了下RTX的内存管理实现方法,感觉不如lwip的mem管理强大。还是从lwip搬过来用更好吧。

RTX5的,支持三种,这个只是其中一种。比lwip的爽多了。
回复

使用道具 举报

57

主题

909

回帖

1080

积分

至尊会员

积分
1080
发表于 2018-4-9 21:52:20 | 显示全部楼层
你们都这么高端大气的。。 我还是只搞点静态分配用用。
回复

使用道具 举报

20

主题

249

回帖

309

积分

高级会员

积分
309
发表于 2018-4-11 18:02:46 | 显示全部楼层
eric2013 发表于 2018-4-9 10:38
以个人名义或者公司名义申请Micrium的创客,会有源码的。

前几天以个人名义申请了,过了2天,北京麦克泰软件技术有限公司人发邮件,问我有什么帮助,我说我要申请创客,他说这个得从原厂申请,。

到现在原厂也没有回复我,快一周了,硬汉哥我这个是不是被拒绝了呢
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2018-4-12 00:34:42 | 显示全部楼层
小狐狸 发表于 2018-4-11 18:02
前几天以个人名义申请了,过了2天,北京麦克泰软件技术有限公司人发邮件,问我有什么帮助,我说我要申请 ...

没有吧,我们之前申请就是1个月左右。
回复

使用道具 举报

20

主题

249

回帖

309

积分

高级会员

积分
309
发表于 2018-4-12 08:57:08 | 显示全部楼层
eric2013 发表于 2018-4-12 00:34
没有吧,我们之前申请就是1个月左右。

额,那我再等等吧。
你是以个人名义就在官网上填了一个表格就申请通过了吗
回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 2018-4-12 10:09:50 | 显示全部楼层
硬汉还是很接地气的
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2018-4-12 10:27:12 | 显示全部楼层
小狐狸 发表于 2018-4-12 08:57
额,那我再等等吧。
你是以个人名义就在官网上填了一个表格就申请通过了吗

是的,我们那个时候是第一批。
回复

使用道具 举报

7

主题

102

回帖

123

积分

初级会员

积分
123
发表于 2018-4-12 11:50:39 | 显示全部楼层
始终觉得这个算法考虑不周,在free的时候只考虑前一个是否是空闲,没考虑下一个是否也是空闲。这样一来就没组合出最大的空闲内存,导致出现碎片。设置tail前一个内存块会一直得不到合并。
freeB:[A(idle)][B][C(idle)][TAIL]--->[A+B(idle)][C(idle)][TAIL]

希望我想错了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2018-4-12 13:54:03 | 显示全部楼层
eddy0317 发表于 2018-4-12 11:50
始终觉得这个算法考虑不周,在free的时候只考虑前一个是否是空闲,没考虑下一个是否也是空闲。这样一来就没 ...

没关系,这种问题都是小事。

RTX4的动态内存方案跟这个一样,我已经在项目里面稳定运行2年了。
回复

使用道具 举报

20

主题

249

回帖

309

积分

高级会员

积分
309
发表于 2018-4-12 23:01:27 | 显示全部楼层
eric2013 发表于 2018-4-12 10:27
是的,我们那个时候是第一批。

我想评估下uc/FS和uC/TCP-IP,不知会不会给源码呢?
回复

使用道具 举报

20

主题

249

回帖

309

积分

高级会员

积分
309
发表于 2018-4-12 23:02:23 | 显示全部楼层
eddy0317 发表于 2018-4-12 11:50
始终觉得这个算法考虑不周,在free的时候只考虑前一个是否是空闲,没考虑下一个是否也是空闲。这样一来就没 ...

他这个分配方法怎么没有用malloc函数呢,直接指针了一下就分配出内存了,原理是啥呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2018-4-13 02:48:10 | 显示全部楼层
小狐狸 发表于 2018-4-12 23:01
我想评估下uc/FS和uC/TCP-IP,不知会不会给源码呢?

就是给的源码,不是库。
回复

使用道具 举报

20

主题

249

回帖

309

积分

高级会员

积分
309
发表于 2018-4-13 08:46:24 | 显示全部楼层
eric2013 发表于 2018-4-13 02:48
就是给的源码,不是库。

那太好了,我再等等

北京的代理说我的申请有可能被拒绝了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2018-4-13 11:02:57 | 显示全部楼层
小狐狸 发表于 2018-4-13 08:46
那太好了,我再等等

北京的代理说我的申请有可能被拒绝了

后面的要求比较严格了,看来只能公司名义了,要用正规的公司邮箱。
回复

使用道具 举报

20

主题

249

回帖

309

积分

高级会员

积分
309
发表于 2018-4-13 11:10:29 | 显示全部楼层
eric2013 发表于 2018-4-13 11:02
后面的要求比较严格了,看来只能公司名义了,要用正规的公司邮箱。

恩恩,也许吧,能否分享下uC/FS和TCP-IP的代码吗
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2018-4-13 11:48:59 | 显示全部楼层
小狐狸 发表于 2018-4-13 11:10
恩恩,也许吧,能否分享下uC/FS和TCP-IP的代码吗

非常抱歉兄弟,我的那个过期了,为其一年
回复

使用道具 举报

20

主题

249

回帖

309

积分

高级会员

积分
309
发表于 2018-4-13 12:41:07 | 显示全部楼层
eric2013 发表于 2018-4-13 11:48
非常抱歉兄弟,我的那个过期了,为其一年

哦哦,没事啦,谢谢硬汉哥
回复

使用道具 举报

7

主题

102

回帖

123

积分

初级会员

积分
123
发表于 2018-4-13 14:34:28 | 显示全部楼层
小狐狸 发表于 2018-4-12 23:02
他这个分配方法怎么没有用malloc函数呢,直接指针了一下就分配出内存了,原理是啥呢?

分配方法本来就是等效malloc,当然不会再用malloc函数了,因为这部分内存是“没有使用的空闲内存”,把指针给出去就是了。你看明白逻辑就知道了。
回复

使用道具 举报

20

主题

249

回帖

309

积分

高级会员

积分
309
发表于 2018-4-13 14:51:45 | 显示全部楼层
eddy0317 发表于 2018-4-13 14:34
分配方法本来就是等效malloc,当然不会再用malloc函数了,因为这部分内存是“没有使用的空闲内存”,把指 ...

嗯,谢谢通俗的讲解啊
回复

使用道具 举报

5

主题

582

回帖

597

积分

版主

Rank: 7Rank: 7Rank: 7

积分
597
发表于 2019-2-23 11:17:02 | 显示全部楼层
公仆 发表于 2018-4-9 17:00
看了下RTX的内存管理实现方法,感觉不如lwip的mem管理强大。还是从lwip搬过来用更好吧。

我也稍微看过lwip的mem管理,单从动态内存管理来看,lwip的也没有什么不一样的地方,虽然rtx的也没有什么特别出彩的,不过lwip的mem管理可以有多种类型选择,具体应用时可能会有优势
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-12 04:26 , Processed in 0.056908 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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