stm32 如何扩展ram

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stm32 如何扩展ram相关的知识,希望对你有一定的参考价值。

参考技术A 用MDK,Jlink下载,flash load 下载软件是不行的。
1、先把BOOT0,和BOOT1跳线,跳到高位(置1)
2、在Options for Target中设置。如ROM40K,RAM8K,可如下设置ROM:0x20000000(start),0xa000(size)。在RAM中设置:0x2000a000(start),0x2000(size)
3、在Debug中的Initialization File中添加一个RAM.ini文件。
SP = _RDWORD(0x20000000); // Setup Stack Pointer
PC = _RDWORD(0x20000004); // Setup Program Counter
_WDWORD(0xE000ED08, 0x20000000); // Setup Vector Table Offset Register
4、在Utilities页面选择jlink,点击setting,在Flash Download中Do not Erase.同时设置ROM地址0x20000000(start),0xa000(size)。在RAM中设置:0x2000a000(start),0x2000(size)
5、重新编译,下载即可

但愿对你有帮助本回答被提问者和网友采纳

关于STM32 KEIL MDK环境下,程序在RAM中调试的问题

在DEBUG模式下,已实现下载程序到RAM中运行,正常。但当我想重头开始运行,我点击RST按钮后,重新运行发现此时运行的是FLASH中的程序,而不是之前下载到RAM中的程序。我的问题是,KEIL MDK该如何设置,使得当我RST后,运行的还是RAM中的程序?

芯片复位后进入的是复位中断入口地址,一般是0,并且位于FLASH中。然后在入口处放置一条跳转指令,跳转到指定的地址执行。所以如果想复位后从RAM中执行,那么必须修改bootloader,也就是最初的那段汇编代码,把跳转的地址改成RAM的地址。 参考技术A 在RAM中调试和从RAM中启动是两个不同的概念,
实验证明,在RAM中调试不需要改变BOOT1和BOOT0引脚。
在调试的过程中如果单击了RST复位按钮,则需要重新Debug!
所以,你的问题只能重新Debug。
望采纳,谢谢!
参考技术B 硬件上要跳线,请注意一下STM32的Boot0,Boot1这两个pin在上电时的电压,是否从RAM上执行由这两个pin的电压决定。
如果你用的是外面买的调试板,这这两个管脚应该可以通过跳线设置。具体请阅读datasheet.

以上是关于stm32 如何扩展ram的主要内容,如果未能解决你的问题,请参考以下文章

如何使用STM32F4 的CCM RAM

如何在 C 中的 STM32 QEMU 调试器 eclipse 上从 RAM 内存执行函数?

STM32 KEIL C如何在RAM中调试FREERTOS?

STM32如何升级固件?

STM32读取FPGA中双口RAM里的数据,用DMA方式如何实现

STM32F103_外部RAM用作运存---IS62WV51216