打印
[ZLG-ARM]

LPC2220给我当头一棒!!!!

[复制链接]
2341|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
VisionShow|  楼主 | 2007-3-27 20:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在**中所有菲利普的芯片都是头8字(4字节为一字)累加和为零作为判断用户程序是否有效的标准,于是就这样写了程序:(我用的是GCC,没有用ADS)
_start:
  B      Reset
  B      Reset
  B      Reset
  B      Reset
  B      Reset
  .long  0x9DDFFFFD
  LDR    PC,  [PC, #-0xFF0]
  B      Reset

Reset:
......

在LPC2103,2214,2138等有内部FLASH的片子上跑都很正常,用了LPC2220后,这样就不行了,无法启动程序!!!!, 就这个问题折腾了近一个礼拜,打了不少电话,最后没有办法只好买了一块开发板,把附带的程序反汇编出来看,一句一句的对,最后却得出这样的结果,真是一个大坑呀!
以下是能够启动的代码:
_start:
  LDR    PC,  Reset
  LDR    PC,  Undefine
  LDR    PC,  SWI
  LDR    PC,  Prefetch
  LDR    PC,  DataAbort
  .long  0xB9205F80
  LDR    PC,  [PC, #-0xFF0]
  LDR    PC,  FIQ

Reset:
.long    SystemReset
Undefine:
.long    SystemReset
SWI:
.long    SystemReset
Prefetch:
.long    SystemReset
DataAbort:
.long    SystemReset
FIQ:
.long    SystemReset

相关帖子

沙发
有意思| | 2007-3-27 22:08 | 只看该作者

早就晕了

使用特权

评论回复
板凳
hotpower| | 2007-3-27 22:20 | 只看该作者

不一定都是0xB9205F80~~~

使用特权

评论回复
地板
VisionShow|  楼主 | 2007-3-27 22:40 | 只看该作者

奇怪


不一定都是0xB9205F80,的却,因为程序都不是一致的,但所有的资料上都是: 头32字节的累加和为0, 上面的程序明显违反了这条原则
估计在片内ROM中还进行了其他判断,不然第一个启动程序就应该是对的

使用特权

评论回复
5
VisionShow|  楼主 | 2007-3-27 23:47 | 只看该作者

请周工解释一下这种现象

这样能运行
_start:
  B      SystemReset
  B      SystemReset
  B      SystemReset
  B      SystemReset
  LDR    PC, DataAbort
  .long  0xA3400FF2
  LDR    PC,  [PC, #-0xFF0]
  B      SystemReset

SystemReset:
.......

这样不能运行
_start:
  B      SystemReset
  B      SystemReset
  B      SystemReset
  B      SystemReset
  B      SystemReset
  .long  0xA3C00FF3
  LDR    PC,  [PC, #-0xFF0]
  LDR    PC, FIQ

FIQ:
.long    SystemReset

SystemReset:

使用特权

评论回复
6
high| | 2007-3-28 09:05 | 只看该作者

这个

只是说自己不熟悉工具了

隐约记得isp工具也提供了自动计算功能。

使用特权

评论回复
7
yanhan| | 2007-3-28 13:48 | 只看该作者

这是相对跳转和绝对跳转的区别,也就是B指令和LDR指令的区

不能启动的代码是因为reset位置不确定,在内部Flash跑时就在启动代码后面,在外部flash跑时,地址就远了。
而能启动的代码是因为reset的位置固定,就在异常向量表的后面,而在这个地址上再放SystemReset程序的地址,虽然这个地址也会因为flash位置不同而不同,但是它不在累加和计算范围内。

使用特权

评论回复
8
VisionShow|  楼主 | 2007-3-28 15:22 | 只看该作者

楼上不要误导人


楼上,你所说的只有“它不在累加和计算范围内”这句话是对的,其他都是错的,
 

使用特权

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

本版积分规则

7

主题

28

帖子

0

粉丝