硬汉嵌入式论坛

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

[ThreadX全家桶] 我来分享一下 tlsf v2.4.4 / v2.4.6 malloc 动态内存管理 , 据说是比较 牛逼的

  [复制链接]

610

主题

3055

回帖

4905

积分

至尊会员

积分
4905
发表于 2021-8-12 12:21:46 | 显示全部楼层 |阅读模式
本帖最后由 hpdell 于 2021-8-12 14:05 编辑

安大神好,我不知道该发到哪个版块,所以就选择发到这个地方了,如有不妥,请帮忙移动一下


我来发个 tlsf malloc 动态内存管理 , 据说是比较 牛逼的
同时也备份一下,方面以后查找

TLSF-2.4.4.tbz2 (23.35 KB, 下载次数: 40)


TLSF-2.4.6.tbz2 (23.62 KB, 下载次数: 61)
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106826
QQ
发表于 2021-8-12 14:58:51 | 显示全部楼层
谢谢分享,了解下。
回复

使用道具 举报

73

主题

1194

回帖

1413

积分

至尊会员

积分
1413
发表于 2021-8-12 16:54:26 | 显示全部楼层
http://www.gii.upv.es/tlsf/
主页,有文档,
回复

使用道具 举报

6

主题

18

回帖

36

积分

新手上路

积分
36
发表于 2021-8-13 14:25:24 | 显示全部楼层
感谢分享,下载看看,之前学习正点的,后来用freertos的,再后来自己写的, 还是用现成的比较稳
回复

使用道具 举报

17

主题

101

回帖

152

积分

初级会员

积分
152
发表于 2021-8-19 17:56:05 | 显示全部楼层
只能说分配时间有保证,但是ram占用太大,分配率也不能达到百分之99,比如有80k,想分配79k,他不能,要么改log2 size ,但是ram 竟然占用了接近4K,很不合理
回复

使用道具 举报

610

主题

3055

回帖

4905

积分

至尊会员

积分
4905
 楼主| 发表于 2021-8-20 14:32:39 | 显示全部楼层
本帖最后由 hpdell 于 2021-8-20 15:16 编辑
初晴sama 发表于 2021-8-19 17:56
只能说分配时间有保证,但是ram占用太大,分配率也不能达到百分之99,比如有80k,想分配79k,他不能,要么改 ...

这个貌似是 linux 上使用的,我也移植过到单片机上测试过,貌似不太适合在单片机上使用,我测试时申请了一个 1024*1024*24+337 的大小的内存区域块,结果申请出来的 大概有 512KB 的空间浪费了,没有 threadx OS 系统自动的 内存申请好用,还有 ti 的内存申请 也不错,
貌似 本论坛 http://www.armbbs.cn/forum.php?m ... hlight=%CA%D7%B7%A2 这个的内存管理也不错,

        还有 http://www.armbbs.cn/forum.php?m ... d=105867&extra=

                http://www.armbbs.cn/forum.php?m ... d=101005&extra=


                     貌似这几个内存使用在单片机上效果都还不错的






回复

使用道具 举报

17

主题

101

回帖

152

积分

初级会员

积分
152
发表于 2021-8-20 14:39:42 | 显示全部楼层
hpdell 发表于 2021-8-20 14:32
这个貌似是 linux 上使用的,我也移植过到单片机上测试过,貌似不太适合在单片机上使用,我测试时申请了 ...

好的,不知道后面两者公司是否能用,需要授权吗?
回复

使用道具 举报

5

主题

179

回帖

194

积分

初级会员

积分
194
发表于 2021-8-23 17:31:57 | 显示全部楼层
hpdell 发表于 2021-8-20 14:32
这个貌似是 linux 上使用的,我也移植过到单片机上测试过,貌似不太适合在单片机上使用,我测试时申请了 ...

在pc上测试了下threadx、freertos、tencentos的内存申请,freertos还是最快的。链接里malloc_tx_byte_b.c的第218行注释有错。

    /* Backup the end of the pool pointer and build the pre-allocated block.  
                内存池最后一块,最后4字节存储TX_BYTE_BLOCK_ALLOC */
    block_ptr =  TX_UCHAR_POINTER_SUB_USER(block_ptr, (sizeof(ALIGN_TYPE)));

    /* Cast the pool pointer into a ULONG.  */
    temp_ptr =             TX_BYTE_POOL_TO_UCHAR_POINTER_CONVERT_USER(pool_ptr);
    block_indirect_ptr =   TX_UCHAR_TO_INDIRECT_UCHAR_POINTER_CONVERT_USER(block_ptr);
    *block_indirect_ptr =  temp_ptr;

不是最后四字节,和align_type有关,在PC64位环境上指针是8字节,按照8字节去存储的。
回复

使用道具 举报

610

主题

3055

回帖

4905

积分

至尊会员

积分
4905
 楼主| 发表于 2021-8-24 17:04:49 | 显示全部楼层
初晴sama 发表于 2021-8-20 14:39
好的,不知道后面两者公司是否能用,需要授权吗?

随便使用,都是官方开源的 ,我只是简单移植修改了一下而已
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2023-8-4 17:11:09 | 显示全部楼层
链接不行了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 06:23 , Processed in 0.190047 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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