在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MCU之SWM在KEIL環境中實現代碼在RAM中運行

ELEXCON深圳國際電子展 ? 來源:華芯微特 ? 2023-03-16 15:53 ? 次閱讀

MCU的實際使用過程中,我們一般會將程序放在FLASH中運行,但有時候需要同時操作falsh或者需要更好的實時性,程序運行的速度更快,這時我們就可以將這代碼放到RAM中運行。

將代碼放在RAM中又可以分為將.C文件放入RAM中以及將部分函數放在RAM中。

在這里我們以SWM190為例給大家簡單介紹一下在KEIL環境中如何讓程序運行在RAM上。

SWM190

KEIL環境實現將.C文件在RAM中

運行操作方法

以SWM190為例,我們打開SYNWIT公司提供的普通的GPIO工程,編譯后查看映射文件(.MAP文件)來查看文件位置。

我們先來看GPIO例程的主要函數,如下圖:

edd07b40-c3cd-11ed-bfe3-dac502259ad0.png

接著通過MAP文件看main.c文件在falsh中運行的情況,如下圖可以看出main.c文件編譯后的地址在以0x00000000為首地址的flash中:

edf3965c-c3cd-11ed-bfe3-dac502259ad0.png

將文件放在RAM中常用的方法有兩種,我們以將main.c文件放到RAM中為例:

方法一

快速將.c文件放入RAM

1、點擊APP中的想要放置在RAM中的文件,右鍵然后單擊煙花棒(OptionsforFile‘main.c’)

edfded82-c3cd-11ed-bfe3-dac502259ad0.png

2、點擊Code/Const,選擇IRAM1[0x20000000-0x20004FFF]

ee22d142-c3cd-11ed-bfe3-dac502259ad0.png

3、點擊OK按鈕并編譯

ee35f57e-c3cd-11ed-bfe3-dac502259ad0.png

4、此時可以看到main.c文件上有個*,意味著我們已經成功將main.c文件放在了RAM中

ee4daba6-c3cd-11ed-bfe3-dac502259ad0.png

也可通過查看.map文件確認main.c文件的位置,如下圖所示,可以看出來main文件的地址變為0x20000000開始的RAM地址。

ee6d6b6c-c3cd-11ed-bfe3-dac502259ad0.png

方法二

修改.cst文件

1、在取消勾選Use Memory Layout Form Target Dialog后會出現出現一個.sct文件,點擊Edit可直接對該文件進行修改。

ee7ff5c0-c3cd-11ed-bfe3-dac502259ad0.png

打開文件后內容如下:

ee9667e2-c3cd-11ed-bfe3-dac502259ad0.png

2、在.sct文件中,將main.o放在RW_IRAM1執行區域(0x20000000-0x00002000),修改后如下:

eeb9d51a-c3cd-11ed-bfe3-dac502259ad0.png

3、點擊編譯按鈕,編譯器會自動將main.c文件放到RAMCODE所在0x20000000開始的區域,結果如下圖所示,main文件的地址變為0x20000000開始的RAM地址。

eecf6402-c3cd-11ed-bfe3-dac502259ad0.png ? ? ? ? ? ? ? ? ? ? ? ?

SWM190

在KEIL環境實現將部分函數放在

RAM中運行操作方法

我們仍然以SWM190為例,我們打開SYNWIT公司提供的普通的GPIO工程,將while1中的函數封裝成KeyScan函數,如下圖:

f0ea5274-c3cd-11ed-bfe3-dac502259ad0.png

編譯后可以通過查看MAP文件來看KeyScan函數的位置,如下圖可以看出來KeyScan函數編譯后的地址在flash中:

edf3965c-c3cd-11ed-bfe3-dac502259ad0.png

然后我們將KeyScan函數放到RAM中,操作如下:

