你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

内存分配方案

[复制链接]
huangxuejia-292 发布时间:2018-5-24 17:12
做开发时间长了,经常会发现自己经常重复发明轮子。
例如做触摸屏,开始不知道有tslib,自己做校正算法,效果不好,用了tslib后,一切都好了。
内存分配也是。
很多朋友可能直接用c库的malloc和free,能用,但是要增加一些功能,就不好处理了。
像freertos、lwip等开源组件,其实也有自己的内存算法。
有不少朋友也自己写过内存分配算法。
其实有一种内存分配算法,k&R方法,就在我们的c语言书上。
可惜以前学C语言的时候,后面一些章节根本不考试,大部分人都不知道这种算法了。
这本书就是《C程序设计语言》,如果你有这本书,请翻到162页。
这种算法通过空闲内存链表管理内存。只有两个函数。非常精简的函数。
在这个基础上,我们可以做很多优化:
1 将首先适应法改为最适应法,降低内存碎片化程度。
2 增加已分配内存链表,管理已分配内存,统计各模块使用内存量。
3 添加小内存分配二级算法,在出现频繁大量申请小内存(小于16字节的内存申请)时,提高内存利用率。
4 利用原来的内存管理结构,进行内存染色,侦测malloc的内存越界问题。
。。。
有兴趣的请下载附件。
附件仅仅实现了上面说的优化1,其他优化已经实现,还在优化当中。

欢迎参观github:http://github.com/wujique/stm32f407
这个仓库为本人基于F407做的一些程序总结。
个人认为比较有参考意义的有:I2C核心,SPI控制器和SPI通道核心,SPI FLASH,LCD总线抽象,LCD驱动抽象。
欢迎商用,后果自负。

alloc.rar

下载

487.69 KB, 下载次数: 25

评分

参与人数 1 ST金币 +6 收起 理由
MrJiu + 6 赞一个!

查看全部评分

收藏 2 评论9 发布时间:2018-5-24 17:12

举报

9个回答
xiajintaord 回答时间:2018-5-24 17:49:02
有时候造一下轮子,可以加深对概念的理解!
主要是造轮子的时候要多思考,思考别人的库为什么就比自己写的要好,好在哪里。
andeyqi 回答时间:2018-5-24 18:12:21
mark 下 感谢分享
zhangxu56726 回答时间:2018-5-24 19:10:03
请问, tslib   能不能分享下?谢谢
huangxuejia-292 回答时间:2018-5-24 19:50:25
zhangxu56726 发表于 2018-5-24 19:10
请问, tslib   能不能分享下?谢谢

github上有
zts329547875 回答时间:2018-5-24 23:06:41
mark 一下子
anobodykey 回答时间:2018-5-25 08:37:43
mark一下
landeng1986 回答时间:2018-5-25 08:41:11
k&R的C语言书绝对值得经常翻翻,太经典了
MrJiu 回答时间:2018-5-25 09:55:16
楼主说的非常好!!!不过内存方案呢,我觉得用freertos自带的就基本OK啦!!!
heyv11 回答时间:2018-6-7 21:53:30

mark 下

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版