
|
想要一个成熟产品OTG通信的程序。
请教下,使用 filex 文件系统需要支持中文的目录及文件名要怎么配置呀 ?
STM32F429V烧录是无法识别到芯片怎么办?
观测器
stm32f405rgt6为什么无法串口连接STM32CubeProgrammer?
STM32L431内部温度AD值不随温度变化
STM32F429 二级启动程序 (sboot) 开发难点:LD 文件 / 堆栈 / NVIC 及 startup.s 修改疑问
debug选项卡中的trace enable选项是灰色的无法勾选
STM32F407ZGT6的SD卡通过DMA控制时,无法从外部SRAM取数据
STM32L031G6U6芯片,使用Flash模拟EEPROM功能,同数据写入不同地址,读取对比不一样,这是为什么?
中断如果没有多线程情况下,搬运到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是一个解决方案。