打印
[微控制器/MCU]

Keil平台中如何让程序在RAM中跑起来

[复制链接]
1740|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Massif123|  楼主 | 2010-1-31 10:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
此文转载自:海纳百“川”“毅”苦思甜的博客,http://blog.sina.com.cn/armfan

在应用Keil开发平台时,相对IAR平台而言,要想应用程序在RAM中运行,配置有点繁锁,首先程序开发者要知道你的目标芯片RAM空间的起始地址和空间大小;其次,程序开发者要配置一个脚本文件,以便程序调试运行时引导应用程序;最后需要在相应的工程选项中进行一些配置。
1、  确定目标芯片RAM空间的起始地址和空间大小:
LumianryLM3S8962为例,Flash是从0x00000000地址开始,空间大小为0x40000RAM是从0x20000000地址开始,空间大小为0x10000
2、配置一个脚本文件:
此脚本文件主要是用来引导应用程序从某一个地址开始运行,此文件扩展名是 .ini 。假设我们想让应用程序在ARM里面运行,并且从0x20000600地址处开始,其脚本代码如下:
FUNC void Setup (void) {

    SP = _RDWORD(0x20000000);            // 应用程序入口地址。

    PC = _RDWORD(0x20000004);            // PC指针为应用程序入口地址基础上加4
    _WDWORD(0xE000ED08, 0x20000000);     // 参数1为中断向量表的地址,参数2为应用程序入口地址。
}

LOAD RS485.axf INCREMENTAL              // 要载入对应工程编译产生的.axf文件。 很重要。
Setup();                                // 启动函数。

g,main                                  // 从主函数开始运行。
    3工程选项中进行一些配置。
    这里以RS485工程为例,介绍一下主要的一些配置,没有提及到的,采用通用配置;

1 Target选项配置
     图1中,IROM1:0x20000000RAM的起始地址,空间大小为0xE000IRAM1:起始地址为0x2000E000,空间大小为0x2000,这两个地址一定不能重合。

2 Debug选项配置
     此选项中不论是软仿还是硬件仿真,都要载入第二步的脚本文件,否则程序会从一个未知区域开始运行。在“Initialization File”选项框中点省略好按钮,在弹出的对话框中选择Ram.ini脚本文件。注意,此脚本文件最好放在对应工程目录的Obj文件里。如果工程被移动,此配置需重新置入。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

177

主题

276

帖子

1

粉丝