查看: 4615|回复: 1

[分享] [LPC55xx]如何修复AHB读取HardFault错误

[复制链接]
  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3936

    主题

    7557

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    40199
    最后登录
    2025-9-5
    发表于 2020-12-31 11:26:57 | 显示全部楼层 |阅读模式
    [LPC55xx]如何修复AHB读取HardFault错误


    最近,有用户在LPC55S69上执行AHB FLASH存储器读取时遇到HardFault错误。如果在批量擦除之后从未对FLASH扇区进行编程,则如果检测到不可恢复的错误,则执行AHB读取FLASH存储器内容将导致硬件故障。


    为什么?


    LPC55Sxx零件出厂时已批量擦除,且未设置ECC。当MCUXpresso IDE通过LinkServer连接芯片时,它将首先擦除将用于编程图像的扇区,然后使用正确的ECC集对代码进行编程。超出映像末尾的扇区将保持不变,这些扇区将保持“擦除”状态,而未设置ECC。


    当LPC55Sxx通过AHB总线执行FLASH读取代码(例如,mytemp = *(uint32_t *)0x4000)时,它将在AHB读取时检查FLASH ECC。读取已编程的扇区没有问题,因为ECC已经设置。但是,读取具有无效ECC值的未编程扇区会导致无法读取并转到HardFault_Handler,如下所示:
    21.png
    如果在扇区擦除后执行AHB读取闪存内容,我们将遇到同样的HardFault问题。


    解决方案


    有两种解决方法可以纠正该错误。
    1.在对闪存部分进行编程之后,读取闪存内容
    与批量擦除不同,对FLASH进行编程会更新相关的ECC值。因此,通过成功的ECC检查,可以通过以下代码实现读取的AHB。
    1. volatile uint32_t mytemp;
    2. ……
    3. mytemp = *(uint32_t*)0x1000;//read memory content 0x1000 to mytemp‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
    复制代码
    注意:0x1000必须为“已编程”地址。如果未使用的FLASH扇区处于“擦除”状态,则要读取它,我们需要在AHB读取之前手动对其进行编程。可以在MCUXpresso SDK程序包下的flashiap演示中引用FLASH编程演示代码。参见函数FLASH_Program。


    2.使用FLASH控制器命令读取FLASH内容


    使用FLASH控制器命令的读取操作(请参见UM11126的“命令列表(CMD)”部分)不会引起硬故障。这是UM建议的读取FLASH内容的方法。
    注意:仅在最高100 MHz的CPU频率下才能执行闪存操作(擦除,空白检查,编程)和读取单个字。对于高于100 MHz的频率,无法执行这些操作。
    到目前为止,我还没有找到FLASH阅读的演示代码。请按照以下步骤创建演示。


    环境:
    IDE:MCUXpresso IDE v11.1.0
    SDK MCUXpresso SDK v2.7.0


    文件:
    lpcxpresso55s69_led_blinky_memoryread.zip (659.83 KB, 下载次数: 1)
    qiandao qiandao
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    18 小时前
  • 签到天数: 1769 天

    连续签到: 24 天

    [LV.Master]伴坛终老

    11

    主题

    1万

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    20954
    最后登录
    2025-9-5
    发表于 2023-9-25 23:54:10 | 显示全部楼层
    9月25日:第1天学习打卡

    a.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-6 18:45 , Processed in 0.087696 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表