打印
[ZLG-ARM]

请教周公向量问题。

[复制链接]
1696|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kk1271|  楼主 | 2007-2-28 09:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;中断向量表
Vectors
        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
这是你们在ads模版中的向量表,可是在keil生成的向量表中         DCD     0xb9205f80  被定义为nop指令。我的问题是:不是说中断向量和为0!
但是keil里这样中断向量和不时就违反这样的规则了吗?
请给解释一下!xiexie

相关帖子

沙发
zlgARM| | 2007-2-28 13:44 | 只看该作者

RE

芯片复位后,首先执行bootloader。
要根据bootloader的处理流程来判断0x14处填写的值。

比如,LPC2200系列芯片的bootloader要通过检查0x14处的值来决定是否运行用户自己编写的程序。这个时候,可能就要填写 DCD     0xb9205f80  。

但不同芯片的bootloader是不同的。要看具体芯片的bootloader是如何处理的,要确定这一点只要做试验就知道了。

使用特权

评论回复
板凳
computer00| | 2007-2-28 15:07 | 只看该作者

ISP软件可能会帮你干这件事的

你可以写个简单的程序,将地址0x14里面的内容读出来,然后通过串口发出来看看?

使用特权

评论回复
地板
kk1271|  楼主 | 2007-3-1 08:29 | 只看该作者

??

我指的就是LPC2200 我是在keil中查看反汇编才发现向量和不为零,0x14不为0xb9205f80!而是nop指令所生成,但程序可以正确脱机运行,希望周公给看看

使用特权

评论回复
5
zlgARM| | 2007-3-1 09:43 | 只看该作者

re

LPC2210/2212/2214 复位时会执行BOOTLOADER。

当用户代码位于片外bank0时,BOOTLOADER不会检查用户代码是否有效。

楼主用的芯片是LPC2210吗?2210是没有内部FLASH的,所以BOOTLOADER不会检查向量和,用户代码自然能脱机运行。

使用特权

评论回复
6
computer00| | 2007-3-1 22:04 | 只看该作者

看看这个讨论

使用特权

评论回复
7
zlgARM| | 2007-3-2 08:45 | 只看该作者

re

如果不用ISP,是需要注意我在5楼发表的帖子的。
做过了实验,如果用H-JTAG烧写程序到LPC2214的内部flash,累加和不为0则用户程序不能运行。

使用特权

评论回复
8
kk1271|  楼主 | 2007-3-2 09:53 | 只看该作者

??

谢谢oo提供的资料!原来nop指令是正确的!“keil realview, 是ADS的升级版。只要将Reserved Vector 保持为nop即可,不必计算累加和,累加和由flash utility计算.”

周公做的用H-JTAG烧写程序到LPC2214的内部flash的实验
应该是用的你自己的ads模版?
另外我想说ads的rv是2.0的,而keil的rv都已经3.0了!而周公还在使用ads!
是不是有点。。。。~~~!据我所知ads都是学习使用,做开发的话好像很少有人用!希望你们在keil上多提供一些技术支持!

使用特权

评论回复
9
zlgARM| | 2007-3-2 16:18 | 只看该作者

RE

谢谢您提意见。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

26

帖子

0

粉丝