首页  |   新闻  |   技术  |   案例  |   展会  |   下载  |   社区   
造车网
资讯      技术      企业      展会  
 E杂志  在线研讨会
 AutoTV 视频  工业经理人
   您现在的位置: 首 页 >> 正文

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


造车网 http://www.zaoche168.com/ 2009年08月17日

  } buf_pool_t;
  结构中的参数包括检查标记MAGIC、是否本地分配、空闲链表、内存指针、创建缓冲池的回调函数指针、释放时的回调函数指针、回调函数参数。
  
  (2)相关函数
 
  ◆BufPoolInitializeStorage:分配和初始化存储区。参数包括存储区地址(如为NULL,则本地分配)、缓冲区大小、缓冲区个数。
  ①根据缓冲区大小和个数获得所需的内存大小。
  ②如果指针为NULL,则调用calloc分配内存。设置本地分配标志。
  ③初始化内存为0。
  ④初始化指针。分配的内存块最前面为缓冲池结构buf_pool_t。实际的存储区紧随其后。Buf_pool_t包含参数检查标记、是否本地分配、存储区地址、分配时回调函数、释放时回调函数、回调函数变量。此时只设置存储区指针。
  ◆BufPoolCreate:创建缓冲池。参数为内存制止。缓冲区尺寸和个数,创建时回调函数、释放时回调函数、回调函数参数。
   ①尺寸对齐。
   ②调用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]  [5] 

 
相关链接
2009中国国际工业博览会-工业自动化展 [ 2009-11-03]
采购合适的汽车坐套 [ 2009-08-18]
事故车送修的技巧 [ 2009-08-18]
如何避免供应链中断 [ 2009-08-17]
气温升高 汽车空调应这样检查 [ 2009-08-17]
新车磨合期要注意啥 节省燃油技巧指南 [ 2009-08-17]
风河公司与Freescale联合推出预先集成车载设 [ 2009-08-17]
汽车电子自主研发成效显著 关键技术待突破 [ 2009-08-17]
VDC Research Group:风河为最领先嵌入式Linux厂商 [ 2009-08-06]
Microchip推出可用于汽车导航系统的模拟电阻式触摸屏控制器 [ 2009-08-03]
TI副总裁访华,描绘收购Luminary后的MCU新蓝图 [ 2009-07-29]
多功能嵌入式车辆行驶监控终端设计 [ 2009-07-13]
汽车电子自主研发成效显著 关键技术待突破 [ 2009-06-25]
英特尔8.84亿美金收购风河,全面布局PC以外的市场 [ 2009-06-10]
Atmel发布即插即用主机侧加密认证IC AT88SA10HS [ 2009-06-10]
  相关群组   
  相关话题   
  关于 " 一种嵌入式系统的内存分配方案 " ,填写反馈

验证码:    看不清

用户名:          密 码:         
还不是 zaoche168 注册会员? 立即免费注册 节省更多时间!
  直通车 :   ( 无须注册,轻松沟通 )
*姓名:     *单位名称:
*电话:     *电子邮件:
 
    
 
在线研讨会
 • 西门子“人机工程仿真领域解决方案”在线研讨会
 • Dymola解决方案在轨道交通行业中的应用在线研讨会
 • NX 产品设计解决方案网络研讨会
 • 倍福 XFC(eXtreme Fast Control Technology)极速控制技术在线研讨会
 • siemens PLM 数字化制造解决方案
 • SIEMENS面向可制造、可装配、可维护的产品设计过程研讨会
 • 倍福(Beckhoff)科技自动化技术和方案介绍在线研讨会
 • 西门子—Part modular design —基于模块化的复杂零件设计在线研讨会
 • 西门子—Process Simulate Robotics - 真实环境的机器人仿真方案在线研讨会
 • 西门子-Solid Edge 无与伦比的钣金设计在线研讨会(下)
热点信息

 
  北京市朝阳区东四环中路58号远洋国际中心C座2402室 电话:010-57111937 传真:010-65307859
  Copyright ©1997-2012 zaoche168.com & SooQ. All rights reserved. 造车网 版权所有 京ICP备09015258号

分享到: