IAP编程page0返回失败的问题总结

最近在支持客户的时候遇到这样一个问题:客户在做自己的二级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有所帮助!


GE发布人工智能分析工具集应对电网运营难题
Longest Substring no Repeat Characters
喜讯!赛昉科技通过上海市“专精特新”企业认定
做工对得起2999元售价吗?一加5完全拆解
魅族MX7要来了! 黄章亲自发布, 联发科X30顶级理器!
IAP编程page0返回失败的问题总结
盘点未来10种在人工智能领域的职业
宝马计划在全球召回约2.76万辆插电混动车
真空电子三极管概述
华为最火的3部手机:华为Mate8、华为P9、华为Mate9保时捷版 最后一部网友大呼买不起
荣耀V40系列新机型更多配置细节曝光
Acrich专利诉讼与专利许可双管齐下
小米全球扩张与对手竞争加剧,专利困扰急需解决
中国机器人产业发展迅猛,产业规模不断扩大
宜家此次宣布召回的克里普索吸顶灯
dsp芯片虚焊的原因及解决方法
毕托管流量计使用维护
e络盟独家发布白皮书《智能传感器 – 打造智能物联网》
电驱动机电一体化仿真
数字资产合约期货交易系统开发,比特币永续合约平台开发