以SWM190为例 1、打开GPIO工程,编译后查看映射文件(.MAP文件)来查看文件位置。 2、通过MAP文件看main.c文件在falsh中运行的情况,如下图可以看出main.c文件编译后的地址子在以0x00000000为首地址的flash中: 将文件放在RAM中常用的方法有两种,下面将以main.c文件放到RAM中为例: 方法一:快速将.c文件放入RAM1、 点击APP中的想要放置在RAM中的文件,右键然后单击烟花棒(Options for File ‘main.c’) 2、 点击Code/Const,选择IRAM1[0x20000000-0x20004FFF] 3、 点击OK按钮并编译 4、通过查看.map文件确认main.c文件的位置,如下图所示,可以看出来main文件的地址变为0x20000000开始的RAM地址 方法二:修改.cst文件
1、在取消勾选Use Memory Layout Form Target Dialog后会出现出现一个.sct文件,点击Edit可直接对该文件进行修改。 打开文件后内容如下: 2、在.sct文件中,将main.o放在RW_IRAM1执行区域(0x20000000-0x00002000), 修改后如下: 3、点击编译按钮,编译器会自动将main.c文件放到RAMCODE所在0x20000000开始的区域,main文件的地址变为0x20000000开始的RAM地址。 将部分函数放在RAM中运行操作方法 将while1中的函数封装成KeyScan函数 编译后可以通过查看MAP文件来看KeyScan函数的位置,如下图可以看出来KeyScan函数编译后的地址再flash中: 将KeyScan函数放到RAM中,操作如下: 1、与上面一样,在取消勾选Use Memory Layout Form Target Dialog后会出现一个.sct文件,点击Edit可直接对该文件进行修改,也可以将此文件拷贝到APP目录下(防止删除out目录下内容时误删*.sct文件),然后再进行修改。 2、需要定位到RAM中的KeyScan函数添加前缀 方法一: 用#pragma arm section code = “PlaceInRAM”和#pragma arm section将需要放到SRAM中的程序包括起来; 方法二: 在需要放到RAM中的函数前,用__attribute__((section("PlaceInRAM ")))声明该函数放在PlaceInRAM section中。 3、在.sct文件中,定义一个PlaceInRAM的section,放在RW_IRAM1执行区域(0x20000000-0x00002000)。 4、点击编译按钮,编译器会自动将KeyScan函数放到RAMCODE所在0x20000000开始的区域,KeyScan函数的地址变为0x20000000开始的RAM地址。
|