VxWorks for PowerPC的内存分配

本文详细介绍了VxWorksforPowerPC系统的内存结构,包括系统映像前的低端内存、系统映像、HostMemoryPool、中断堆栈及系统内存池等五大部分,并深入分析了各部分的功能和地址范围。

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)。

中断向量表(异常向量表)占据0x00x3000地址的12KB的空间,保存有重要的中断向量信息;

共享内存标志占据0x41000x4200地址的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映像或版本映像)Flashcopy或解压(如果是压缩版本)到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上驻留的调试工具使用的内存空间,可以根据WDB_POOL_SIZE宏值得到。该部分大小一般有十几M左右。

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

4.        中断堆栈:中断堆栈的大小可以由宏ISR_STACK_SIZE定义可以得出。

5.    系统内存池

这部分是给VxWorks用户程序使用的存储空间,用户通过malloc动态申请获得,这部分可以说是最大的内存空间,当物理内存不够需要优化时需要重点考虑

 

 

 

### Tornado 2.2.1 和 VxWorks 5.5.1 在 PowerPC 架构上的相关文档和工具 Tornado 2.2.1 是 Wind River 提供的集成开发环境(IDE),专门用于开发基于 VxWorks 操作系统的应用程序。VxWorks 5.5.1 是一个实时操作系统(RTOS),广泛应用于嵌入式系统,特别是 PowerPC 架构的设备。以下是与 Tornado 2.2.1、VxWorks 5.5.1 和 PowerPC 架构相关的资料和工具的详细介绍: #### 1. 官方文档 Wind River 提供了详尽的官方文档来支持开发者使用 Tornado 2.2.1 和 VxWorks 5.5.1。这些文档包括但不限于: - **《VxWorks Programmer's Guide》**:该指南详细描述了如何在 VxWorks 环境下进行应用开发,包括任务管理、中断处理和内存分配等内容[^1]。 - **《Tornado User's Guide》**:这份文档介绍了 Tornado IDE 的功能和使用方法,帮助开发者熟悉其界面和工具链。 - **《PowerPC Architecture Reference Manual》**:此手册提供了关于 PowerPC 架构的低级细节,对于优化代码性能和调试硬件问题非常有用[^1]。 #### 2. 工具链 为了支持 PowerPC 架构的应用开发,Tornado 2.2.1 提供了一套完整的工具链,其中包括: - **编译器**:Tornado 集成了针对 PowerPC 的 GCC 编译器,能够生成高效的机器代码。 - **链接器和汇编器**:这些工具负责将源文件转换为可执行文件,并确保它们能够在目标硬件上运行。 - **调试器**:Tornado 包含了一个强大的调试器,允许开发者在宿主机和目标机之间进行交互式调试[^1]。 #### 3. 示例项目 Wind River 提供了一些示例项目,旨在帮助开发者快速上手 Tornado 2.2.1 和 VxWorks 5.5.1 的开发环境。这些项目通常涵盖了以下方面: - **基本的任务调度**:演示如何创建和管理多个任务。 - **驱动程序开发**:展示如何编写设备驱动程序以控制硬件外设。 - **网络通信**:提供实现 TCP/IP 协议栈的示例代码。 #### 4. 社区和支持资源 除了官方文档和工具之外,开发者还可以通过以下途径获取更多支持: - **Wind River 社区论坛**:在这里可以与其他开发者交流经验并解决遇到的问题。 - **第三方教程和书籍**:一些独立作者撰写了关于 Tornado 和 VxWorks 的书籍,例如《Programming with VxWorks》[^1]。 ```python # 示例:在 Tornado 2.2.1 中创建一个简单的 VxWorks 应用程序 #include <vxWorks.h> #include <stdio.h> void helloWorldTask(void) { printf("Hello, VxWorks on PowerPC!\n"); } int main() { taskSpawn("helloWorld", 100, VX_FP_TASK, 8192, (FUNCPTR)helloWorldTask, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); return 0; } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值