问题背景
客户重构Bootloader代码
1、Bootloader跳转到APP,有概率会失败(芯片“死机”)
2、Bootloader编程写入的数据出错;
解决方案
1、客户Boot使用按键中断触发Boot跳转(在中断中修改Flag标准位;在主循环中判定标准位,再选择性跳转到APP)
a. 按键没有做硬件消抖处理——有重复触发外部IO中断的概率;
b. 跳转前只加了关闭全局中断,没有单独清除/关闭按键中断(KEY);导致APP开启全局中断时,继续响应Boot期间“额外触发”的按键中断。
i. 导致!——在APP程序段,程序找不到按键中断对应的中断服务函数,且无法清除中断响应标志位,最终"MCU卡死";
2、Bootloader按16bit编程的APP数据格式出错——读出APP数据,发现是按照大端模式存储数据;
正确需要按照小端模式存储
|