- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于VxWorks的内存管理和一个内存泄漏查找实例
本文主要分三部分,第一章介绍基于VxWorks的内存管理的主要内容,第二章介绍应用在ZXWR NB01产品软件设计中OSS的内存管理方法,第三章介绍实际应用中一个内存泄漏查找的实例。
Chapter 1 基于VxWorks的内存管理
综述
对于一个采用了VxWorks操作系统的主处理器构成的系统,主内存的管理机制主要由BSP来实现,包括内存的初始化和内存的访问接口;
主内存的初始化由romInit()实现,总线访问(对设备而言)在sysHwInit()中初始化;
BSP对内存访问的支持和管理策略:
主内存的配置
对MMU的虚拟映射
Cache策略
内存探针
BSP的硬件寄存器在sysHwInit中初始化,通常的设备(串口除外)寄存器当设备初始化时被初始化;
为调示方便,在BSP开发期间禁止cache和MMU直到以下的情况实现:
内核被成功的激活
驱动器经过测试
内存配置
BSP负责配置主内存来实现快速的内核操作
一些关键地址必须被定义
如果使用MMU,必须定义内存映射
提供支撑程序
内存地址的定义在以下的文件中:
config.h-用户可配置的
bsp.h-由目标板配置,非用户使用
BSP提供的内存函数:sysMemTop()、sysNvRamSet()、sysNvRamGet()
上图代表了下载的镜像被重定位后的RAM的分区;一个WDB代理内存池仅仅当与VxWorks镜像一起的Tornado工具被使用时才需要;用户保留内存是不被VxWorks的程序所访问的。
char * sysMemTop(void)
函数返回系统内存的首地址,代码在sysLib.c中;
宏USER_RESERVED_MEM定义了不被VxWorks程序访问的用户保留内存的大小
如果BSP不支持可选函数sysPhyMemTop(),由LOCAL_MEM_LOCAL_ADRS+ LOCAL_MEM_SIZE替代。
内存的自动分区允许在初始化时配置物理内存的大小,如果自动分区功能没有激活,物理内存的大小由config.h中的LOCAL_MEM_SIZE静态定义;
自动分区的具体细节是根据系统的不同而异的,典型的有:
当DRAM在romInit()中被初始化时,配置信息存储在内存的控制寄存器或/和软件结构中;
在分区时,配置信息被读取来计算所有物理内存的大小。
支持自动分区的函数是sysPhysMemTop():char * sysPhysMemTop(void)
函数返回的是物理内存的首地址;
如果LOCAL_MEM_AUTOSIZE在config.h中被定义,该函数可提供动态的内存分区;
BSP对自动分区的支持是可选的,如果参考BSP的代码没有静态的修改,被定义的缺省值将被返回;
SysPhysMenTop()是由sysHwInit()函数调用的:该函数必须在KernelInit()之前,也就是sysMemTop被调用时。内核激活的调用:
所有的BSPs必须有NVRAM接口即使在目标环境中没有非易失RAM,接口必须支持:
sysNvRamSet() 、sysNVRamGet()
所有NVRAM的大小必须在config.h中定义为NV_RAM_SIZE的大小,如果没有NVRAM则定义为NONE;
如果提供了,NVRAM用于存储可下载的镜像的启动参数;
缺省配置在NVRAM的开头保留了255个字节用于启动参数的存储;
缺省的启动参数在config.h中定义并静态连接到可下载的VxWorks的镜像中,缺省条件下是没有NVRAM的;
NVRAM为启动参数分配的大小和定位在configAll.h中定义:
BOOT_LINE_SIZE定义NVRAM为启动参数保留的大小,缺省为255字节;
NV_BOOT_OFFSET定义了启动参数在NVRAM中的首地址,缺省为0;
为覆盖缺省值,在config.h中重定义宏。
set/get NVRAM的程序
部分驱动器在../src/drv/mem目录下,如果没有NVRAM使用../src/drv/mem/下的nullNvRam.c,该程序包含在sysLib.c中。
NVRAM支持的函数:
STATUS sysNvRamSet(string,strLen,offset)
STATUS sysNvRamGet(string,strLen,offset)
三、MMU机制
MMU主要是受系统库的控制,BSP则负责提供对物理内存描述符的支持:
由MMU使用的物理内存描述符用来创建与虚拟地址空间的初始映射;
缺省的映射是平滑的,一对一的在物理和虚拟内存空间的映射。
MMU由tUsrRoot任务调用usrMmuInit()进行初始化和使能
首先初始化系
您可能关注的文档
- 任务四 管理文件系统1解读.ppt
- 丙烯酸树脂类药用辅料的分类、结构性能与合成研究概况.doc
- _言_及_道_论语言及世界的关系.pdf
- 怎样在常见编译器中设置选项生成map文件.pdf
- 一套实用的铯原子喷泉光学系统的设计与建立.pdf
- 第一章FLEAX错误代码.doc
- 怎样使用C++开发WPS Office插件.pdf
- Matlab变量与数据类型.ppt
- Android手机怎样替换SD卡.pdf
- 耿祥义-Java 2实用教程(3版)实验代码与答案4-8.pdf
- 结构力学优化算法:多目标优化:非线性优化算法在结构力学中的应用.pdf
- 结构力学基础概念:静定结构:平面桁架的几何组成分析.pdf
- 结构力学仿真软件:MIDAS:MIDAS中复合材料结构设计.pdf
- 结构力学优化算法:禁忌搜索(TS):结构力学优化中的多目标禁忌搜索.pdf
- 结构力学基础概念:超静定结构:力矩分配法.pdf
- 结构力学基础概念:结构的模态分析:有限元方法在模态分析中的应用.pdf
- 结构力学优化算法:形状优化:结构优化中的约束处理方法.pdf
- 结构力学优化算法:多目标优化:结构优化中的约束处理技术.pdf
- 结构力学基础概念:结构的模态分析:结构的固有频率与振型.pdf
- 结构力学基础概念:结构的模态分析:结构动力学的阻尼理论.pdf
文档评论(0)