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的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C 中的 STM32 QEMU 调试器 eclipse 上从 RAM 内存执行函数?
STM32 KEIL C如何在RAM中调试FREERTOS?