CH559L芯片从bootloader程序跳转到APP后,串口不工作了,请教原因

使用CH559L芯片做了一个bootloader程序和用户APP程序。
bootloader存储在0--15KByte的空间; APP存储在15-60KByte。在Keil 环境下,Bootloader程序off-chip code memory设置为0x00,APP程序off-chip code memory设置为0x3C04;
bootloader程序是利用自定义协议,通过串口传输数据。
现在情况:
1)先烧录bootloader程序,再通过booloader烧录APP程序,APP程序可以正常跳转,在APP里面点亮LED灯都正常。
但APP里面串口无法中断,接收数据。
2)将APP程序程序off-chip code memory参数设置为0x00,再通过WCHISPTool.exe程序下载后,APP运行一切正常。

现在感觉APP差异就是off-chip code memory这个参数不同,为啥APP运行会有所差异?

哪位大侠能够告知一下原因,

在其他网站看到采用我上面那种思路做bootloader,似乎需要修改bootloader的startup.a51文件。
我是利用CH559L 例程中的IAP工程模板修改而来,工程中没有引用startup.a51文件。

怀疑也是中断向量没有搞对,导致跳转到APP后,不再响应串口中断了。

哪位大侠能给一个指导意见?


看到的是这篇文章:https://www.cnblogs.com/WayneKhouTech/p/12045834.html


您好,boot和用户程序谁在前谁在后的,应该影响的是中断向量表覆盖的问题(实际对应位置填的到底是“boot”的表还是用户程序的表),我们芯片中断向量表始终在固定位置,也就是flash起始的那个位置(具体可以参看手册),那个文章中提到的0x2000中断向量表不适用于我们的芯片。


只有登录才能回复,可以选择微信账号登录