[ZLG-ARM] 有效用户代码

[复制链接]
2735|3
 楼主| arm_fan168 发表于 2009-5-28 18:56 | 显示全部楼层 |阅读模式
  问大家一个问题,LPC21XX的用户手册上的flash编程那部分说bootloader在进入用户程序前要检查用户程序是否合法,具体的就是向量表中的各向量内容的校验和为0,0x14那个位置是中断向量的保留位置,内容应该是其它向量的校验和的二进制补码。可我用IAR编译器生成的代码,中断向量表内容的校验和并不是0,这是怎么回事?
zlg_Wankai 发表于 2009-5-31 09:17 | 显示全部楼层

re

您好:<br />&nbsp;&nbsp;&nbsp;&nbsp;我这边测试的IAR代码校验就是为0的,我的工程是LPC2103。
 楼主| arm_fan168 发表于 2009-5-31 18:12 | 显示全部楼层

谢谢

谢谢版主的回答。后来我用IAR5.11测试了一下,能够生成校验和,工程也用的是LPC2103,但是用IAR4.42版本就不行,版主用的是哪个版本?
john_light 发表于 2009-5-31 18:50 | 显示全部楼层

这个挺有意思

  这个可能和特定的编译器有关,但是有一点我们可以适当关注,那就是编程器(软件)。<br />  因为常用的编程工具软件(调试及下载工具)往往考虑了这个细节,也就是说,软件在装载了用户代码之后,自动计算生成校验码并放到合适的位置,然后才开始下载到芯片中。这种情况下,编译器生成的代码中,向量位置不必是校验和为零的数据。<br />  当我们用到那些不支持该特性的工具软件时,我们才需要手工计算该值。<br /><br />At&nbsp;0x14&nbsp;the&nbsp;user&nbsp;should&nbsp;insert&nbsp;a&nbsp;signature&nbsp;(checksum).&nbsp;This&nbsp;signature&nbsp;enables&nbsp;the&nbsp;bootloader&nbsp;to&nbsp;determine&nbsp;if&nbsp;there&nbsp;is&nbsp;valid&nbsp;user&nbsp;code&nbsp;in&nbsp;the&nbsp;Flash.&nbsp;<b><u>Currently&nbsp;most&nbsp;of&nbsp;the&nbsp;Flash&nbsp;programming&nbsp;tools&nbsp;(debuggers&nbsp;and&nbsp;ISP&nbsp;utility)&nbsp;have&nbsp;this&nbsp;feature&nbsp;built-in&nbsp;so&nbsp;the&nbsp;end&nbsp;user&nbsp;need&nbsp;not&nbsp;worry&nbsp;about&nbsp;it.</u></b>&nbsp;If&nbsp;the&nbsp;tool&nbsp;does&nbsp;not&nbsp;provide&nbsp;this&nbsp;feature&nbsp;then&nbsp;the&nbsp;value&nbsp;has&nbsp;to&nbsp;be&nbsp;computed&nbsp;manually&nbsp;and&nbsp;has&nbsp;to&nbsp;be&nbsp;inserted&nbsp;at&nbsp;0x14.&nbsp;Details&nbsp;on&nbsp;computation&nbsp;of&nbsp;checksum&nbsp;could&nbsp;be&nbsp;found&nbsp;in&nbsp;the&nbsp;Flash&nbsp;programming&nbsp;chapter&nbsp;in&nbsp;the&nbsp;ARM&nbsp;LPC&nbsp;device&nbsp;User&nbsp;Manual.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

223

帖子

0

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