ST意法半导体
直播中

刘静

8年用户 1329经验值
私信 关注
[问答]

如何从内部sram运行代码?

嘿。
有一段时间我一直在尝试将一些代码从闪存复制到内部 sram 并运行它。
我阅读了数据表、编程手册和 cortex 手册,它们都确认可以从 sram 运行代码,但是当我复制代码时,我遇到了强制性硬故障,经过进一步检查,我意识到确实是总线故障。我在 STM32f103 和 stm32f407 上都试过了,但都不起作用。这是我复制到 sram 中的汇编函数:
myadd 过程
        导出 myadd [弱]
        NOP
                                NOP
                                BXlr
        结束计划
这是复制并运行复制代码的函数:
无效测试()
{
        
        memcpy((void *)(SRAM_BASE + 0x100), &myadd, 200);
        
        延迟(500);
        //void (*func)() = (void (*)())((int32_t)(SRAM_BASE + 0x100) | 0x1);
        void (*func)() = (void (*)())((int32_t)(SRAM_BASE + 0x100) | 0x1);
        功能();
}
在错误期间,我只得到总线不精确错误,其他标志为零。
任何人都可以看到我的代码有任何问题,或者只是 stm32 mcus 无法从 sram 运行代码,或者我应该配置一些 cortex 外设吗?









回帖(1)

韦明

2023-1-31 15:26:12
确保你正在 memcpy()ing 的指针是偶数
举报

更多回帖

发帖
×
20
完善资料,
赚取积分