1、與之前一樣,在取消勾選Use Memory Layout Form Target Dialog后會出現一個.sct文件,點擊Edit可直接對該文件進行修改,也可以將此文件拷貝到APP目錄下(防止刪除out目錄下內容時誤刪*.sct文件),然后再進行修改。

f11cff9e-c3cd-11ed-bfe3-dac502259ad0.png

2、需要定位到RAM中的KeyScan函數添加前綴

方法一

用#pragma arm section code = “PlaceInRAM”和#pragma arm section將需要放到SRAM中的程序包括起來;

f12ba0c6-c3cd-11ed-bfe3-dac502259ad0.png

打開文件后內容如下:

方法二

在需要放到RAM中的函數前,用__attribute__((section("PlaceInRAM ")))聲明該函數放在PlaceInRAM section中。

f13daf3c-c3cd-11ed-bfe3-dac502259ad0.png

3、在.sct文件中,定義一個PlaceInRAM的section,放在RW_IRAM1執行區域(0x20000000-0x00002000)。

修改內容如下圖所示:

f14e7254-c3cd-11ed-bfe3-dac502259ad0.png

4、點擊編譯按鈕,編譯器會自動將KeyScan函數放到RAMCODE所在0x20000000開始的區域,結果如下圖所示,KeyScan函數的地址變為0x20000000開始的RAM地址。

f15f11f4-c3cd-11ed-bfe3-dac502259ad0.png

以上是本次介紹的將代碼放到RAM的操作方法,如果SWM芯片用戶想更多了解SWM芯片信息請聯系華芯微特技術人員。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17324

    瀏覽量

    352656
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1369

    瀏覽量

    115020
  • 函數
    +關注

    關注

    3

    文章

    4346

    瀏覽量

    62977
  • keil
    +關注

    關注

    69

    文章

    1214

    瀏覽量

    167287
  • 代碼
    +關注

    關注

    30

    文章

    4828

    瀏覽量

    69055

原文標題:elexcon2023展商 | MCU之SWM在KEIL環境中實現代碼在RAM中運行

