ARM的KEIL工程建立及编译过程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ARM 的KEIL 工程建立及编译过程 精简:

1)添加:Ext_RAM.ini 和RuninRAM.sct; 2)选中

,去掉

3)注意LOAD 1.axf INCREMENTAL // Download program 这个名要与工程名保持一致。

第一步:新建工程

点击Project-new uvision Project 新建工程,注意工程名没有后缀。

点是,自动生成启动代码,否,要自己写启动代码。 第二步:自己写c 程序(用户程序):

点击File-New 新建文件:注意文件名尾缀为.c。

U

n R

e g

i s

t e

r e

d

第三步:添加C 文件

选中Source Group1点击右键,进行文件添加。

第四步:COPY 三个文件:(第一个是用户程序,自己写就不需要添加,最后一个如果自动生成启动代码也不需要添加)Ext_RAM.ini 和RuninRAM.sct

必须添加。

Ext_RAM.ini :J-LINK 初始化脚本,必须添加。 代码执行前必须要初始化CPU 内部的一些寄存器。该文件就是做初始化工作,给J-LINK 用。J-LINK 通过读取该配置文件,初始化目标板主CPU 相关的寄存器。 RuninRAM.sct:代码编译时需要的链接文件,其主要作用就是组织代码的到该脚本指定的地址。

S3C2440A.s:初始化代码(启动代码) 小知识点:RuninRAM.sct:代码分析

U

n R

e g

i s

t e

r e

d

; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************************* ; Run in RAM

LR_ROM1 0x30000000 {

; load region 程序运行起始地址。内存起始地址固定0x30000000 ER_ROM1 0x30000000 0x0040000 { // 0100

; load address = execution address 程序的下载地址,及程序容量 *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) }

RW_RAM1 0x30040000 0x0040000 { ; RW data RW 段起始地址 .ANY (+RW +ZI) }

RW_IRAM1 0x40000000 0x00001000 {

//芯片内部4k sram 空间,固定式0x40000000开始。 .ANY (+RW +ZI) } }

第五步:配置

U

n R

e g

i s

t e

r e

d

点击

在target 选项中如图进行设置,注意Xtal:设置的时钟频率只是仿真时有用。

在OUTPUT 选项中选中HEX FILE。

Listing、User、C/C++、Asm 选择默认即可 Linker 安装如下进行设置

Debug 安装如图进行设置

U

n R

e g

i s

t e

r e

d

点击Utilities:安装如下进行设置。

Update target before debugging:选中每次自动更新flash,如果程序在内存中运行要去掉。

第六步:通过keil 下载程序到norflash:如果要烧写到flash 需要点击setting 后点击ADD 进行添加响应的norflash 型号。

U

n R

e g

i s

t e r e

d

注意:不建议用该方法进行程序烧写,因为有时候可能导致程序经常复位,可能是keil 自身编译器问题。

第七步:如果用J-LINK 仿真调试时需要将:

Ext_RAM.ini 里面的:

Init(); // Initialize memory

LOAD 1.axf INCREMENTAL // Download program 这个名要与工程名保持一致。 PC = 0x30000000; // Setup for Running

// g, main // Goto Main

U

n R

e g

i s

t e

r e

d

第八步:如果要烧写程序,需要先将keil

的修改如下:

; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************************* ; Run in RAM

LR_ROM1 0x30000000 { ; load region

ER_ROM1 0x30000000 0x0200000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) }

RW_RAM1 0x30800000 0x0800000 { ; RW data .ANY (+RW +ZI) }

RW_IRAM1 0x40000000 0x00001000 { .ANY (+RW +ZI) } }

修改为:

; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************************* ; Run in RAM

LR_ROM1 0x00000000 { ; load region 程序存放到norflash 中。 ER_ROM1 0x00000000 0x0200000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) }

RW_RAM1 0x30800000 0x0800000 { ; RW data .ANY (+RW +ZI) }

RW_IRAM1 0x40000000 0x00001000 { .ANY (+RW +ZI) } }

然后再编译生成hex 烧录代码,然后通过J-LINK 烧写即可。

U

n R

e g

i s

t e

r e

d

相关文档
最新文档