|
|
局部变量初始化时未赋值会导致什么后果
在 STM32CubeIDE 中使用 RTOS 代理
如何为ram变量分配固定地址
ST TOF问题请教
int 与 float 之间的转换
STM32F407 USB 发送数据 上位机接受不到
有关STM32H743ZGT6 驱动RTL8201F-VB芯片驱动的问题,有奖寻求帮助
请问我的CubeMX为什么初始界面没有ai选项,进去之后也没有addnetwork?
ST Motor Control Workbench卡在如图界面,生成不了代码
SDIO 标致位 没有变
微信公众号
手机版
中断如果没有多线程情况下,搬运到RAM可以在擦FLASH时可以正常执行,一旦加了RT多线程,我把中断搬到RAM区其擦FLASH时不会执行中断,其他线程也不会被调度
我使用了Bootloader引导启动,程序烧录FLASH,Bootloader将该程序拷贝到RAM区,然后跳转到该RAM区,FLASH相当于只做存储。任然不能使程序在擦FLASH期间正常运行。
在看汇编时发现,其执行的时候还是在执行FLASH区域的程序,并没有执行RAM区程序
(这有可能是因为我调试主程序并没有经过Bootloader引导)
不知道你是部分函数搬迁还是所有的代码都在RAM执行。如果是前者,我记得常量数据初始化的时候是没有搬迁的,另外你搬迁的这个函数调用的子函数的执行地址按道理也没有搬迁。(我不太确定,需要你自己做个试验。有结果告诉我。)
围观高手解答
理论上这时候如果产生中断,中断服务函数也应该放在RAM中。
.sct文件中加载与运行地址之前均为FLASH区,我尝试把加载,运行改到片外RAM区,可以编译,烧录时出现Error-Flash Download failed Cortex-M4错误
如果是只有中断,可以放在ram区执行,擦FLASH不影响中断执行。可是我加了线程,中断放进ram他也不执行了,主要我还想要在擦FLASH时执行其他线程
[md]我主程序烧录地址是0x8020000,大小:0x20000,我拷贝的时候是直接从这个地址开始所有数据全部拷贝到片外RAM
这个是物理上的特征。 程序擦除和烧录时,是不能访问FLASH的。
所以此时任何放在FLASH中的代码都不能被执行。 这也是为什么后面的芯片有双BANK的原因之一。
[md]比方说你函数相互调用的时候,你的程序挑战的地址应该在那里?你可以单步调试看一下。我感觉只是这样copy好像不行。
双bank是一个解决方案。