在MCU的實(shí)際使用過程中,我們一般會(huì)將程序放在FLASH中運(yùn)行,但有時(shí)候需要同時(shí)操作falsh或者需要更好的實(shí)時(shí)性,程序運(yùn)行的速度更快,這時(shí)我們就可以將這代碼放到RAM中運(yùn)行。
將代碼放在RAM中又可以分為將.C文件放入RAM中以及將部分函數(shù)放在RAM中。
在這里我們以SWM190為例給大家簡單介紹一下在KEIL環(huán)境中如何讓程序運(yùn)行在RAM上。
SWM190
KEIL環(huán)境實(shí)現(xiàn)將.C文件在RAM中
運(yùn)行操作方法
以SWM190為例,我們打開SYNWIT公司提供的普通的GPIO工程,編譯后查看映射文件(.MAP文件)來查看文件位置。
我們先來看GPIO例程的主要函數(shù),如下圖:
接著通過MAP文件看main.c文件在falsh中運(yùn)行的情況,如下圖可以看出main.c文件編譯后的地址在以0x00000000為首地址的flash中:
將文件放在RAM中常用的方法有兩種,我們以將main.c文件放到RAM中為例:
方法一
快速將.c文件放入RAM
1、點(diǎn)擊APP中的想要放置在RAM中的文件,右鍵然后單擊煙花棒(OptionsforFile‘main.c’)
2、點(diǎn)擊Code/Const,選擇IRAM1[0x20000000-0x20004FFF]
3、點(diǎn)擊OK按鈕并編譯
4、此時(shí)可以看到main.c文件上有個(gè)*,意味著我們已經(jīng)成功將main.c文件放在了RAM中
也可通過查看.map文件確認(rèn)main.c文件的位置,如下圖所示,可以看出來main文件的地址變?yōu)?x20000000開始的RAM地址。
方法二
修改.cst文件
1、在取消勾選Use Memory Layout Form Target Dialog后會(huì)出現(xiàn)出現(xiàn)一個(gè).sct文件,點(diǎn)擊Edit可直接對(duì)該文件進(jìn)行修改。
打開文件后內(nèi)容如下:
2、在.sct文件中,將main.o放在RW_IRAM1執(zhí)行區(qū)域(0x20000000-0x00002000),修改后如下:
3、點(diǎn)擊編譯按鈕,編譯器會(huì)自動(dòng)將main.c文件放到RAMCODE所在0x20000000開始的區(qū)域,結(jié)果如下圖所示,main文件的地址變?yōu)?x20000000開始的RAM地址。
? ? ? ? ? ? ? ? ? ? ? ?
SWM190
在KEIL環(huán)境實(shí)現(xiàn)將部分函數(shù)放在
RAM中運(yùn)行操作方法
我們?nèi)匀灰許WM190為例,我們打開SYNWIT公司提供的普通的GPIO工程,將while1中的函數(shù)封裝成KeyScan函數(shù),如下圖:
編譯后可以通過查看MAP文件來看KeyScan函數(shù)的位置,如下圖可以看出來KeyScan函數(shù)編譯后的地址在flash中:
然后我們將KeyScan函數(shù)放到RAM中,操作如下:
1、與之前一樣,在取消勾選Use Memory Layout Form Target Dialog后會(huì)出現(xiàn)一個(gè).sct文件,點(diǎn)擊Edit可直接對(duì)該文件進(jìn)行修改,也可以將此文件拷貝到APP目錄下(防止刪除out目錄下內(nèi)容時(shí)誤刪*.sct文件),然后再進(jìn)行修改。
2、需要定位到RAM中的KeyScan函數(shù)添加前綴
方法一
用#pragma arm section code = “PlaceInRAM”和#pragma arm section將需要放到SRAM中的程序包括起來;
打開文件后內(nèi)容如下:
方法二
在需要放到RAM中的函數(shù)前,用__attribute__((section("PlaceInRAM ")))聲明該函數(shù)放在PlaceInRAM section中。
3、在.sct文件中,定義一個(gè)PlaceInRAM的section,放在RW_IRAM1執(zhí)行區(qū)域(0x20000000-0x00002000)。
修改內(nèi)容如下圖所示:
4、點(diǎn)擊編譯按鈕,編譯器會(huì)自動(dòng)將KeyScan函數(shù)放到RAMCODE所在0x20000000開始的區(qū)域,結(jié)果如下圖所示,KeyScan函數(shù)的地址變?yōu)?x20000000開始的RAM地址。
以上是本次介紹的將代碼放到RAM的操作方法,如果SWM芯片用戶想更多了解SWM芯片信息請(qǐng)聯(lián)系華芯微特技術(shù)人員。
審核編輯:湯梓紅
-
mcu
+關(guān)注
關(guān)注
146文章
17732瀏覽量
358511 -
RAM
+關(guān)注
關(guān)注
8文章
1386瀏覽量
116468 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4365瀏覽量
63905 -
keil
+關(guān)注
關(guān)注
69文章
1218瀏覽量
168638 -
代碼
+關(guān)注
關(guān)注
30文章
4882瀏覽量
70046
原文標(biāo)題:elexcon2023展商 | MCU之SWM在KEIL環(huán)境中實(shí)現(xiàn)代碼在RAM中運(yùn)行
文章出處:【微信號(hào):ELEXCON深圳國際電子展,微信公眾號(hào):ELEXCON深圳國際電子展】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
STM8在RAM中運(yùn)行遇到的疑問求解
芯海通用 MCU 應(yīng)用筆記:在 MDK 開發(fā)環(huán)境下代碼重定向到 RAM 執(zhí)行的幾種方法
KEIL環(huán)境下如何讓代碼在 RAM中運(yùn)行
MM32在KEIL環(huán)境中實(shí)現(xiàn)部分代碼在RAM中運(yùn)行
單片機(jī)MCU如何實(shí)現(xiàn)讓部分代碼運(yùn)行在RAM中?
請(qǐng)問單片機(jī)MCU如何實(shí)現(xiàn)讓部分代碼運(yùn)行在RAM中?
請(qǐng)問單片機(jī)MCU如何實(shí)現(xiàn)讓部分代碼運(yùn)行在RAM中?
KEIL中讓程序在RAM中運(yùn)行的辦法
KEIL環(huán)境下如何讓代碼在 RAM中運(yùn)行

MCU部分函數(shù)運(yùn)行于RAM 中的具體方法
使用KEIL的時(shí)候如何讓程序在RAM中運(yùn)行

在STVDCOSMIC在RAM中運(yùn)行代碼stm8 ram中運(yùn)行程序

如何將MCU中部分函數(shù)運(yùn)行于RAM中

如何使用ModelSim在VHDL中實(shí)現(xiàn)RAM

評(píng)論