用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

一种嵌入式系统的内存分配方案

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 23:51:26
区尺寸和个数,创建时回调函数、释放时回调函数、回调函数参数。

①尺寸对齐。

②调用bufPoolInitializeStorage初始化内存区和buf_pool_t结构。

③用传入参数填充buf_pool_t结构。

④将缓冲区添加到空闲链表中,最后的缓冲区在最前面。

◆BufPoolDestroy:删除缓冲池。参数为buf_pool_t指针。

①检查缓冲池结构中的MAGIC字段是否被个性。

②如果是本地分配的则翻放内存区。

◆BufPoolAlloc:从缓冲池中分配一个缓冲区,参数为缓冲池结构指针。如果存在空闲缓冲区,则从空闲链表中除并提供给调用者,执行创建时回调函数。如果回调函数返回错误,则将缓冲区返还给空闲链表。

①检查缓冲池结构中的MAGIC标记是否完好。

②从空闲链表中取出头一个节点。

③如果节点不为空,清空节点,以其地址为参数调用回调函数。

④如果回调函数返回错误,则将节点还给空闲链表。

⑤返回得到空闲缓冲区地址。

◆BufPoolFree:将缓冲区返回给缓冲池。如果定义了回调函数,将在归还缓冲之间调用回调函数。参数为缓冲池结构和缓冲区指针。

①缓冲池MAGIC标记是否完好。

②如果定义回调函数、调用之。如果返回错误,则设置错误号。

③将缓冲区添加到空闲链表中头部。

注意该函数有2点:①回调函数返回错误,照样归还缓冲区。②没有检查缓冲区是否二次释放,这一点与Intel的驱动程序不同。

另外,TMS的缓冲池没有BLOCK要领,不需要判断哪个CELL属于哪个BLOCK,简化 了操作。

5 小结

许多嵌入式应用在RTOS提供的malloc/free的基础上编写自己的内存管理方案。编写这样的内存管理方案,目的无非有两个:一是减少对malloc/free的依赖,从而避免由之带来的内存碎片、时间不确定等总是;另一个是增强程序的查错能力,送还内存使用错误。对于在嵌入式系统中广泛存在的数据库类型的内存需求,即分配多个固定尺寸的内存单元的要求,“一闪分配,多次使用”的方案无疑是一种很好的解决之道。文中介绍的2个例子很好地体现了它的优越性。



上一页  [1] [2] [3] [4] 

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:31,906.25000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号