文章出處:【微信號:ELEXCON深圳國際電子展,微信公眾號:ELEXCON深圳國際電子展】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    STM8RAM運行遇到的疑問求解

    IAR for STM8 的環境,我把一段代碼用 #pragma location=\"MY_RAM_FUNC\" copy到RAM
    發表于 05-07 07:32

    芯海通用 MCU 應用筆記: MDK 開發環境代碼重定向到 RAM 執行的幾種方法

    。對于多數 MCU 來說 RAM 執行程序的功耗比 FLASH 中小,對于大部分運行時間執
    發表于 05-16 11:58

    KEIL環境下如何讓代碼 RAM運行

    前言經常遇到有人使用KEIL時需要將部分或者全部程序代碼放到RAM運行的問題,現將其總結在本文中。通過STM32F411Nucleo的一個
    發表于 08-04 14:14

    MM32KEIL環境實現部分代碼RAM運行

    速度更快,系統有更好的實時性,這時我們可以將這部分代碼放到RAM運行。本文中小編會通過MM32F073的一個實際例子來給大家介紹
    發表于 03-01 16:44

    KEIL如何讓程序RAM運行

    STM32F411Nucleo 的一個例子來介紹幾種讓程序 RAM 運行的方法。該例子
    發表于 09-28 08:19

    單片機MCU如何實現讓部分代碼運行RAM

    單片機MCU如何實現讓部分代碼運行RAM
    發表于 10-30 08:26

    請問單片機MCU如何實現讓部分代碼運行RAM?

    單片機MCU如何實現讓部分代碼運行RAM
    發表于 10-31 08:29

    請問單片機MCU如何實現讓部分代碼運行RAM

    單片機MCU如何實現讓部分代碼運行RAM?
    發表于 11-02 07:01

    IAR 下如何將程序拷貝 RAM 運行

    STM32上面的如何讓程序RAM運行
    發表于 11-25 14:46 ?0次下載

    KEIL讓程序RAM運行的辦法

    通過調用 ToggleLED 函數來翻轉 LED2 亮滅將通過多種方法將這段代碼放在 RAM運行
    發表于 01-14 15:50 ?7次下載

    KEIL環境下如何讓代碼 RAM運行

    前言 經常遇到有人使用KEIL時需要將部分或者全部程序代碼放到RAM運行的問題,現將其總結在本文中。通過STM32F411Nucleo的一
    發表于 11-29 15:54 ?6034次閱讀
     <b class='flag-5'>KEIL</b><b class='flag-5'>環境</b>下如何讓<b class='flag-5'>代碼</b><b class='flag-5'>在</b> <b class='flag-5'>RAM</b><b class='flag-5'>中</b><b class='flag-5'>運行</b>

    MCU部分函數運行RAM 的具體方法

    RAM 。 昨天,為解決次問題,實現了一種解法,具體做法如下: 1. 實現運行RAM的 r
    發表于 10-18 17:44 ?730次閱讀

    使用KEIL的時候如何讓程序RAM運行

    STM32F411Nucleo的一個例子來介紹幾種讓程序RAM運行的方法。該例子,通過調
    發表于 11-19 17:22 ?14次下載
    使用<b class='flag-5'>KEIL</b>的時候如何讓程序<b class='flag-5'>在</b><b class='flag-5'>RAM</b><b class='flag-5'>中</b><b class='flag-5'>運行</b>

    STVDCOSMICRAM運行代碼stm8 ram運行程序

    STVDCOSMICRAM運行代碼stm8 ram
    發表于 09-17 17:12 ?12次下載
    <b class='flag-5'>在</b>STVDCOSMIC<b class='flag-5'>在</b><b class='flag-5'>RAM</b><b class='flag-5'>中</b><b class='flag-5'>運行</b><b class='flag-5'>代碼</b>stm8 <b class='flag-5'>ram</b><b class='flag-5'>中</b><b class='flag-5'>運行</b>程序

    如何將MCU中部分函數運行RAM

    MCU(如: 基于Cortex V6M 的Cortex M0+ 等) Code 通常運行在內嵌Flash 。在某些特定應用場合,需要將部分函數運行
    發表于 02-11 14:54 ?2次下載
    如何將<b class='flag-5'>MCU</b>中部分函數<b class='flag-5'>運行</b>于<b class='flag-5'>RAM</b><b class='flag-5'>中</b>
    主站蜘蛛池模板: 成人久久网 | 亚洲免费网站在线观看 | 成人国产精品一级毛片视频 | 一区二区中文字幕 | 在线播放国产一区 | 一级美女视频 | 天天狠狠色噜噜 | 你懂的视频在线看 | 椎名空中文字幕一区二区 | 性网站免费 | 日日操夜夜操免费视频 | 亚洲成网站 | 日韩爱爱| 免费a级午夜绝情美女视频 免费jlzzjlzz在线播放视频 | 午夜免费在线观看 | 天堂在线观看免费视频 | 日韩欧美成人乱码一在线 | 性夜黄a爽爽免费视频国产 羞羞答答xxdd影院欧美 | 琪琪see色原网一区二区 | jiucao在线观看精品 | 成人中文字幕一区二区三区 | 男人的天堂午夜 | 欧美激情综合色综合啪啪五月 | 好吊妞视频988在线播放 | 日韩在线视频免费观看 | 免费黄色在线视频 | 日日爽天天干 | 午夜精品久久久久久 | 97午夜影院 | 久久久久久久久久免观看 | 午夜激情小视频 | 亚洲一区在线免费观看 | 天天做天天爱夜夜爽 | 伊人精品久久久大香线蕉99 | 伊人精品久久久大香线蕉99 | 午夜合集| 免费观看在线永久免费xx视频 | 亚洲乱码卡一卡二卡三永久 | 亚洲wwww| 日韩免费无砖专区2020狼 | 你懂的手机在线视频 |