共2条
1/1 1 跳转至页
,VXWORKS,NUCLEUS,keil,for,arm,01a,ccd,13581980230, 启动代码
问
为什么这段代码可以在仿真的时候正常使用,但是下载到了EasyARM2200上就不行了呢?请指点!!
IMPORT |Image$$RO$$Limit|
IMPORT |Image$$RW$$Base|
IMPORT |Image$$ZI$$Base|
IMPORT |Image$$ZI$$Limit|
IMPORT Main ; 声明C程序中的Main()函数
AREA Start,CODE,READONLY ; 声明代码段Start
ENTRY ; 标识程序入口
CODE32 ; 声明32位ARM指令
Reset
LDR PC, ResetAddr
NOP
NOP
NOP
NOP
NOP
NOP
NOP
ResetAddr DCD ResetInit
ResetInit
LDR R0,=|Image$$RO$$Limit|
LDR R1,=|Image$$RW$$Base|
LDR R3,=|Image$$ZI$$Base|
CMP R0,R1
BEQ LOOP1
LOOP0 CMP R1,R3
LDRCC R2,[R0],#4
STRCC R2,[R1],#4
BCC LOOP0
LOOP1 LDR R1,=|Image$$ZI$$Limit|
MOV R2,#0
LOOP2 CMP R3,R1
STRCC R2,[R3],#4
BCC LOOP2
B Main ; 跳转到C程序代码Main()函数
END 答 1: re下载到FLASH里后,在FLASH里调试一下,单步跟踪,看看问题出在那里。 答 2: 下不了下载到FLASH,执行第一句就出错。看汇编代码,发现那里存在
LDR PC, ResetAddr
这个指令,但是执行之后就不知道跳到哪里去了 答 3: 可以试试这样应该是LDR PC, =ResetAddr 答 4: rePlease check the disassemble. 答 5: re 本人不知道你采用的是什么开发工具和仿真的模式,我原来遇到这种情况多半是地址的设置问题。也就是说,仿真时的地址和最后在Flash里面跑的地址是不同的,因此一上来肯定就飞了。 答 6: re所以建议LZ检查一下反汇编代码 :-)
IMPORT |Image$$RO$$Limit|
IMPORT |Image$$RW$$Base|
IMPORT |Image$$ZI$$Base|
IMPORT |Image$$ZI$$Limit|
IMPORT Main ; 声明C程序中的Main()函数
AREA Start,CODE,READONLY ; 声明代码段Start
ENTRY ; 标识程序入口
CODE32 ; 声明32位ARM指令
Reset
LDR PC, ResetAddr
NOP
NOP
NOP
NOP
NOP
NOP
NOP
ResetAddr DCD ResetInit
ResetInit
LDR R0,=|Image$$RO$$Limit|
LDR R1,=|Image$$RW$$Base|
LDR R3,=|Image$$ZI$$Base|
CMP R0,R1
BEQ LOOP1
LOOP0 CMP R1,R3
LDRCC R2,[R0],#4
STRCC R2,[R1],#4
BCC LOOP0
LOOP1 LDR R1,=|Image$$ZI$$Limit|
MOV R2,#0
LOOP2 CMP R3,R1
STRCC R2,[R3],#4
BCC LOOP2
B Main ; 跳转到C程序代码Main()函数
END 答 1: re下载到FLASH里后,在FLASH里调试一下,单步跟踪,看看问题出在那里。 答 2: 下不了下载到FLASH,执行第一句就出错。看汇编代码,发现那里存在
LDR PC, ResetAddr
这个指令,但是执行之后就不知道跳到哪里去了 答 3: 可以试试这样应该是LDR PC, =ResetAddr 答 4: rePlease check the disassemble. 答 5: re 本人不知道你采用的是什么开发工具和仿真的模式,我原来遇到这种情况多半是地址的设置问题。也就是说,仿真时的地址和最后在Flash里面跑的地址是不同的,因此一上来肯定就飞了。 答 6: re所以建议LZ检查一下反汇编代码 :-)
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |