本篇文章是《LPC技术小贴士-自动添加中断向量校验位》的番外篇。
最近在支持客户的时候遇到这样一个问题:客户在做自己的二级boot loader,并且在使用LPC54608 IAP功能,编程sector0中的page0时候总是失败(返回0x21错误码),但是编程任何其他page的时候,都没有问题(客户的代码在最后一个sector里,不编程)。
问题乍一看比较诡异,因为只有page0会出问题,对其他page的操作都是没有问题的,并且擦除page/sector也没有问题,只有编程操作会出错。
经过了一段短暂的讨论,最后把问题锁定在了LPC中断向量表的check sum校验机制上:LPC(除比较新的LPC5500系列外)基本都需要在中断向量表的第8个位置上填入前7个中断向量的校验和,关于校验和的具体内容可以参考开篇提到的文章。
在Keil编译出来的.bin文件中,默认并没有自动添加这个校验和,所以每当调用IAP变成page0的时候,IAP程序内部都会检查这个校验和,一旦校验和错误(比如全0) 就会返回失败。
解决方法也很简单,就是在每次编程page0的时候都计算下校验和即可,这里直接给出计算校验和的代码:

adr为编程地址,当adr为0时既编程page0区域,红框内的代码就是计算校验和,并且把校验和填到中断向量表的第8个位置上。
加上这段计算校验和代码后,问题迎刃而解。这个问题普遍存在于除LPC5500系列外几乎所有老的LPC型号上,希望本文章对大家开发LPC MCU有所帮助!
责任编辑:haq
-
plc
+关注
关注
5052文章
14803浏览量
488514 -
编程
+关注
关注
90文章
3723浏览量
97434
原文标题:LPC工程小贴士:IAP编程page0返回失败的问题
文章出处:【微信号:NXP_SMART_HARDWARE,微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
ST7LITE0xY0与ST7LITESxY0 8位微控制器深度剖析
深入解析FDP038AN06A0 / FDI038AN06A0 N-Channel PowerTrench® MOSFET
Onsemi FDH047AN08A0和FDP047AN08A0 MOSFET深度解析
如何使用 PFLASH 驱动程序在 S32K344 上对 UTEST 区域进行编程
探索 ON Semiconductor 的 FDP050AN06A0/FDB050AN06A0 N 沟道 PowerTrench® MOSFET
探索LMK61E0M:超低抖动可编程振荡器的卓越性能与应用
为什么你的产品总是在EMC测试中失败?如何规避认证失败?
LMK61E0M可编程振荡器技术文档总结
LP-MSPM0G3507 LaunchPad™开发套件技术解析与应用指南
编程sector0中的page0时候总是失败问题
评论