试图在FLASH上跑代码,但总跳转失败
想从主FLASH跳到副FLASH执行程序,结果总是跑飞,栈啥的都试过了。启动文件加一句SCB->VTOR = xxxx就解决了我这问题。 你跳转之前关闭中断了吗? 设置SP和PC的时候顺序不能错。 vector table地址记得重映射。 Flash执行段地址对齐了吗? 编译器link file有没有改? 中断向量跳过去了但没初始化好。 用汇编的LDR指令试一下能不能跳。 栈地址指错一位都会挂。 U5系列要特别注意TrustZone设置。 Flash访问延迟未根据时钟频率正确配置,CPU从Flash读取指令时可能因数据未及时就绪而导致跳转失败。 RCC、PWR等外设可能未正确初始化,导致CPU无法正常访问Flash。 可能是代码没正确烧录到Flash。 检查链接脚本是否正确指定代码段的Flash地址。 STM32U5支持TrustZone安全扩展,若代码位于Secure但未正确配置安全属性,或尝试从Non-secure状态访问安全Flash,会导致跳转失败。 中断向量表可能未重映射,用SCB->VTOR寄存器重映射向量表。 检查安全配置是否允许跨安全域访问。 代码未对齐到Flash页边界? 编译选项未启用优化,可能导致代码生成效率低下,影响Flash读取。
页:
[1]