打印
[ZLG-ARM]

请周工解说一下 smartARM 2200 中的程序问题

[复制链接]
1621|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
space_12|  楼主 | 2007-4-23 21:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在 startup.s 中有如下的一段程序:
    IF :DEF: EN_CRP
        IF  . >= 0x1fc
        INFO    1," The data at 0x000001fc must be 0x87654321. Please delete some source before this line."
        ENDIF
CrpData
    WHILE . < 0x1fc
    NOP
    WEND
CrpData1
    DCD     0x87654321          ;/*When the Data is 为0x87654321,user code be protected. 当此数为0x87654321时,用户程序被保护 */
    ENDIF
我查过一些资料 但是不详细 请懂的大虾解说一翻:
1) IF :DEF: EN_CRP
        IF  . >= 0x1fc
这两句 看不懂语法 不懂具体意思
2)WHILE . < 0x1fc
这句 也没见过语法 也不懂其意思

相关帖子

沙发
zlgARM| | 2007-4-24 22:24 | 只看该作者

space_12

和芯片加密有关。

首先,具体指令的用法没有必要抠的。

"."表示当前代码地址;

INFO是个伪指令,用于输出出错信息。

整个程序做的事情用一句话来概括,就是保证内部FLASH的0x1fc处为0x87654321。这样,芯片在下次复位时就会加密。

“    IF :DEF: EN_CRP
        IF  . >= 0x1fc
        INFO    1," The data at 0x000001fc must be 0x87654321. Please delete some source before this line."
        ENDIF”
用于检查当前地址是不是已经过了0x1fc.

"CrpData
    WHILE . < 0x1fc
    NOP
    WEND
CrpData1
    DCD     0x87654321          ;/*When the Data is 为0x87654321,user code be protected. 当此数为0x87654321时,用户程序被保护 */
    ENDIF"
是在用NOP指令填充0x1fc之前的地址,等填到0x1fc时,就填入0x87654321

使用特权

评论回复
板凳
space_12|  楼主 | 2007-4-25 15:58 | 只看该作者

谢谢 周工!

使用特权

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

本版积分规则

17

主题

188

帖子

1

粉丝