首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

关于S3C2410的分散加载文件

关于S3C2410的分散加载文件

1.分散加载文件

Scatter file分散加载描述文件用于LARM链接器的输入参数它指定映像文件内部各区域的download与运行时位置。LARM将会根据scatter file生成一些区域相关的符号,它们是全局的供用户建立运行时环境时使用。通过这个文件可以指定程序的入口地址。在利用MDK进行实际应用程序开发时,常常需要使用道分散加载文件,例如以下情况:

存在复杂的地址映射:例如代码和数据需要分开放在在多个区域。

存在多种存储器类型:例如包含FlashROMSDRAM、快速SRAM。需要根据代码与数据的特性把他们放在不同的存储器中,比如中断处理部分放在快速SRAM内部来提高响应速度,而把不常用到的代码放到速度比较慢的Flash内。

函数的地址固定定位:可以利用Scatter file实现把某个函数放在固定地址,而不管其应用程序是否已经改变或重新编译。

利用符号确定堆与堆栈:

内存映射的IO:采用scatter file可以实现把某个数据段放在精确的地指处。

因此对于实际的嵌入式系统来说scatter file是必不可少的,因为嵌入式系统通常采用了ROMRAM,和内存映射的IO。关于Scatter file的相关知识非常多,详细内容可以参考MDK所带的帮助,下面给出一个简单实例。

LOAD_ROM 0x0000 0x8000

{

EXEC_ROM 0x0000 0x8000

{

*(+RO)

}

RAM 0x10000 0x6000

{

*(+RW, +ZI)

}

}

这个分散加载描述文件对应的分散加载映像如图3-12所示,文件中各项内容的含义分别是:

LOAD_ROM(下载区域名称) 0x0000(下载区域起始地址) 0x8000(下载区域最大字节数)

{

EXEC_ROM(第一执行区域名称) 0x0000(第一执行区域起始地址) 0x8000(第一执行区域最大字节数)

{

*(+RO(代码与只读数据))

}

RAM(第二执行区域名称) 0x10000(第二执行区域起始地址) 0x6000(第二执行区域最大字节数)

{

*(+RW(读写变量), +ZI(未初始化变量))

}

}

3-12 分散加载映像图

2.内嵌汇编语言

编译C时,可以通过__asm 汇编程序说明符调用内嵌汇编程序。说明符后面跟随有一列包含在大括号中的汇编程序指令。例如:

__asm

{

instruction [; instruction]

...

[instruction]

}

如果两条指令在同一行中,必须用分号将其分隔。如果一条指令占用多行,必须用反斜线符号(\)指定续行。可在内嵌汇编语言块内的任意位置处使用C注释。可在任何可以使用C语句的地方使用 __asm 语句。

RealView中国官方网站 http://www.realview.com.cn
好文章~大家来学习学习吧~~顶下哦~~[em68]
RealView中国官方网站 http://www.realview.com.cn
返回列表