eric2013 发表于 2018-4-9 03:22:42

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

例程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86087

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

static/image/hrline/4.gif
空间分配:
/* AXI SRAM, D1域名, 128KB */
mem_head_t *AXISRAMUsed;
uint64_t AppMallocAXISRAM;

/* SRAM1, D2域, 128KB */
mem_head_t *SRAM1Used;
uint64_t AppMallocSRAM1__attribute__((at(0x30000000)));

/* SRAM2, D2域, 128KB */
mem_head_t *SRAM2Used;
uint64_t AppMallocSRAM2__attribute__((at(0x30020000)));

/* DTCM, 128KB */
mem_head_t *DTCMUsed;
uint64_t AppMallocDTCM__attribute__((at(0x20000000)));

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

AXI SRAM(申请三次,释放三次,释放完毕后会固定占用16字节):
https://img.anfulai.cn/dz/attachment/forum/201804/09/031242lwwmfdnq5asfe20f.png

SRAM1(同上)
https://img.anfulai.cn/dz/attachment/forum/201804/09/031243mwiemoiyttw5vyyi.png

SRAM2(同上)
https://img.anfulai.cn/dz/attachment/forum/201804/09/031243qhtqbtipq6z4qi76.png

DTCM(同上)
https://img.anfulai.cn/dz/attachment/forum/201804/09/031243l8zulup8po8nfpou.png

http://www.armbbs.cn/static/image/hrline/4.gif
移植仅需要rtx_lib.h和rtx_memory.c文件,可用于任何其它CM内核。

https://img.anfulai.cn/dz/attachment/forum/201804/09/031442pntznsoogcx58goj.png


ou513 发表于 2018-4-9 08:12:42

硬汉哥,你不睡觉啊,这帖子几点还发呢

小狐狸 发表于 2018-4-9 09:08:01

硬汉哥注意身体啊,,
谢谢分享,有机会试试

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

eric2013 发表于 2018-4-9 10:38:37

小狐狸 发表于 2018-4-9 09:08
硬汉哥注意身体啊,,
谢谢分享,有机会试试



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

小狐狸 发表于 2018-4-9 10:51:55

eric2013 发表于 2018-4-9 10:38
以个人名义或者公司名义申请Micrium的创客,会有源码的。

好的,谢谢啦

eric2013 发表于 2018-4-9 11:50:01

ou513 发表于 2018-4-9 08:12
硬汉哥,你不睡觉啊,这帖子几点还发呢

:handshake

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

公仆 发表于 2018-4-9 17:00:21

看了下RTX的内存管理实现方法,感觉不如lwip的mem管理强大。还是从lwip搬过来用更好吧。

eric2013 发表于 2018-4-9 17:12:37

公仆 发表于 2018-4-9 17:00
看了下RTX的内存管理实现方法,感觉不如lwip的mem管理强大。还是从lwip搬过来用更好吧。

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

roguebear 发表于 2018-4-9 21:52:20

你们都这么高端大气的。。 我还是只搞点静态分配用用。

小狐狸 发表于 2018-4-11 18:02:46

eric2013 发表于 2018-4-9 10:38
以个人名义或者公司名义申请Micrium的创客,会有源码的。

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

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

eric2013 发表于 2018-4-12 00:34:42

小狐狸 发表于 2018-4-11 18:02
前几天以个人名义申请了,过了2天,北京麦克泰软件技术有限公司人发邮件,问我有什么帮助,我说我要申请 ...

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

小狐狸 发表于 2018-4-12 08:57:08

eric2013 发表于 2018-4-12 00:34
没有吧,我们之前申请就是1个月左右。

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

guama 发表于 2018-4-12 10:09:50

硬汉还是很接地气的:lol

eric2013 发表于 2018-4-12 10:27:12

小狐狸 发表于 2018-4-12 08:57
额,那我再等等吧。
你是以个人名义就在官网上填了一个表格就申请通过了吗

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

eddy0317 发表于 2018-4-12 11:50:39

始终觉得这个算法考虑不周,在free的时候只考虑前一个是否是空闲,没考虑下一个是否也是空闲。这样一来就没组合出最大的空闲内存,导致出现碎片。设置tail前一个内存块会一直得不到合并。
freeB:--->

希望我想错了。

eric2013 发表于 2018-4-12 13:54:03

eddy0317 发表于 2018-4-12 11:50
始终觉得这个算法考虑不周,在free的时候只考虑前一个是否是空闲,没考虑下一个是否也是空闲。这样一来就没 ...

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

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

小狐狸 发表于 2018-4-12 23:01:27

eric2013 发表于 2018-4-12 10:27
是的,我们那个时候是第一批。

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

小狐狸 发表于 2018-4-12 23:02:23

eddy0317 发表于 2018-4-12 11:50
始终觉得这个算法考虑不周,在free的时候只考虑前一个是否是空闲,没考虑下一个是否也是空闲。这样一来就没 ...

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

eric2013 发表于 2018-4-13 02:48:10

小狐狸 发表于 2018-4-12 23:01
我想评估下uc/FS和uC/TCP-IP,不知会不会给源码呢?

就是给的源码,不是库。

小狐狸 发表于 2018-4-13 08:46:24

eric2013 发表于 2018-4-13 02:48
就是给的源码,不是库。

那太好了,我再等等

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

eric2013 发表于 2018-4-13 11:02:57

小狐狸 发表于 2018-4-13 08:46
那太好了,我再等等

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

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

小狐狸 发表于 2018-4-13 11:10:29

eric2013 发表于 2018-4-13 11:02
后面的要求比较严格了,看来只能公司名义了,要用正规的公司邮箱。

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

eric2013 发表于 2018-4-13 11:48:59

小狐狸 发表于 2018-4-13 11:10
恩恩,也许吧,能否分享下uC/FS和TCP-IP的代码吗

非常抱歉兄弟:handshake,我的那个过期了,为其一年:L

小狐狸 发表于 2018-4-13 12:41:07

eric2013 发表于 2018-4-13 11:48
非常抱歉兄弟,我的那个过期了,为其一年

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

eddy0317 发表于 2018-4-13 14:34:28

小狐狸 发表于 2018-4-12 23:02
他这个分配方法怎么没有用malloc函数呢,直接指针了一下就分配出内存了,原理是啥呢?

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

小狐狸 发表于 2018-4-13 14:51:45

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

嗯,谢谢通俗的讲解啊

myxiaonia 发表于 2019-2-23 11:17:02

公仆 发表于 2018-4-9 17:00
看了下RTX的内存管理实现方法,感觉不如lwip的mem管理强大。还是从lwip搬过来用更好吧。

我也稍微看过lwip的mem管理,单从动态内存管理来看,lwip的也没有什么不一样的地方,虽然rtx的也没有什么特别出彩的,不过lwip的mem管理可以有多种类型选择,具体应用时可能会有优势
页: [1]
查看完整版本: 成功将RTX5的动态内存管理独立出来,在H7的五个分区同时使用测试成功,支持使用率统计,需要的拿去用于RT1052