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

内存分配方案

[复制链接]
wujique 发布时间:2018-5-24 17:12
做开发时间长了,经常会发现自己经常重复发明轮子。
8 i) i$ V( j' G+ b例如做触摸屏,开始不知道有tslib,自己做校正算法,效果不好,用了tslib后,一切都好了。
: c- l0 |1 A: [/ c' C! o2 g内存分配也是。
! K$ ?( D1 v+ _* F7 G8 ?0 H. P很多朋友可能直接用c库的malloc和free,能用,但是要增加一些功能,就不好处理了。
8 r# _5 I4 r6 m5 y$ c像freertos、lwip等开源组件,其实也有自己的内存算法。- H8 @* j  F$ S8 `5 m
有不少朋友也自己写过内存分配算法。
3 e# c5 _3 K! A4 m& l; b9 l( W; q9 c, k其实有一种内存分配算法,k&R方法,就在我们的c语言书上。
, ~! g1 X- w- F4 E0 i可惜以前学C语言的时候,后面一些章节根本不考试,大部分人都不知道这种算法了。
& |3 M& X0 @1 R! J2 J1 n' b, }这本书就是《C程序设计语言》,如果你有这本书,请翻到162页。
0 _2 ]6 Y5 C. Y4 r) x! i9 p2 d这种算法通过空闲内存链表管理内存。只有两个函数。非常精简的函数。7 B- u8 d; R9 d' z; Z
在这个基础上,我们可以做很多优化:4 ~* N% ^5 f6 A' }3 s
1 将首先适应法改为最适应法,降低内存碎片化程度。/ \# J1 y' L8 y* w) x1 L
2 增加已分配内存链表,管理已分配内存,统计各模块使用内存量。4 [5 c. K) {, {
3 添加小内存分配二级算法,在出现频繁大量申请小内存(小于16字节的内存申请)时,提高内存利用率。9 A7 H# T3 O6 z, |4 w
4 利用原来的内存管理结构,进行内存染色,侦测malloc的内存越界问题。
) f6 `3 J, o) u. e9 g) P5 f. Z- }$ _。。。4 G" Z7 a3 r2 u
有兴趣的请下载附件。; f! [6 C5 R7 A% l; m7 |! R0 j1 D
附件仅仅实现了上面说的优化1,其他优化已经实现,还在优化当中。
  X( b) V' H4 O6 A5 y' |
7 q5 T( R' C8 F; ~8 ~欢迎参观github:http://github.com/wujique/stm32f407
, g+ N4 q  S8 |1 B3 q+ i2 j这个仓库为本人基于F407做的一些程序总结。
& Q3 C& u2 M( Y( H- Y7 `) }$ _个人认为比较有参考意义的有:I2C核心,SPI控制器和SPI通道核心,SPI FLASH,LCD总线抽象,LCD驱动抽象。- o2 X. j) [5 C- J# R) ?, J
欢迎商用,后果自负。
0 ?" {  B- ?% q1 F' E
8 J' J7 K0 @5 m# Y4 ^

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
有时候造一下轮子,可以加深对概念的理解!
* j# ]& Q) N8 F$ d: A5 ^) H主要是造轮子的时候要多思考,思考别人的库为什么就比自己写的要好,好在哪里。
andey 回答时间:2018-5-24 18:12:21
提示: 作者被禁止或删除 内容自动屏蔽
zhangxu56726 回答时间:2018-5-24 19:10:03
请问, tslib   能不能分享下?谢谢
wujique 回答时间:2018-5-24 19:50:25
zhangxu56726 发表于 2018-5-24 19:10$ t; `$ V& c% q
请问, tslib   能不能分享下?谢谢
! l8 Y! \" U, @# `% f
github上有
西点钟灵毓秀 回答时间:2018-5-24 23:06:41
mark 一下子
anobodykey 回答时间:2018-5-25 08:37:43
mark一下
landeng 回答时间: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

: Z: h: ]# J5 \6 L1 g7 emark 下
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版