You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Checksum结果目标与校验范围重叠及Bootloader异常排查

问题分析与解决方案

警告与复位异常的关联

这个Checksum result destination overlaps with checksum range警告直接导致设备持续复位。原因是校验和的存储地址被包含在需要计算校验和的内存范围内,每次计算校验和时都会覆盖存储的校验值,Bootloader验证应用校验和时必然不匹配,触发复位机制。

修复步骤

1. 调整校验和存储地址

  • 打开MCC的Bootloader配置界面,找到Checksum Configuration区域
  • 确保Checksum Result Address(校验和存储地址)不在Checksum Calculation Range(校验和计算范围)内。通常校验和应存放在应用程序区之外,比如Bootloader专属区域或Flash空闲页
  • 举个例子:dsPIC33CK512MP608总Flash为512KB,若Bootloader占用前8KB(0x000000-0x001FFF),应用从0x002000开始,校验和可设为0x001F00(Bootloader内空闲地址)或应用区最后一页末尾

2. 修正后构建宏脚本参数

  • 找到Ubuntu下MCC生成的后构建脚本(postbuild.sh)
  • 检查校验和计算命令的-s(起始地址)、-e(结束地址)、-o(输出地址)参数,确保三者无重叠:
    # 示例正确参数(根据实际地址调整)
    java -jar "${MPLABX_DIR}/../Microchip/MPLABX/v6.05/mplab_platform/mplab_ipe.jar" \
    -P dsPIC33CK512MP608 -T pickit4 -M -A hex -F "${DISTDIR}/${PROJECTNAME}.hex" \
    -C -s 0x002000 -e 0x07FFFF -o 0x001F00
    
    其中-s/-e是应用Flash范围,-o是校验和存储地址,必须不在前者区间内

3. 验证地址划分正确性

  • 确认Bootloader与应用的链接脚本地址无重叠:
    • Bootloader链接脚本起始地址设为0x000000,结束地址设为Bootloader实际占用的末尾(如0x001FFF)
    • 应用链接脚本起始地址设为Bootloader结束地址+1(如0x002000),同时确保应用中断向量表配置BOOT指令指向Bootloader入口,自身复位向量正确指向初始化代码

4. 重新构建与测试

  • 保存所有修改,重新构建Bootloader和应用程序
  • 先烧录Bootloader,再通过Bootloader下载应用,观察设备是否仍复位
  • 若问题依旧,用MPLAB X调试器查看RCON寄存器的复位标志位,判断是看门狗复位、校验和错误复位还是其他原因

内容的提问来源于stack exchange,提问作者Mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 01:07:10