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
    +关注

    关注

    5052

    文章

    14803

    浏览量

    488515
  • 编程
    +关注

    关注

    90

    文章

    3723

    浏览量

    97434

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ST7LITE0xY0与ST7LITESxY0 8位微控制器深度剖析

    ST7LITE0xY0与ST7LITESxY0 8位微控制器深度剖析 在电子设计领域,选择一款合适的微控制器对于项目的成功至关重要。ST7LITE0xY0和ST7LITESxY0 8位
    的头像 发表于 04-16 13:40 104次阅读

    深入解析FDP038AN06A0 / FDI038AN06A0 N-Channel PowerTrench® MOSFET

    深入解析FDP038AN06A0 / FDI038AN06A0 N-Channel PowerTrench® MOSFET 在电子工程领域,MOSFET作为关键的功率器件,广泛应用于各种电路设计
    的头像 发表于 04-15 13:50 154次阅读

    Onsemi FDH047AN08A0和FDP047AN08A0 MOSFET深度解析

    Onsemi FDH047AN08A0和FDP047AN08A0 MOSFET深度解析 在电子设计领域,MOSFET作为关键的功率开关元件,其性能直接影响到整个电路的效率和稳定性。今天我们就来详细
    的头像 发表于 04-15 11:40 160次阅读

    如何使用 PFLASH 驱动程序在 S32K344 上对 UTEST 区域进行编程

    FLS_MAX_VIRTUAL_SECTOR 1039; 问题: 在S32K358上,我找不到清晰的C40_UTEST_ARRAY_0_S000映射。 目前,UTEST 扇区似乎被确定
    发表于 04-15 06:38

    探索 ON Semiconductor 的 FDP050AN06A0/FDB050AN06A0 N 沟道 PowerTrench® MOSFET

    ,广泛应用于各种电路设计。今天,我们将深入探讨 ON Semiconductor(现 onsemi)推出的 FDP050AN06A0/FDB050AN06A0 N 沟道 PowerTrench
    的头像 发表于 03-31 17:25 409次阅读

    探索LMK61E0M:超低抖动可编程振荡器的卓越性能与应用

    探索LMK61E0M:超低抖动可编程振荡器的卓越性能与应用 在电子设计领域,时钟振荡器的性能对于整个系统的稳定性和数据处理能力起着至关重要的作用。今天,我们将深入探讨一款高性能的时钟振荡器
    的头像 发表于 02-08 13:50 692次阅读

    为什么你的产品总是在EMC测试失败?如何规避认证失败

    “   本文件总结了七个常见的 PCB 设计错误,这些错误可能导致产品在认证过程失败,特别是在电磁兼容性(EMC)和射频(RF)方面。   ” 强烈 推荐听一下播客,播客内容比文字更详细、更精
    的头像 发表于 09-16 11:15 5090次阅读
    为什么你的产品<b class='flag-5'>总是</b>在EMC测试<b class='flag-5'>中</b><b class='flag-5'>失败</b>?如何规避认证<b class='flag-5'>失败</b>?

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

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

    LP-MSPM0G3507 LaunchPad™开发套件技术解析与应用指南

    Texas Instruments LP-MSPM0G3507 LaunchPad™ 开发套件用于评估MSPM0G3507。TI LP-MSPM0G3507套件包含在MSPM0G350
    的头像 发表于 08-19 14:27 1503次阅读
    LP-MSPM<b class='flag-5'>0</b>G3507 LaunchPad™开发套件技术解析与应用指南

    求助,关于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 1410次阅读
    瑞萨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