0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

恩智浦MCU加油站 来源:恩智浦MCU加油站 作者:恩智浦MCU加油站 2021-10-20 10:59 次阅读

最近在支持客户的时候遇到这样一个问题:客户在做自己的二级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的时候都计算下校验和即可,这里直接给出计算校验和的代码:

213df384-30e7-11ec-82a8-dac502259ad0.png

adr为编程地址,当adr为0时既编程page0区域,红框内的代码就是计算校验和,并且把校验和填到中断向量表的第8个位置上。

加上这段计算校验和代码后,问题迎刃而解。这个问题普遍存在于除LPC5500系列外几乎所有老的LPC型号上,希望本文章对大家开发LPC MCU有所帮助!

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • LPC
    LPC
    +关注

    关注

    8

    文章

    135

    浏览量

    77335
  • IAP
    IAP
    +关注

    关注

    2

    文章

    161

    浏览量

    23961
  • 代码
    +关注

    关注

    30

    文章

    4554

    浏览量

    66732
  • 编译
    +关注

    关注

    0

    文章

    613

    浏览量

    32373
收藏 人收藏

    评论

    相关推荐

    做usb dfu进行iap升级,固件下载完成后,校验不过,very失败的原因?

    最近在做usb dfu进行iap升级,固件下载完成后,校验不过,very失败,有人遇到过吗??? 比如在0x08020240位置,提示: File byte is 0x5c Re
    发表于 04-24 07:35

    IAP跳转APP开始可以,如果从APP跳回IAP后再跳到APP失败的原因?

    IAP 跳转APP 开始可以,但如果从APP跳回IAP后,再跳到APP失败。 我是按照 下面ST官方文档来的: AN4657 Application note STM32
    发表于 04-23 07:24

    stm32g473 flash擦除失败的原因?

    在跑ucosii的时候进行OTA升级擦除失败,关掉系统调度可以擦除成功。单独建立一个裸机工程,跑page擦除程序,Jlink单步调试概率性出现擦除失败,上电一直跑可以擦除成功。这是芯片的限制么,还是
    发表于 03-26 08:11

    STM32F0 IAP跳转到APP后无法进入中断怎么解决?

    1、IAP跳转到APP 后,Tim中断初始化失败。 2、去掉Tim中断初始化,仅初始化I2C,也无法进入I2C中断 void InterruptRemap(void){uint8_ti
    发表于 03-14 07:54

    GD32 MCU ISP失败的原因

    玩过GD32的小伙伴们都知道,GD32 MCU支持ISP,即在系统编程,前面的常见问题也给大家讲过什么是ISP,什么是IAP?那有没有小伙伴遇到过ISP失败的情况,失败的原因是什么呢?
    的头像 发表于 02-28 09:23 381次阅读
    GD32 MCU ISP<b class='flag-5'>失败</b>的原因

    单片机编程实例总结

    单片机编程实例总结
    的头像 发表于 01-16 09:17 399次阅读

    如何使用AT32F407以太网通信接口实现在应用中编程(IAP)

    如何使用AT32F407以太网通信接口实现在应用中编程(IAP)
    的头像 发表于 11-07 17:20 585次阅读
    如何使用AT32F407以太网通信接口实现在应用中<b class='flag-5'>编程</b>(<b class='flag-5'>IAP</b>)

    C语言函数返回1和返回0究竟哪个好?

    C语言函数返回1和返回0究竟哪个好? 在C语言中,很多函数需要返回一个值来表示函数是否成功执行。而在很多情况下,通常会选择让函数返回1或0,以表示成功或
    的头像 发表于 10-31 14:43 477次阅读

    51单片机有哪些型号可以使用IAP编程模式?

    51单片机中的P89V51RD2可以使用IAP编程模式其它的还有那些?
    发表于 10-27 06:55

    OTP零位磁编码零位编程案例分享

    以一个8页的OTPSD3012为例,页数从page0~page7,每页32字节,其中page0是系统配置,包括工作模式,Z脉冲宽度,UVW级数等系统配置,Page1~3厂家使用不对用户
    的头像 发表于 10-25 15:52 262次阅读
    OTP零位磁编码零位<b class='flag-5'>编程</b>案例分享

    STM32F107通过以太网实现在应用中编程(IAP)

    电子发烧友网站提供《STM32F107通过以太网实现在应用中编程(IAP).pdf》资料免费下载
    发表于 09-21 11:52 2次下载
    STM32F107通过以太网实现在应用中<b class='flag-5'>编程</b>(<b class='flag-5'>IAP</b>)

    STM32F2x7通过以太网实现在应用中编程(IAP)

    电子发烧友网站提供《STM32F2x7通过以太网实现在应用中编程(IAP).pdf》资料免费下载
    发表于 09-21 11:49 0次下载
    STM32F2x7通过以太网实现在应用中<b class='flag-5'>编程</b>(<b class='flag-5'>IAP</b>)

    关于STM32G0 flash擦除失败问题求解

    (); 程序如上,flash分了APP1和APP2,擦除APP1是没问题,擦除APP2就失败,且打印出来的PageError=0
    发表于 09-20 07:06

    STM32F0 IAP跳转到APP后无法进入中断怎么解决?

    1、IAP跳转到APP 后,Tim中断初始化失败。 2、去掉Tim中断初始化,仅初始化I2C,也无法进入I2C中断 void InterruptRemap(void){uint8_ti
    发表于 08-08 06:31

    ISP, ICP及IAP是什么功能?

    ISP, ICP及IAP是什麼功能? ISP是指“在系统上编程”,目标芯片使用USB/UART/SPI/I²C/RS-485/CAN周边接口的LDROM引导代码去更新晶片内部APROM、数据闪存
    发表于 06-15 06:22