Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

k_mmheap_ctl_t结构体占用3204字节内存,能否优化 #238

Open
xnvi opened this issue Oct 16, 2020 · 2 comments
Open

k_mmheap_ctl_t结构体占用3204字节内存,能否优化 #238

xnvi opened this issue Oct 16, 2020 · 2 comments

Comments

@xnvi
Copy link
Collaborator

xnvi commented Oct 16, 2020

嵌入式设备内存本身比较紧张,一般分配的堆内存也不会太大,假设我开辟了一个2K大小的堆,这个用于管理堆内存的结构体使用的空间比我的堆空间还大,很浪费内存。对于STM32F103C8T6这种只有20KB内存的芯片来说,占用3204字节的内存真的太大了,如果使用其他低成本芯片,想要移植TencentOS-tiny就变得非常困难,希望这个结构体能尽快优化

编译后查看map文件如下
k_mmheap_ctl 0x200018d0 Data 3204 tos_global.o(.bss)

@Supowang1989
Copy link
Collaborator

您说的这个确实在低资源芯片上会有这个问题,动态内存这块要兼顾性能和尺寸、还有碎片问题是比较难平衡的,这个我们也持续看看有没有办法优化,另外低资源的芯片可以考虑不使能tos的内存管理模块,先用编译器的malloc free看看是否能在一定程度上解决您当前的问题。优化问题我们也会同时考虑,感谢您的建议

@OpenAtomFoundation OpenAtomFoundation deleted a comment Nov 13, 2020
@daishengdong
Copy link
Collaborator

k_mmheap_ctl里有一个二维数组,这个数组可以定制化的把相关宏改小来缩小尺寸,比如K_MMHEAP_FL_INDEX_COUNT与K_MMHEAP_FL_INDEX_MAX相关,而K_MMHEAP_FL_INDEX_MAX这个值决定了池子里能分配的块的最大大小,这里默认是定义为30,也就是最大可以分配到1<<30这么大的内存,实际嵌入式系统中根本用不了这么大,可以把这个值根据你实际项目情况改小点。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants