加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

LPC2378  ADS——KEIL——Jlink

(2013-06-24 10:52:49)
分类: ARM

预备

1
ROM主要指:NAND FlashNor Flash
RAM
主要指:PSRAMSDRAMSRAMDDRAM

 

2arm的映像文件

arm映像文件其实就是可执行文件,包括binhex两种格式,可以直接烧到rom里执行。axd调试中,是axf文件,也是一种映像文件,只是在bin文件中加了一个文件头和一些调试信息。

 

映像文件一般由域组成,域最多由三个输出段组成(RO,RW,ZI)组成,输出段又由输入段组成。

Ø  所谓域,指的就是整个bin映像文件所处在的区域,它又分为加载域和运行域

加载域就是映像文件被静态存放的工作区域,一般来说flash里的 整个bin文件所在的地址空间就是加载域,当然在程序一般都不会放在 flash里执行,一般都会搬到sdram里运行工作,它们在被搬到sdram里工作所处的地址空间就是运行域。

Ø  我们输入的代码,一般有代码部分和数据部分,这就是所谓的输入段,经过编译后

就变成了bin文件中ro段和rw段,还有所谓的zi段,这就是输出段。对于加载域中的输出段,一般来说ro段后面紧跟着rw段,rw段后面紧跟着zi段。在运行域中这些输出段并不连续,但rwzi一定是连着的。zi段和rw段中的数据其实可以是rw属性。

 

3LPC2300存储器映射

http://s11/mw690/658bb27ftdfdff0613a7a&690 ADS——KEIL——Jlink" TITLE="LPC2378  ADS——KEIL——Jlink" />

正文

目的:将ADS下的LPC2378例程转换到keil 平台下,并利用keil平台下的JLINK实现调试下载。

 

平台:

Keil

http://s7/mw690/658bb27f07cc99a744296&690 ADS——KEIL——Jlink" TITLE="LPC2378  ADS——KEIL——Jlink" /> 

Jlink

 

 http://s5/mw690/658bb27f4dfe009d74da4&690 ADS——KEIL——Jlink" TITLE="LPC2378  ADS——KEIL——Jlink" />

1、  keil下新建工程,选择LPC2378

 http://s13/mw690/658bb27f07cc99a956c1c&690 ADS——KEIL——Jlink" TITLE="LPC2378  ADS——KEIL——Jlink" />

2、  会提示是否加载LPC2300.S可以选择加载后可以删除,这个文件相当于ADS里面的Startup.s是程序启动文件(就是复位、中断、main跳转之类的),由于将ADS工程移到这边可以不需要keil自带的LPC2300.S

 

3、  ADS工程文件全部考到Keil 工程文件夹下,后在工程中将文件都加入(除了scf文件)

ADS                          keil

        http://s15/mw690/658bb27f4dfe009dfc91e&690 ADS——KEIL——Jlink" TITLE="LPC2378  ADS——KEIL——Jlink" />               http://s12/mw690/658bb27f4dfe009ea566b&690 ADS——KEIL——Jlink" TITLE="LPC2378  ADS——KEIL——Jlink" />

注意:

1)、不要将scf文件加入到keil工程下,不然编译会将其一起加入编译导致出错,scf文件在工程配置中设置

http://s2/mw690/658bb27f4dfe009f3b801&690 ADS——KEIL——Jlink" TITLE="LPC2378  ADS——KEIL——Jlink" />

2LPC2378例程 有三个分散加载模式,分别是直接加载到RAM中,加载到flash,发布模式(与加载到flash一致)。

三种模式 分别对应上述 mem_b.scfmem_c.scfmem_a.scf(与c是相同的)。

三个文件的区别主要是根据不同的板子的flashROMRAM地址决定的,这里根据前面LPC2300存储器映射决定。

   不同的分散加载模式对最后的Jlink 设置也有影响,后面会详述。

 

4、  keil工程配置 ,主要注意以下几点

 

Ø  Target下配置如图,注意不要选Use MicroLIBhttp://s13/mw690/658bb27f4dfe009f96dec&690 ADS——KEIL——Jlink" TITLE="LPC2378  ADS——KEIL——Jlink" />

 

Ø  Output主要是要选create HEX file

 

 http://s5/mw690/658bb27f4dfe009fe9b84&690 ADS——KEIL——Jlink" TITLE="LPC2378  ADS——KEIL——Jlink" />

Ø  Link 配置如下 配置entry point R/Obase R/Wbase(就是flash base 地址和 RAMbase 地址 默认一般是正确的)

http://s7/mw690/658bb27f4dfe00a0819a6&690 ADS——KEIL——Jlink" TITLE="LPC2378  ADS——KEIL——Jlink" /> 

Ø Debug配置 选择Jlink后点设置,如果板子与Jlink已连,这时点Jlink 或者Target应该会显示响应的信息(Jtag speed不要选太高最好(<200)是选ADAPTIVE CLOCKINGhttp://s2/mw690/658bb27f4dfe00a0f3ca1&690 ADS——KEIL——Jlink" TITLE="LPC2378  ADS——KEIL——Jlink" />

http://s1/mw690/658bb27f4dfe00a1062f0&690 ADS——KEIL——Jlink" TITLE="LPC2378  ADS——KEIL——Jlink" />

 

Ø  Utilities 选择Jlink 点设置 最重要的是设置好RAM base地址和size 以及Flash base 地址与size   LPC2378 选择的是LPC2000IAP2 512Kb Flash 注意要在下面要重新设置base 地址与size

http://s7/mw690/658bb27f4dfe00a1d9b96&690 ADS——KEIL——Jlink" TITLE="LPC2378  ADS——KEIL——Jlink" />

http://s12/mw690/658bb27f07cc99a937c0b&690 ADS——KEIL——Jlink" TITLE="LPC2378  ADS——KEIL——Jlink" />

这样keil工程配置与Jlink配置基本就可以了。

 

5、  编译连接错误解决

主要是Startup.s中的错误

Ø  warning: A1876W: Use of '|' as a synonym for the :OR: operator is deprecated.

解决方法:"|"修改为":OR:"

 

Ø  warning: A1608W: MOV pc, instruction used, but BX is preferred
解决方法:MOV pc, 替换为 BX

 

Ø  Error: L6238E: os_cpu_a.o(subr) contains invalid call from '~PRES8 (The user did not require code to preserve 8-byte aligment of 8-byte data objects)' function to 'REQ8 (Code was permitted to depend on the 8-byte aligment of 8-byte data items)' function OSIntExit.
解决方法:在汇编程序前面加上PRESERVE8

PRESERVE8(不要顶格)
AREA |subr|, CODE, READONLY
IMPORT OSIntExit

    参考http://blog.sina.com.cn/s/blog_67ed0acc0101c825.html

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有