如果程序太大,可以考虑使用IAP+APP的方式,首先通过IAP把APP加载到SDRAM中,然后跳转到APP中运行。具体方法参考:https://www.armbbs.cn/forum.php?mod=viewthread&tid=89299
这里提示几个坑:
1、直接跳转到SDRAM中执行代码是不行的,因为SDRAM的地址默认是不能执行代码的,需要配置下MPU才行。原因参考:https://wenku.baidu.com/view/88f8cf6db007e87101f69e3143323968001cf453.html
配置MPU的方法参考:https://www.armbbs.cn/forum.php?mod=viewthread&tid=89299
GD32和STM32是一样的。
2、跳转到APP时,代码就已经在SDRAM中运行,因此在APP中配置时钟和SDRAM初始化要慎重,这会导致SDRAM运行不正常,单片机直接 HardFault_Handler 。
如果单片机运行不到main函数就报硬件错误,可以取消运行到main函数来调试。