编程sector0中的page0时候总是失败问题

本篇文章是《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有所帮助!


AT&T和纬创NeWeb Corp.开发了M14A2A Cat-1和M18Q2F Cat-4模块
升特发布4D Touch系列产品SX8654/55/56/57/58
GTC23 | 美敦力与 NVIDIA 携手打造医疗设备 AI 平台
用于降低共模噪声的12 位ADC LTC2309
面板双虎抢占Micro LED市场!
编程sector0中的page0时候总是失败问题
淡化线上渠道,能否为苹果带来更多的增量?
微软回应OneDrive突然封杀FAT32事件:忘记了通知
iQOO渲染图曝光,“蓝橙”配 大气活力 颜值超高
昆明政协委员建议电动车废电池应统一回收
时间继电器控制顺序启动、逆顺序停止电路
CW32F003FxPx评估初次使用体验
基于DSP与FPGA的全姿态指引仪的设计
单片机定制设计时代来临 32位MCU将成主流
你不知道的!iOS10.2正式版还有记忆能力
基于防反保护电路的设计
基于GSM接收机的集成多相滤波器设计
世界上最先进的超快速电动汽车充电器将在日本推出
什么是真有效值 怎么测量真有效值
警用无人机严密监视贩毒交易,并将交易全过程进行了“直播”