打印
[ZLG-ARM]

有效用户代码

[复制链接]
1657|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
arm_fan168|  楼主 | 2009-5-28 18:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  问大家一个问题,LPC21XX的用户手册上的flash编程那部分说bootloader在进入用户程序前要检查用户程序是否合法,具体的就是向量表中的各向量内容的校验和为0,0x14那个位置是中断向量的保留位置,内容应该是其它向量的校验和的二进制补码。可我用IAR编译器生成的代码,中断向量表内容的校验和并不是0,这是怎么回事?

相关帖子

沙发
zlg_Wankai| | 2009-5-31 09:17 | 只看该作者

re

您好:
    我这边测试的IAR代码校验就是为0的,我的工程是LPC2103。

使用特权

评论回复
板凳
arm_fan168|  楼主 | 2009-5-31 18:12 | 只看该作者

谢谢

谢谢版主的回答。后来我用IAR5.11测试了一下,能够生成校验和,工程也用的是LPC2103,但是用IAR4.42版本就不行,版主用的是哪个版本?

使用特权

评论回复
地板
john_light| | 2009-5-31 18:50 | 只看该作者

这个挺有意思

  这个可能和特定的编译器有关,但是有一点我们可以适当关注,那就是编程器(软件)。
  因为常用的编程工具软件(调试及下载工具)往往考虑了这个细节,也就是说,软件在装载了用户代码之后,自动计算生成校验码并放到合适的位置,然后才开始下载到芯片中。这种情况下,编译器生成的代码中,向量位置不必是校验和为零的数据。
  当我们用到那些不支持该特性的工具软件时,我们才需要手工计算该值。

At 0x14 the user should insert a signature (checksum). This signature enables the bootloader to determine if there is valid user code in the Flash. Currently most of the Flash programming tools (debuggers and ISP utility) have this feature built-in so the end user need not worry about it. If the tool does not provide this feature then the value has to be computed manually and has to be inserted at 0x14. Details on computation of checksum could be found in the Flash programming chapter in the ARM LPC device User Manual.

使用特权

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

本版积分规则

12

主题

223

帖子

0

粉丝