一、简介 在MCU的实际使用过程中,一般的程序是放在FLASH中运行,但有时候我们需要程序的运行速度更快,系统有更好的实时性,这时我们可以将这部分代码放到RAM中运行。在本文中小编会通过MM32F073的一个实际例子来给大家介绍在KEIL环境中如何让程序运行在RAM上。 二、实验 本文的例子建立在一个LED_BLINK 的例程上,通过编译后观察MAP文件来看LED_TOGGE函数的位置。 首先看LED_BLINK 例程的主要函数,如下图:
看LED_TOGGE在FLASH中运行的情况,
可看到函数LED_TOGGE编译后的地址在FLASH中。 然后我们将LED_TOGGE放到SRAM中。 操作步骤: A、 紧接上面的编译完成后会有一个.sct文件,现在我们需对这个文件进行修改,在linker的目录下进行如下图设置,点击Edit,我们便可对该文件进行修改。
B、在.sct文件中,定义一个RAMCODE的section,放在RW_IRAM1执行区域(0x20000000-0x00002000)。 修改内容如下图所示:
C、方法一:用#pragma ARM section code = “RAMCODE”和#pragma armsection将需要放到SRAM中的程序包括起来;
方法二:在需要放到RAM中的函数前,用__attribute__((section("RAMCODE")))声明该函数放在RAMCODE section中。
编译时,编译器会自动将这些函数放到RAMCODE所在0x20000000开始的区域。 D、结果如下图,此时LED_TOGGE编译后的地址在SRAM中的0x20000000开始的区域。
注意事项: 注意该函数中调用到的所有函数也要放到RAMCODEsection中,#pragma arm section code=“RAMCODE ”和#pragma arm section中可以包含多段代码。
|