看了一下CodeWarrior for ARM Developer Suite自带的Example,发现ZLG有很多东西是参考这些个例子来写的。在[你的安装目录]/ARM/ADSv1_2/Examples/embedded/embed中的vectors.s文件里有以下几句汇编
;;; Copyright ARM Ltd 2001. All rights reserved.
AREA Vect, CODE, READONLY
; These are example exception vectors and exception handlers
;
; Where there is ROM fixed at 0x0 (build_b), these are hard-coded at 0x0.
; Where ROM/RAM remapping occurs (build_c), these are copied from ROM to RAM.
; The copying is done automatically by the C library code inside __main.
; *****************
; Exception Vectors
; *****************
; Note: LDR PC instructions are used here, though branch (B) instructions
; could also be used, unless the ROM is at an address >32MB.
ENTRY
LDR PC, Reset_Addr
LDR PC, Undefined_Addr
LDR PC, SWI_Addr
LDR PC, Prefetch_Addr
LDR PC, Abort_Addr
NOP ; Reserved vector
LDR PC, IRQ_Addr
LDR PC, FIQ_Addr
IMPORT Reset_Handler ; In init.s
Reset_Addr DCD Reset_Handler
Undefined_Addr DCD Undefined_Handler
SWI_Addr DCD SWI_Handler
Prefetch_Addr DCD Prefetch_Handler
Abort_Addr DCD Abort_Handler
IRQ_Addr DCD IRQ_Handler
FIQ_Addr DCD FIQ_Handler
在ZLG用ARM Executable Image for lpc2200模板生成的Startup.s文件里也有类似的汇编语句
;interrupt vectors
;中断向量表
Reset
LDR PC, ResetAddr
LDR PC, UndefinedAddr
LDR PC, SWI_Addr
LDR PC, PrefetchAddr
LDR PC, DataAbortAddr
DCD 0xb9205f80
LDR PC, [PC, #-0xff0]
LDR PC, FIQ_Addr
ResetAddr DCD ResetInit
UndefinedAddr DCD Undefined
SWI_Addr DCD SoftwareInterrupt
PrefetchAddr DCD PrefetchAbort
DataAbortAddr DCD DataAbort
Nouse DCD 0
IRQ_Addr DCD 0
FIQ_Addr DCD FIQ_Handler
发现CodeWarrior for ARM Developer Suite的一个很好的特性,可以用printf,这个可比CodeWarrior Development Studio for HC08感觉好,以前第一次用08的时候想用printf却不行,如果每记错的话好像是报错的。所以要观察什么数据的话还要写到内存里去看,现在就比较方便了,直接printf就可以了
观察了一下ZLG为自己的芯片做的模版,发现自己也可以做一个只要建立一个工程,并往自己的工程文件里添加相应的启动代码等一些必要的配置文件(可以参考ZLG的那些文件),然后再到自己建立的工程里面把[工程名]_data这个文件夹删掉,然后另建一个文件夹,把工程文件夹里其他的文件拷贝到新建的文件夹里,并把这个文件夹放到
[你的安装目录]/ARM/ADSv1_2/Stationery文件夹下,这样用CodeWarrior for ARM Developer Suite新建工程的时候就会有你自己制作的模版了
有点想为LPC2210写一个头文件,因为以前用GP32或者GT60的时候只要include一个对应于芯片的头文件就可以了,比较简单。ZLG的模版里好像没有类似的头文件。
在看Example的时候,无意间看到以下代码