打印
[ZLG-ARM]

启动代码一问

[复制链接]
1805|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
leonlais|  楼主 | 2008-11-30 10:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
QAWSDEDR| | 2008-11-30 16:44 | 只看该作者

你来问,我来答!

DCD         0xb9206e50        ;前8个32位寄存器的二进制相加和为0。LDR         PC, [PC, #-0x120]  ;获得IRQ中断程序函数指针。计算看另外一贴!

使用特权

评论回复
板凳
leonlais|  楼主 | 2008-11-30 19:02 | 只看该作者

具体是怎么算的?

DCD         0xb9206e50        ;这是保留地址,我知道它要使得前8个32位寄存器的二进制相加为0,但是它是怎么算出来的呢?这前8个寄存器的2进制值是指?

使用特权

评论回复
地板
ZLG_Dengz| | 2008-11-30 23:12 | 只看该作者

RE

  呵呵, 你要你使用下面的代码其值就一定是: 0xb9206e50
  Reset                                                                        LDR      PC, ResetAddr
        LDR      PC, UndefinedAddr
        LDR      PC, SWI_Addr
        LDR      PC, PrefetchAddr
        LDR      PC, DataAbortAddr
        DCD      0xb9206e50
        LDR      PC, [PC, #-0x120]
        LDR      PC, FIQ_Addr

ResetAddr           DCD     ResetInit
UndefinedAddr       DCD     Undefined
SWI_Addr            DCD     SoftwareInterruptAdd
PrefetchAddr        DCD     PrefetchAbort
DataAbortAddr       DCD     DataAbort
Nouse               DCD     0
IRQ_Addr            DCD     0
FIQ_Addr            DCD     FIQ_Handler 

因为通过DCD为各异常向量分配了确定的地址空间来存储异常处理函数地址。这使得0x00000000到0x0000001c中除0x00000014外,存储着确定的值, 这样我们也就可以计算出0x00000014应该存放的值(0xb9206e50). 上电后,系统会判断前8个字之和是否为零,以确定代码是否有效。    

使用特权

评论回复
5
leonlais|  楼主 | 2008-12-1 10:34 | 只看该作者

RE

因为通过DCD为各异常向量分配了确定的地址空间来存储异常处理函数地址。这使得0x00000000到0x0000001c中除0x00000014外,存储着确定的值.
这确定的值哪来的??

使用特权

评论回复
6
wlq_9| | 2008-12-1 11:00 | 只看该作者

混编代码

对应的机器码.
用hjtag会自动计算向量和.....

使用特权

评论回复
7
leonlais|  楼主 | 2008-12-1 11:45 | 只看该作者

RE 6楼

对应的机器码,就是说各异常向量对应的处理函数所对应的机器码?
比如
LDR      PC, ResetAddr
ResetAddr           DCD     ResetInit


ResetInit所对应的机器码?
那么异常向量表中的这些代码是不是固定的?(针对一个芯片的)

使用特权

评论回复
8
wlq_9| | 2008-12-1 11:49 | 只看该作者

不固定

和你的代码有关.但是,由于中断向量这一块一般都作成起动代码或者是模板,相对来说比较固定,因此,这个值通常算一次就行了.除非你重新修改了中断向量所在的代码,否则,这个值不变.

使用特权

评论回复
9
leonlais|  楼主 | 2008-12-1 11:51 | 只看该作者

RE 楼上各位

谢谢各位给小弟解释得那么清楚,谢谢

使用特权

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

本版积分规则

17

主题

26

帖子

0

粉丝