F407的SDIO的硬件分流问题
workbench5.3.1生成代码问题
MotorControl Workbench 6.4.1 生成 FOC 项目代码后运行死机。
STLink下载程序失败,Flash部分地址不能写入
求助,局部变量初始化时未赋值会导致什么后果?
TIM11,TIM13失效
局部变量初始化时未赋值会导致什么后果
在 STM32CubeIDE 中使用 RTOS 代理
如何为ram变量分配固定地址
ST TOF问题请教
微信公众号
手机版
采用FMC外接SDRAM方案?
是的,想做一个bootloader将程序从片外的flash中读出加载在SDRAM中运行。你有什么建议吗?
注意外部传过来的程序是链接到 0xC000 0000 地址上的程序。
同时需要中断向量映射到这个地址上去。
理论上讲,应该类似与IAP模式。
目前没有看到过类似的例程,估计是这类应用不多吧。
另外访问外部SDRAM速度比较慢,所以程序运行速度也会受影响。
#define SDRAM_APP_ADDR 0xC0000000 // 程序在SDRAM的运行起始地址typedef void (*pFunction)(void); // 函数指针:跳转至SDRAM中的程序pFunction JumpToApp;uint32_t app_stack = *(uint32_t*)SDRAM_APP_ADDR; //栈顶地址JumpToApp = (pFunction)*(uint32_t*)(SDRAM_APP_ADDR + 4); //入口函数地址__set_MSP(app_stack); //设置MSP并跳转JumpToApp(); //执行入口函数以上已经按照类似的思路处理了,但是执行进入JumpToApp()后,SDRAM中的程序应该是500ms LED灯闪烁。但是程序好像没有按预期运行,看不到LED闪烁。检查PC和SP地址都已经在SDRAM上了,因为地址都是0xC开头的。 另外那个500ms LED灯闪烁的程序,我在debug前加载ini的方式,直接将编译的axf文件放在SDRAM上打断点调试过是正常的。将这个程序编译成bin,通过bootloader使用上面的语句加载程序,却没有按预想的执行 不知道还有什么建议吗?
可以参考下面的方式检测一下
1. 首先 闪灯程序是以 0xc0000000开始编译链接的
2. 如果放在SDRAM调试时可以正常工作的,那么在bootloader 传完后,读出来比较一下内容是否有异常。