新浪博客

LPC2378  ADS——KEIL——Jlink

2013-06-24 10:52阅读:
预备
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存储器映射
LPC2378 <wbr> <wbr>ADS——KEIL——Jlink
正文
目的:将ADS下的LPC2378例程转换到keil 平台下,并利用keil平台下的JLINK实现调试下载。

平台:
Keil
LPC2378 <wbr> <wbr>ADS——KEIL——Jlink
Jlink

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

3、 ADS工程文件全部考到Keil 工程文件夹下,后在工程中将文件都加入(除了scf文件)
ADS keil
LPC2378 <wbr> <wbr>ADS——KEIL——Jlink LPC2378 <wbr> <wbr>ADS——KEIL——Jlink
注意:
1)、不要将scf文件加入到keil工程下,不然编译会将其一起加入编译导致出错,scf文件在工程配置中设置
LPC2378 <wbr> <wbr>ADS——KEIL——Jlink
2LPC2378例程 有三个分散加载模式,分别是直接加载到RAM中,加载到flash,发布模式(与加载到flash一致)。
三种模式 分别对应上述 mem_b.scfmem_c.scfmem_a.scf(与c是相同的)。
三个文件的区别主要是根据不同的板子的flashROMRAM地址决定的,这里根据前面LPC2300存储器映射决定。
不同的分散加载模式对最后的Jlink 设置也有影响,后面会详述。

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

Ø Target下配置如图,注意不要选Use MicroLIB LPC2378 <wbr> <wbr>ADS——KEIL——Jlink

Ø Output主要是要选create HEX file

LPC2378 <wbr> <wbr>ADS——KEIL——Jlink
Ø Link 配置如下 配置entry point R/Obase R/Wbase(就是flash base 地址和 RAMbase 地址 默认一般是正确的)
LPC2378 <wbr> <wbr>ADS——KEIL——Jlink
Ø Debug配置 选择Jlink后点设置,如果板子与Jlink已连,这时点Jlink 或者Target应该会显示响应的信息(Jtag speed不要选太高最好(<200)是选ADAPTIVE CLOCKING LPC2378 <wbr> <wbr>ADS——KEIL——Jlink
LPC2378 <wbr> <wbr>ADS——KEIL——Jlink

Ø Utilities 选择Jlink 点设置 最重要的是设置好RAM base地址和size 以及Flash base 地址与size LPC2378 选择的是LPC2000IAP2 512Kb Flash 注意要在下面要重新设置base 地址与size
LPC2378 <wbr> <wbr>ADS——KEIL——Jlink
LPC2378 <wbr> <wbr>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.cn/dpool/blog/s/blog_67ed0acc0101c825.html?vt=4

我的更多文章

下载客户端阅读体验更佳

APP专享