arm 开发经验(二)
2013-03-07
标签: ARM

/*

*********************************************************************************************************

*Programming Arm

*

*

*(c) Copyright 1992-2008, 西安交通大学

*All Rights Reserved

*

*自控研究所158

*

* 文件: 连载二

* 版本: V1.00

* 作者: 潘自强

*

* 对象: ARM7

* 模式: ARM

* 工具: ADS1.20

*********************************************************************************************************

*/

4 描述文件

要编写描述文件,必须知道ARM Image文件的组成及ARM Image文件执行的机理。

4.1 ARM Image的结构

一个ARM Image structure由linker在以下几个方面定义:

组成它的regions 和 output sections

当Image 下载的时候这些regions 和 sections 在内存中的位置

当Image 执行时这些regions和sections在内存中的位置

4.1.1 ARM Image的组成

一个ARM Image被保存在可执行文件当中,它的层次结构可以包括Image,regions,output sections和input sections。

一个Image由一个或多个regions组成,每个region包括一个或多个output sections

每个output section由一个或多个input sections组成

Input sections是一个object file中的code和data信息。

Image的结构如下图:

NOTE Input section,output section和region的定义见ADS_LinkerGuide 3-3页。

同时Input section 有几种属性,分别为readonly,read-write,zero-initialized。分别称为RO,RW和ZI。属性来源于AREA后的attr属性。

比如CODE是RO,DATA是RW,NOINT默认为ZI,即用0值初始化,但是可以选择不进行0值初始化。ZI属性仅仅来源于SPACE, DCB, DCD, DCDU, DCQ, DCQU, DCW, 或者DCWU。由以上定义,ZI属性的包含于RW属性,它是有初始值的RW数据。又例如在C语言中,代码为RO,静态变量和全局变量是RW,ZI的。

4.1.2 Image 的Load view 和 execution view

在下载的时候Image regions被放置在memory map当中,而在执行Image前,或许你需要将一些regions放置在它们执行时的地址上,并建立起ZI regions。例如,你初始化的RW数据需要从它在下载时的在ROM中的地址处移动到执行时RAM的地址处。

NOTE Load view 和execution view的详细定义见ADS_LinkerGuide 3-4

以上的描述包括二个内容,一是要指定各个section在load view和execution view时的地址即memory map,二是要在执行前根据这些地址进行section的初始化。

4.1.3 制定Memory map

制定memory map的方法基本上有二种,一是在link时使用命令行选项,并在程序执行前利用linker pre-define symbol使用汇编语言制定section的段初始化,二是使用scatter file。以上二种方法依应用程序的复杂度而定,一针对简单的情况,二针对复杂的情况。

可能会用到的工具/仪表
本站简介 | 意见建议 | 免责声明 | 版权声明 | 联系我们
CopyRight@2024-2039 嵌入式资源网
蜀ICP备2021025729号