VxWorks for PowerPC的内存分配


PowerPC系统构造的内存构造包括5大局部,离别为系统映像(System Image)之前的系统启用相干的低端内存,系统映像,Host Memory Pool,间断堆栈以及系统内存池(System Memory Pool)。下面就各局部举行推荐。

1. 系统映像之前的低端内存

包括间断向量表(Interrupt Vector Table),分享内存符号(SM Anchor),启用参数(Boot Line),失常消息(Exception Message)和初始化堆栈(Initial Stack)。

间断向量表(失常向量表)割据0x0到0x3000地址的12KB的空间,保留有重要的间断向量消息;

分享内存符号割据0x4100到0x4200地址的100字节,它的作用是符号是否有网络分享内存和VxMP分享内存对象;

启用参数是保留VxWorks启用的时候所用的参数,如:

qefcc(0,0)host:vxWorks h=192.1.1.1 e=192.254.0.4 u=cca pw=cca tn=cca

失常消息,起始地址是0x4300,万一启用过程中揭示致命失常,则系统将失常消息保留在这段内存中。万一系统启用过程中失利,我们率先要看的是这段地址中登记的失常消息,能够利用d 0x4300号召查相其中登记的内容。

初始化堆栈,是给usrInit()利用的初始化堆栈,直到usrRoot()分配堆栈。起始地址是0x4C00。

2. 系统映像

系统映像是ELF款式的文件,boot启用尔后,将系统映像(boot映像或版本映像)从Flash上copy或解压(万一是收缩版本)到RAM_LOW_ADRS地址处,并跳转到该地址厉行。

系统映像包括三局部:TEXT段、DATA段、BSS段。其中TEXT段是代码段,利用的内存大约是定然的;DATA段是数据段,包括曾经初始化的大局变量和数组;而BSS段是未初始化的数据段,包括未初始化的大局变量和数组,切实上大约不挪借Flash存储空间,在VxWorks系统启用的时候在内存将其举行伸展为全零。

代码段的起始地址:RAM_LOW_ADRS,终止地址:VxWorks定义的char etext[];

数据段的起始地址:VxWorks定义的char etext[],终止地址:VxWorks定义的char edata[];

BSS段的起始地址:VxWorks定义的char edata[],终止地址:VxWorks定义的char end[]。

FREE_RAM_ADRS指向VxWorks定义的char end[],即BSS段的最后,也是映像的最后。

end是由loader在动态加载时确定的,从源码里找不到。率先获得end变量的地址,再扣除低RAM_LOW_ADRS的空间,即取贴切系映像的大小:

dwImageSize = (WORD32)end - RAM_LOW_ADRS;

3. Host Memory Pool

Host Memory Pool是在VxWorks上驻留的调试工具利用的内存空间sdlwf.com,能够依据WDB_POOL_SIZE宏值获得。该局部大小等闲有十几M左右。

起始地址:VxWorks定义的char end[],终止地址:end+WDB_POOL_SIZE。

4. 间断堆栈:间断堆栈的大小能够由宏ISR_STACK_SIZE定义能够得出。

5. 系统内存池

这局部是给VxWorks用户过程利用的存储空间,用户穿越malloc动态申请获得,这局部能够说是最大的内存空间,当物理内存不够必需优化时必需关键琢磨。

于是能够定义出方块数据;moschino香水他曾经懂得if推断,于是写得出冒犯推断;他曾经学会for循环,于是懂得如何消掉被填满的一行或多行……

你可能感兴趣的:(exception,image,vector,Flash,存储,System)