这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » KEIL,ARM,HEX,ISP KEIL ARM编译出的*.HEX文件ISP校

共7条 1/1 1 跳转至

KEIL,ARM,HEX,ISP KEIL ARM编译出的*.HEX文件ISP校验不过

院士
2006-09-17 18:14:16     打赏
KEIL,ARM,HEX,ISP KEIL ARM编译出的*.HEX文件ISP校验不过



关键词: 译出     文件     校验     不过    

院士
2006-12-22 22:43:00     打赏
2楼
问 我用的是KEIL ARM演示版,可以形成16k的代码

isp程序用的是LPC2000 Flash Utility V2.2.1
V2.2.3都试过
用ADS1.2编译的*.HEX文件ISP没问题 1: 需要自己修改startup.s文件的,在新建工程时,问你是否添加startup.s文件,一定要选yes,然后修改这个文件。

将保留中断向量的那个nop指令,改成能使中断向量和为0的那个值(具体是多少,记不得了,你去ADS的那个startup文件看看吧)。 2: 00在误导大家中断向量和为0,是由编译器自动生成的,用户不必理会。
3: 不会吧?我一直都是这样改的。。。。。。用原来的startup.s文件,生成的hex文件为:
:1000000018F09FE518F09FE518F09FE518F09FE5C0
:1000100018F09FE50000A0E1F0FF1FE518F09FE554
:1000200058000000400000004400000048000000AC

修改成下面的样子:


; Exception Vectors
;  Mapped to Address 0.
;  Absolute addressing mode must be used.
;  Dummy Handlers are implemented as infinite loops which CAN be modified.

Vectors         LDR     PC, Reset_Addr         
                LDR     PC, Undef_Addr
                LDR     PC, SWI_Addr
                LDR     PC, PAbt_Addr
                LDR     PC, DAbt_Addr
                DCD     0xB9205F80                            ; Reserved Vector
;               LDR     PC, IRQ_Addr
                LDR     PC, [PC, #-0x0FF0]     ; Vector from VicVectAddr
                LDR     PC, FIQ_Addr

编译后生成的汇编代码:


   232: Vectors         LDR     PC, Reset_Addr          
0x00000000  E59FF018  LDR       PC,[PC,#0x0018]
   233:                 LDR     PC, Undef_Addr
0x00000004  E59FF018  LDR       PC,[PC,#0x0018]
   234:                 LDR     PC, SWI_Addr
0x00000008  E59FF018  LDR       PC,[PC,#0x0018]
   235:                 LDR     PC, PAbt_Addr
0x0000000C  E59FF018  LDR       PC,[PC,#0x0018]
   236:                 LDR     PC, DAbt_Addr
   237:                 DCD     0xB9205F80                            ; Reserved Vector  
   238: ;               LDR     PC, IRQ_Addr
0x00000010  E59FF018  LDR       PC,[PC,#0x0018]
0x00000014  B9205F80  STMLTDB   R0!,{R7-R12,R14}
   239:                 LDR     PC, [PC, #-0x0FF0]     ; Vector from VicVectAddr
0x00000018  E51FFFF0  LDR       PC,[PC,#-0x0FF0]
   240:                 LDR     PC, FIQ_Addr


hex文件也变了:
:1000000018F09FE518F09FE518F09FE518F09FE5C0
:1000100018F09FE5805F20B9F0FF1FE518F09FE51D
:1000200058000000400000004400000048000000AC
:100030004C000000000000005000000054000000D0


楼主可以试试,把下面几个加起来,是不是等于0?
18F09FE5 18F09FE5 18F09FE5 18F09FE5
18F09FE5 805F20B9 F0FF1FE5 18F09FE5

(注意,由于是小端模式,需要把字按字节倒过来,即18F09FE5变成E59FF018)
4: 我没改过,不过程序可以正常运行 5: 00一直在做无用功如果编译器连这个也做不了,这个编译器该进垃圾箱了! 6: 00lpc ARM有中断向量和为0的要求,00所用的aduc ARM好像没有这个要求(不清楚) 7: 但是我的编译器的确这样呀,从生成的hex文件也可以看出,它没有搞向量累加和为0。

我刚刚发的代码,是一个我实际中用的LPC2138的代码,我开始也奇怪,为何编译器连这个也没搞?

难道是在哪里可以设置的吗?云中月8888可否把你生成的hex文件头部发上来看看?

看看这个帖:http://bbs.21ic.com/club/bbs/list.asp?boardid=39&t=1999734&tp=%u8BF7%u95EE%u5468%u5DE5%uFF0C%u6211%u5728%u770B%u6DF1%u5165%u6D45%u51FAARM7%u8FD9%u672C%u4E66%u65F6%uFF0C%u6709%u51E0%u53E5%u6CA1%u770B%u660E%u767D 8: 00:1000000018F09FE518F09FE518F09FE518F09FE5C0
:1000100018F09FE50000A0E1F0FF1FE518F09FE554
:1000200058000000400000004400000048000000AC
:100030004C000000000000005000000054000000D0
9: 向量和为0是向量和为0是由philip lpc2000 flash utility自动加上去的。不是由编译器加上去的。
原来没计算过累加和,但程序以后一直正常运行。
今天做了个实验,累加和不为0,用lpc2000 flash utility送入程序,再从ARM将数据读出,发现累加和变为0了,说明累加和是由lpc2000 flash utility自动计算的。


10: 晕菜……那zlg ARM那本书里好象没讲…………只是在启动文件里面,狂讲启动代码中的那个向量和~~~~~~~

看来是烧写程序动了它的手脚?有机会我去验证一下。 11: 可是keil ARM c 编译的结果确实存在问题云说
00一直在做无用功
如果编译器连这个也做不了,这个编译器该进垃圾箱了!

可是keil ARM c 编译的结果确实存在问题

相反,ads却没这个问题 12: 只要将Reserved Vector 保持为nop即可我用的是keil realview, 是ADS的升级版。只要将Reserved Vector 保持为nop即可,不必计算累加和,累加和由flash utility计算.
看资料:
philips provide a ready made FLASH In System Programming utility for the PC which CAN be used to program the development board.This tool automatically calculates and adds the program signature to your code,to ensure that you program will run.If you are using this tool to program the FLASH,you code should have a NOP instruction on the unused vector for this tool to work correctly.

菜鸟
2009-12-17 15:25:20     打赏
3楼

startup.s:Error:A9932E:This Evaluation version has expired .please contact your supplier
Target not created



怎么解决??
求教,


菜鸟
2009-12-17 15:28:29     打赏
4楼

我刚下载的MDK315B, 安装后调试一个小ARM源程序,不能生成HEX.文件


菜鸟
2009-12-17 15:28:50     打赏
5楼

我刚下载的MDK315B, 安装后调试一个小ARM源程序,不能生成HEX.文件


菜鸟
2009-12-17 15:29:23     打赏
6楼

我刚下载的MDK315B, 安装后调试一个小ARM源程序,不能生成HEX.文件


菜鸟
2009-12-17 15:30:12     打赏
7楼

我刚下载的MDK315B, 安装后调试一个小ARM源程序,不能生成HEX.文件


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]