在MCU的實(shí)際使用過程中,我們一般會將程序放在FLASH中運(yùn)行,但有時候需要同時操作falsh或者需要更好的實(shí)時性,程序運(yùn)行的速度更快,這時我們就可以將這代碼放到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、此時可以看到main.c文件上有個*,意味著我們已經(jīng)成功將main.c文件放在了RAM中
也可通過查看.map文件確認(rèn)main.c文件的位置,如下圖所示,可以看出來main文件的地址變?yōu)?x20000000開始的RAM地址。
方法二
修改.cst文件
1、在取消勾選Use Memory Layout Form Target Dialog后會出現(xiàn)出現(xiàn)一個.sct文件,點(diǎn)擊Edit可直接對該文件進(jìn)行修改。
打開文件后內(nèi)容如下:
2、在.sct文件中,將main.o放在RW_IRAM1執(zhí)行區(qū)域(0x20000000-0x00002000),修改后如下:
3、點(diǎn)擊編譯按鈕,編譯器會自動將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后會出現(xiàn)一個.sct文件,點(diǎn)擊Edit可直接對該文件進(jìn)行修改,也可以將此文件拷貝到APP目錄下(防止刪除out目錄下內(nèi)容時誤刪*.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文件中,定義一個PlaceInRAM的section,放在RW_IRAM1執(zhí)行區(qū)域(0x20000000-0x00002000)。
修改內(nèi)容如下圖所示:
4、點(diǎn)擊編譯按鈕,編譯器會自動將KeyScan函數(shù)放到RAMCODE所在0x20000000開始的區(qū)域,結(jié)果如下圖所示,KeyScan函數(shù)的地址變?yōu)?x20000000開始的RAM地址。
以上是本次介紹的將代碼放到RAM的操作方法,如果SWM芯片用戶想更多了解SWM芯片信息請聯(lián)系華芯微特技術(shù)人員。
審核編輯:湯梓紅
-
mcu
+關(guān)注
關(guān)注
146文章
17019瀏覽量
350374 -
RAM
+關(guān)注
關(guān)注
8文章
1367瀏覽量
114545 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4308瀏覽量
62445 -
keil
+關(guān)注
關(guān)注
68文章
1212瀏覽量
166701 -
代碼
+關(guān)注
關(guān)注
30文章
4753瀏覽量
68368
原文標(biāo)題:elexcon2023展商 | MCU之SWM在KEIL環(huán)境中實(shí)現(xiàn)代碼在RAM中運(yùn)行
文章出處:【微信號:ELEXCON深圳國際電子展,微信公眾號:ELEXCON深圳國際電子展】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論