MCU之SWM在KEIL环境中实现代码在RAM中运行

描述

 

      在MCU的实际使用过程中,我们一般会将程序放在FLASH中运行,但有时候需要同时操作falsh或者需要更好的实时性,程序运行的速度更快,这时我们就可以将这代码放到RAM中运行。

     将代码放在RAM中又可以分为将.C文件放入RAM中以及将部分函数放在RAM中。

      在这里我们以SWM190为例给大家简单介绍一下在KEIL环境中如何让程序运行在RAM上。

     SWM190

KEIL环境实现将.C文件在RAM中

运行操作方法

      以SWM190为例,我们打开SYNWIT公司提供的普通的GPIO工程,编译后查看映射文件(.MAP文件)来查看文件位置。

       我们先来看GPIO例程的主要函数,如下图:

函数

       接着通过MAP文件看main.c文件在falsh中运行的情况,如下图可以看出main.c文件编译后的地址在以0x00000000为首地址的flash中:

函数

       将文件放在RAM中常用的方法有两种,我们以将main.c文件放到RAM中为例:

方法一

快速将.c文件放入RAM

1、 点击APP中的想要放置在RAM中的文件,右键然后单击烟花棒(Options for File ‘main.c’)

  函数

2、 点击Code/Const,选择IRAM1[0x20000000-0x20004FFF]

函数

3、 点击OK按钮并编译

函数

4、此时可以看到main.c文件上有个*,意味着我们已经成功将main.c文件放在了RAM中

函数

     也可通过查看.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地址。

函数                        

SWM190

在KEIL环境实现将部分函数放在

RAM中运行操作方法

       我们仍然以SWM190为例,我们打开SYNWIT公司提供的普通的GPIO工程,将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地址。

函数

以上是本次介绍的将代码放到RAM的操作方法,如果SWM芯片用户想更多了解SWM芯片信息请联系华芯微特技术人员。

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分