请教4150B bootloader 汇编错误

[复制链接]
2645|3
 楼主| wangharry 发表于 2007-7-5 09:41 | 显示全部楼层 |阅读模式
各位老大&nbsp;小弟我不太会用汇编&nbsp;请多多指教&nbsp;谢谢<br />init.s<br />&nbsp;&nbsp;&nbsp;&nbsp;GET&nbsp;memory.a<br />&nbsp;&nbsp;&nbsp;&nbsp;GET&nbsp;snds.a<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;&nbsp;&nbsp;&nbsp;Init,&nbsp;CODE,&nbsp;READONLY<br /><br />;&nbsp;---&nbsp;Define&nbsp;entry&nbsp;point<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXPORT&nbsp;&nbsp;__main&nbsp;&nbsp;;&nbsp;defined&nbsp;to&nbsp;ensure&nbsp;that&nbsp;C&nbsp;runtime&nbsp;system<br />__main&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;is&nbsp;not&nbsp;linked&nbsp;in<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ENTRY<br />;&nbsp;---&nbsp;Setup&nbsp;interrupt&nbsp;/&nbsp;exception&nbsp;vectors<br />&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;:DEF:&nbsp;ROM_AT_ADDRESS_ZERO<br />;&nbsp;If&nbsp;the&nbsp;ROM&nbsp;is&nbsp;at&nbsp;address&nbsp;0&nbsp;this&nbsp;is&nbsp;just&nbsp;a&nbsp;sequence&nbsp;of&nbsp;branches<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reset_Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Undefined_Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SWI_Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Prefetch_Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Abort_Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Reserved&nbsp;vector<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IRQ_Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FIQ_Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;ELSE<br />;&nbsp;Otherwise&nbsp;we&nbsp;copy&nbsp;a&nbsp;sequence&nbsp;of&nbsp;LDR&nbsp;PC&nbsp;instructions&nbsp;over&nbsp;the&nbsp;vectors<br />;&nbsp;(Note:&nbsp;We&nbsp;copy&nbsp;LDR&nbsp;PC&nbsp;instructions&nbsp;because&nbsp;branch&nbsp;instructions<br />;&nbsp;could&nbsp;not&nbsp;simply&nbsp;be&nbsp;copied,&nbsp;the&nbsp;offset&nbsp;in&nbsp;the&nbsp;branch&nbsp;instruction<br />;&nbsp;would&nbsp;have&nbsp;to&nbsp;be&nbsp;modified&nbsp;so&nbsp;that&nbsp;it&nbsp;branched&nbsp;into&nbsp;ROM.&nbsp;Also,&nbsp;a<br />;&nbsp;branch&nbsp;instructions&nbsp;might&nbsp;not&nbsp;reach&nbsp;if&nbsp;the&nbsp;ROM&nbsp;is&nbsp;at&nbsp;an&nbsp;address<br />;&nbsp;&gt&nbsp;32M).<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R8,&nbsp;#0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R9,&nbsp;Vector_Init_Block<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDMIA&nbsp;&nbsp;&nbsp;R9!,&nbsp;{R0-R7}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STMIA&nbsp;&nbsp;&nbsp;R8!,&nbsp;{R0-R7}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDMIA&nbsp;&nbsp;&nbsp;R9!,&nbsp;{R0-R7}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STMIA&nbsp;&nbsp;&nbsp;R8!,&nbsp;{R0-R7}<br /><br />;&nbsp;Now&nbsp;fall&nbsp;into&nbsp;the&nbsp;LDR&nbsp;PC,&nbsp;Reset_Addr&nbsp;instruction&nbsp;which&nbsp;will&nbsp;continue<br />;&nbsp;execution&nbsp;at&nbsp;'Reset_Handler'<br /><br />Vector_Init_Block<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;Reset_Addr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;Undefined_Addr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;SWI_Addr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;Prefetch_Addr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;Abort_Addr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;IRQ_Addr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;FIQ_Addr<br /><br />Reset_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reset_Handler<br />Undefined_Addr&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Undefined_Handler<br />SWI_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SWI_Handler<br />Prefetch_Addr&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Prefetch_Handler<br />Abort_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Abort_Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Reserved&nbsp;vector<br />IRQ_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IRQ_Handler<br />FIQ_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FIQ_Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;ENDIF<br /><br />;==========================================================<br />;&nbsp;The&nbsp;Default&nbsp;Exception&nbsp;Handler&nbsp;Vector&nbsp;Entry&nbsp;Pointer&nbsp;Setup<br />;==========================================================<br />FIQ_Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;SUB&nbsp;&nbsp;&nbsp;&nbsp;sp,&nbsp;sp,&nbsp;#4<br />&nbsp;&nbsp;&nbsp;&nbsp;STMFD&nbsp;&nbsp;&nbsp;&nbsp;sp!,&nbsp;{r0}<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;=HandleFiq<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;[r0]<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;[sp,&nbsp;#4]<br />&nbsp;&nbsp;&nbsp;&nbsp;LDMFD&nbsp;&nbsp;&nbsp;&nbsp;sp!,&nbsp;{r0,&nbsp;pc}<br /><br />IRQ_Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;SUB&nbsp;&nbsp;&nbsp;&nbsp;sp,&nbsp;sp,&nbsp;#4<br />&nbsp;&nbsp;&nbsp;&nbsp;STMFD&nbsp;&nbsp;&nbsp;&nbsp;sp!,&nbsp;{r0}<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;=HandleIrq<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;[r0]<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;[sp,&nbsp;#4]<br />&nbsp;&nbsp;&nbsp;&nbsp;LDMFD&nbsp;&nbsp;&nbsp;&nbsp;sp!,&nbsp;{r0,&nbsp;pc}<br /><br />Prefetch_Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;SUB&nbsp;&nbsp;&nbsp;&nbsp;sp,&nbsp;sp,&nbsp;#4<br />&nbsp;&nbsp;&nbsp;&nbsp;STMFD&nbsp;&nbsp;&nbsp;&nbsp;sp!,&nbsp;{r0}<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;=HandlePrefetch<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;[r0]<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;[sp,&nbsp;#4]<br />&nbsp;&nbsp;&nbsp;&nbsp;LDMFD&nbsp;&nbsp;&nbsp;&nbsp;sp!,&nbsp;{r0,&nbsp;pc}<br /><br />Abort_Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;SUB&nbsp;&nbsp;&nbsp;&nbsp;sp,&nbsp;sp,&nbsp;#4<br />&nbsp;&nbsp;&nbsp;&nbsp;STMFD&nbsp;&nbsp;&nbsp;&nbsp;sp!,&nbsp;{r0}<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;=HandleAbort<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;[r0]<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;[sp,&nbsp;#4]<br />&nbsp;&nbsp;&nbsp;&nbsp;LDMFD&nbsp;&nbsp;&nbsp;&nbsp;sp!,&nbsp;{r0,&nbsp;pc}<br /><br />Undefined_Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;SUB&nbsp;&nbsp;&nbsp;&nbsp;sp,&nbsp;sp,&nbsp;#4<br />&nbsp;&nbsp;&nbsp;&nbsp;STMFD&nbsp;&nbsp;&nbsp;&nbsp;sp!,&nbsp;{r0}<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;=HandleUndef<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;[r0]<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;[sp,&nbsp;#4]<br />&nbsp;&nbsp;&nbsp;&nbsp;LDMFD&nbsp;&nbsp;&nbsp;&nbsp;sp!,&nbsp;{r0,&nbsp;pc}<br /><br />SWI_Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;SUB&nbsp;&nbsp;&nbsp;&nbsp;sp,&nbsp;sp,&nbsp;#4<br />&nbsp;&nbsp;&nbsp;&nbsp;STMFD&nbsp;&nbsp;&nbsp;&nbsp;sp!,&nbsp;{r0}<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;=HandleSwi<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;[r0]<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;[sp,&nbsp;#4]<br />&nbsp;&nbsp;&nbsp;&nbsp;LDMFD&nbsp;&nbsp;&nbsp;&nbsp;sp!,&nbsp;{r0,&nbsp;pc}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;Main,&nbsp;CODE,&nbsp;READONLY<br /><br />;==========================================================<br />;&nbsp;The&nbsp;Reset&nbsp;Entry&nbsp;Point<br />;==========================================================<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXPORT&nbsp;&nbsp;&nbsp;&nbsp;Reset_Handler<br />Reset_Handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;/*&nbsp;Reset&nbsp;Entry&nbsp;Point&nbsp;*/<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;r1,&nbsp;=IntMask<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;=0xFFFFFFFF<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;[r1]<br /><br />[&nbsp;ROM_AT_ADDRESS_ZERO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*151行错误*/<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;=HandleSwi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;SWI&nbsp;exception&nbsp;table&nbsp;address<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;r1,&nbsp;=SystemSwiHandler<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;r1,&nbsp;][r0]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swi&nbsp;0xff&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;/*&nbsp;Call&nbsp;SWI&nbsp;Vector&nbsp;&nbsp;*/<br /><br />]<br />&nbsp;&nbsp;&nbsp;&nbsp;
 楼主| wangharry 发表于 2007-7-5 10:36 | 显示全部楼层

在线等

在线等....
hexenzhou 发表于 2007-7-5 10:49 | 显示全部楼层

!

[&nbsp;ROM_AT_ADDRESS_ZERO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把这行和下面的“]”行屏蔽掉就行了呗。
 楼主| wangharry 发表于 2007-7-5 11:11 | 显示全部楼层

[ ROM_AT_ADDRESS_ZERO 把这行和下面的“]”行屏蔽掉就行了呗。

我使过没有用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

133

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部