本帖最后由 小恩GG 于 2019-4-8 18:43 编辑
LPC51U68 Reinvoke ISP Ø 问题描述 客户碰到如下问题: LPC51U68 IAP 指令集中的Reinvoke ISP指令(如图1所示)可以将MCU从application重新跳转到ISP bootloader内,因此,客户使用SDK软件包中提供的IAP_ReinvokeISP()函数想实现跳转USB ISP bootloader操作,但代码被执行后,状态返回值始终为:0x1C,表明指令并未成功被执行,这是咋回事呢。
图1 Reinvoke ISP 表1 Reinvoke ISP函数
Ø 问题解决 经测试,发现错误有两个,首先,如图1所示,发现ReinvokeISP指令只需要两个输入参数,而IAP_ReinvokeISP()函数中的输入参数有点画蛇添足了,更离谱的是顺序其实也不对。其次,IAP_ReinvokeISP()不能在全局中断禁止的情况下正确执行,推测在ROM bootloader里的代码有使用到中断,全局中断禁止后,导致中断无法被响应处理,从而ROMbootloader代码无法正常工作,这个问题其实在《ISP“二进宫”问题》里也有提到。
所以,针对上述发现的问题,对IAP_ReinvokeISP()函数更改如下。
|