OTA 升级 bootload 跳转后(在APP做地址偏移)APP启动异常
-
1、问题:

使用 YTM32B1MC03 SDK 1_3_1
我创建一个bootload工程,并集成了OTA升级功能,在升级完成后执行跳转APP操作,但APP无法正常启动,单步调试APP发现程序卡在了SPI Master初始化里不出来了2、配置如下:
boot:


3、补充:
A、屏蔽掉无法初始化的外设,启动定时器,启动RTOS task,分别在两个位置操作IO翻转,示波器观察到,bootload升级完APP 跳转至APP后,IO一直在翻转,可以确定升级跳转都没问题。B、在APP做地址偏移之前 程序所有功能都能正常执行。
C、另外,在修改APP的偏移地址后,编译出现下面图片中的信息

-
zhaodong1 The target stopped in MemManage exception state.
Reason: Unknown at 0x0001235E.
For more information about analyzing faults on Cortex-M, refer to:
https://wiki.segger.com/Cortex-M_Fault.我执行跳转后报错是这样的,,现在看起来能跳转到APP,但是APP不能正常运行,,,同样的APP 工程我用你们的demo跳转后是可以正常运行的
-
背景: 在Cortex-M33中,用户模式(非特权模式)无法直接操作多数SCB寄存器。非特权访问尝试将触发故障(如MemManage故障或HardFault)。只有特权代码(如操作系统内核或异常处理程序)才能安全地配置这些寄存器。
**分析:**SCB->VTOR赋值属于内核操作,故需要使用特权模式。且YTMEVB_Demo_RevC 这个demo是启用了非特权模式的
方法一: 修改YCT工程配置并重新生成工程
①YCT工具配置删除以下宏

②确认所有外设均取消勾选EnableUserModeSupport

方法二: 在代码中直接增加进入特权模式,无需修改YCT配置

快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...




link文件我用的默认配置,生成后手动修改的