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

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

3天内不再提示

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

恩智浦MCU加油站 来源:恩智浦MCU加油站 作者:恩智浦MCU加油站 2021-10-20 10:56 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本篇文章是《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的时候都计算下校验和即可,这里直接给出计算校验和的代码:

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

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

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

责任编辑:haq

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

    关注

    5045

    文章

    14441

    浏览量

    483536
  • 编程
    +关注

    关注

    90

    文章

    3707

    浏览量

    96760

原文标题:LPC工程小贴士:IAP编程page0返回失败的问题

文章出处:【微信号:NXP_SMART_HARDWARE,微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ‌LMK61E0M可编程振荡器技术文档总结

    LMK61E0 系列超低抖动 PLLatinum^TM的^可编程振荡器使用带有集成VCO的小数N频率合成器来生成常用的参考时钟。该LMK61E0M支持3.3V LVCMOS输出。该器件具有从片内
    的头像 发表于 09-13 09:46 1047次阅读
    ‌LMK61E<b class='flag-5'>0</b>M可<b class='flag-5'>编程</b>振荡器技术文档总结

    求助,关于TLE9883 user_nvm_sector_erase的问题求解

    我正在尝试测试用于擦除和写入闪存不同部分的 NVM API 函数。我从 FLASH0 运行代码。当我尝试使用 user_nvm_page_erase 函数并传入 0x12002000( FLASH1
    发表于 08-15 06:05

    上传压缩包的时候总是显示上传失败,为什么?

    上传压缩包的时候总是显示上传失败是说明原因
    发表于 07-23 08:17

    FX3 RAM编程因定制板而失败怎么解决?

    USBBulkSourceSink.img 写入 RAM 时,控制中心显示编程失败。 ・我已确认该图像在评估板上成功。 ・我已将 PMODE[2:0] 设置为 z11。 ・我确认时钟是26MHz。 ・确认电源正常。 请查看以下
    发表于 05-15 08:22

    瑞萨RA0系列MCU喜添新成员RA0E2

    RA家族2024年推出全新的RA0超低功耗系列,继RA0E1产品后,新添成员RA0E2。RA0E2具有出色的成本效益和超低功耗。此外,RA0
    的头像 发表于 05-06 09:29 992次阅读
    瑞萨RA<b class='flag-5'>0</b>系列MCU喜添新成员RA<b class='flag-5'>0</b>E2

    I2C EEPROM编程失败的原因?

    我尝试使用 Cy Control Center 实用程序将固件下载到我的 EVM , 第一天,我尝试了很多次,但都失败了,比如下面的错误, I2C EEPROM 编程失败。 我搜索
    发表于 05-06 07:25

    用STM32F407读取ADS8353的结果总是0

    在调试ADS8353电路遇到一些问题,不管配置完CFR寄存器回读还是读取数据结果总是0,芯片手册也看过感觉电路设计焊接这些也没问题,代码自认为也没出错,但结果总是0,希望有人能解答
    发表于 04-24 17:33

    使用THS1206时候有两个问题求解

    各位专家,大家好,我在使用THS1206时候有两个问题,麻烦您帮我解答一下: 1、在test mode下,我把CR0的bit8和bit9设置为0、1时,即此时THS1206的输出应
    发表于 02-13 08:36

    移植vi-&gt;venc时提示VA and PA must be page aligned. va=0x70000000, pa=0x10823300,是什么问题?

    移植vi-&gt;venc时出现以下提示 VA and PA must be page aligned. va=0x70000000, pa=0x10823300 编译时正常的,在
    发表于 02-08 07:18

    tlv5616输入数据是0时候总是有481mV的电压,为什么?

    调试一个DA芯片tlv5616,发现输入数据是0时候总是有481mV的电压,有没有那位工程师帮我解答一下
    发表于 02-06 06:04

    调试ADS1256,到了读转换结果的时候结果总是0,为什么?

    最近一直在调试ADS1256,目前读写寄存器没有问题,但是到了读转换结果的时候 结果总是0,我做的是单端测量,AINp选的通道3,AINn选的是AINCOM 但总是读不出结果来,哪
    发表于 01-09 08:12

    使用TLV5618时B通道输出电压总是0V,为什么?

    技术人员您好,我在使用TLV5618时B通道输出电压总是0V。 在示波器上观察MOSI有数据输入SCLK有16个脉冲,CS端口已正确配置。 在主函数调用 SPI2_ExchangeData
    发表于 01-06 08:19

    javascript:void(0) 的作用是什么

    javascript:void(0) 在 HTML 和 JavaScript 是一个常见的表达式,主要用来创建一个无操作的链接(通常是 标签)或者阻止默认事件处理。具体来说,它的作用有以下几点
    的头像 发表于 12-31 15:55 4054次阅读

    Master读取tca8418时候,发送寄存器地址没有ACK是什么原因呢?

    Master读取tca8418时候,先是发送地址0x68,可以得到ACK,然后继续发送寄存器地址,但是就没有ACK? 是什么原因呢?
    发表于 12-23 06:45

    用ADS1220做了一个温度变送器,换成热电偶方案时候需要读取内部温度传感器数值,读取的数据总是0x0FEA35,为什么?

    我用ADS1220做了一个温度变送器,读取RTD数据正确,但是换成热电偶方案时候需要读取内部温度传感器数值,读取的数据总是0x0FEA35 室温在27度左右,怎么会读出来这么大的数据??? 希望哪位大神可以帮忙解决一下,谢谢!
    发表于 12-16 07:37