[ZLG-ARM] 请周工解说一下 smartARM 2200 中的程序问题

[复制链接]
 楼主| space_12 发表于 2007-4-23 21:10 | 显示全部楼层 |阅读模式
在&nbsp;startup.s&nbsp;中有如下的一段程序:<br />&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;:DEF:&nbsp;EN_CRP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;&nbsp;.&nbsp;&gt=&nbsp;0x1fc<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INFO&nbsp;&nbsp;&nbsp;&nbsp;1,&quot;
The&nbsp;data&nbsp;at&nbsp;0x000001fc&nbsp;must&nbsp;be&nbsp;0x87654321.
Please&nbsp;delete&nbsp;some&nbsp;source&nbsp;before&nbsp;this&nbsp;line.&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ENDIF<br />CrpData<br />&nbsp;&nbsp;&nbsp;&nbsp;WHILE&nbsp;.&nbsp;&lt&nbsp;0x1fc<br />&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;WEND<br />CrpData1<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x87654321&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;/*When&nbsp;the&nbsp;Data&nbsp;is&nbsp;为0x87654321,user&nbsp;code&nbsp;be&nbsp;protected.&nbsp;当此数为0x87654321时,用户程序被保护&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;ENDIF<br />我查过一些资料&nbsp;但是不详细&nbsp;请懂的大虾解说一翻:<br />1)&nbsp;IF&nbsp;:DEF:&nbsp;EN_CRP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;&nbsp;.&nbsp;&gt=&nbsp;0x1fc<br />这两句&nbsp;看不懂语法&nbsp;不懂具体意思<br />2)WHILE&nbsp;.&nbsp;&lt&nbsp;0x1fc<br />这句&nbsp;也没见过语法&nbsp;也不懂其意思
zlgARM 发表于 2007-4-24 22:24 | 显示全部楼层

space_12

和芯片加密有关。<br /><br />首先,具体指令的用法没有必要抠的。<br /><br />&quot;.&quot;表示当前代码地址;<br /><br />INFO是个伪指令,用于输出出错信息。<br /><br />整个程序做的事情用一句话来概括,就是保证内部FLASH的0x1fc处为0x87654321。这样,芯片在下次复位时就会加密。<br /><br />“&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;:DEF:&nbsp;EN_CRP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;&nbsp;.&nbsp;&gt=&nbsp;0x1fc<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INFO&nbsp;&nbsp;&nbsp;&nbsp;1,&quot;
The&nbsp;data&nbsp;at&nbsp;0x000001fc&nbsp;must&nbsp;be&nbsp;0x87654321.
Please&nbsp;delete&nbsp;some&nbsp;source&nbsp;before&nbsp;this&nbsp;line.&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ENDIF”<br />用于检查当前地址是不是已经过了0x1fc.<br /><br />&quot;CrpData<br />&nbsp;&nbsp;&nbsp;&nbsp;WHILE&nbsp;.&nbsp;&lt&nbsp;0x1fc<br />&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;WEND<br />CrpData1<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x87654321&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;/*When&nbsp;the&nbsp;Data&nbsp;is&nbsp;为0x87654321,user&nbsp;code&nbsp;be&nbsp;protected.&nbsp;当此数为0x87654321时,用户程序被保护&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;ENDIF&quot;<br />是在用NOP指令填充0x1fc之前的地址,等填到0x1fc时,就填入0x87654321<br /><br />
 楼主| space_12 发表于 2007-4-25 15:58 | 显示全部楼层

谢谢 周工!

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

188

帖子

1

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

17

主题

188

帖子

1

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