精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MCU之SWM在KEIL環(huán)境中實(shí)現(xiàn)代碼在RAM中運(yùn)行

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

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ù),如下圖:

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

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

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

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

方法一

快速將.c文件放入RAM

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

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

2、點(diǎn)擊Code/Const,選擇IRAM1[0x20000000-0x20004FFF]

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

3、點(diǎn)擊OK按鈕并編譯

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

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

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

也可通過查看.map文件確認(rèn)main.c文件的位置,如下圖所示,可以看出來main文件的地址變?yōu)?x20000000開始的RAM地址。

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

方法二

修改.cst文件

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

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

打開文件后內(nèi)容如下:

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

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

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

3、點(diǎn)擊編譯按鈕,編譯器會自動將main.c文件放到RAMCODE所在0x20000000開始的區(qū)域,結(jié)果如下圖所示,main文件的地址變?yōu)?x20000000開始的RAM地址。

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

SWM190

在KEIL環(huán)境實(shí)現(xiàn)將部分函數(shù)放在

RAM中運(yùn)行操作方法

我們?nèi)匀灰許WM190為例,我們打開SYNWIT公司提供的普通的GPIO工程,將while1中的函數(shù)封裝成KeyScan函數(shù),如下圖:

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

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

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

然后我們將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)行修改。

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

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

方法一

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

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

打開文件后內(nèi)容如下:

方法二

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

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

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

修改內(nèi)容如下圖所示:

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

4、點(diǎn)擊編譯按鈕,編譯器會自動將KeyScan函數(shù)放到RAMCODE所在0x20000000開始的區(qū)域,結(jié)果如下圖所示,KeyScan函數(shù)的地址變?yōu)?x20000000開始的RAM地址。

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

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

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17019

    瀏覽量

    350374
  • RAM
    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)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    STM8RAM運(yùn)行遇到的疑問求解

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

    芯海通用 MCU 應(yīng)用筆記: MDK 開發(fā)環(huán)境代碼重定向到 RAM 執(zhí)行的幾種方法

    。對于多數(shù) MCU 來說 RAM 執(zhí)行程序的功耗比 FLASH 中小,對于大部分運(yùn)行時間執(zhí)
    發(fā)表于 05-16 11:58

    KEIL環(huán)境下如何讓代碼 RAM運(yùn)行

    前言經(jīng)常遇到有人使用KEIL時需要將部分或者全部程序代碼放到RAM運(yùn)行的問題,現(xiàn)將其總結(jié)在本文中。通過STM32F411Nucleo的一個
    發(fā)表于 08-04 14:14

    MM32KEIL環(huán)境實(shí)現(xiàn)部分代碼RAM運(yùn)行

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

    KEIL如何讓程序RAM運(yùn)行

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

    單片機(jī)MCU如何實(shí)現(xiàn)讓部分代碼運(yùn)行RAM

    單片機(jī)MCU如何實(shí)現(xiàn)讓部分代碼運(yùn)行RAM
    發(fā)表于 10-30 08:26

    請問單片機(jī)MCU如何實(shí)現(xiàn)讓部分代碼運(yùn)行RAM

    單片機(jī)MCU如何實(shí)現(xiàn)讓部分代碼運(yùn)行RAM
    發(fā)表于 10-31 08:29

    請問單片機(jī)MCU如何實(shí)現(xiàn)讓部分代碼運(yùn)行RAM

    單片機(jī)MCU如何實(shí)現(xiàn)讓部分代碼運(yùn)行RAM
    發(fā)表于 11-02 07:01

    KEIL讓程序RAM運(yùn)行的辦法

    通過調(diào)用 ToggleLED 函數(shù)來翻轉(zhuǎn) LED2 亮滅將通過多種方法將這段代碼放在 RAM運(yùn)行
    發(fā)表于 01-14 15:50 ?7次下載

    KEIL環(huán)境下如何讓代碼 RAM運(yùn)行

    前言 經(jīng)常遇到有人使用KEIL時需要將部分或者全部程序代碼放到RAM運(yùn)行的問題,現(xiàn)將其總結(jié)在本文中。通過STM32F411Nucleo的一
    發(fā)表于 11-29 15:54 ?5929次閱讀
     <b class='flag-5'>KEIL</b><b class='flag-5'>環(huán)境</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'>運(yùn)行</b>

    MCU部分函數(shù)運(yùn)行RAM 的具體方法

    RAM 。 昨天,為解決次問題,實(shí)現(xiàn)了一種解法,具體做法如下: 1. 實(shí)現(xiàn)運(yùn)行RAM的 r
    發(fā)表于 10-18 17:44 ?668次閱讀

    使用KEIL的時候如何讓程序RAM運(yùn)行

    STM32F411Nucleo的一個例子來介紹幾種讓程序RAM運(yùn)行的方法。該例子,通過調(diào)
    發(fā)表于 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'>運(yùn)行</b>

    STVDCOSMICRAM運(yùn)行代碼stm8 ram運(yùn)行程序

    STVDCOSMICRAM運(yùn)行代碼stm8 ram
    發(fā)表于 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'>運(yùn)行</b><b class='flag-5'>代碼</b>stm8 <b class='flag-5'>ram</b><b class='flag-5'>中</b><b class='flag-5'>運(yùn)行</b>程序

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

    MCU(如: 基于Cortex V6M 的Cortex M0+ 等) Code 通常運(yùn)行在內(nèi)嵌Flash 。在某些特定應(yīng)用場合,需要將部分函數(shù)運(yùn)行
    發(fā)表于 02-11 14:54 ?2次下載
    如何將<b class='flag-5'>MCU</b>中部分函數(shù)<b class='flag-5'>運(yùn)行</b>于<b class='flag-5'>RAM</b><b class='flag-5'>中</b>

    如何使用ModelSimVHDL實(shí)現(xiàn)RAM

    本教程,我們將探索如何使用 ModelSim VHDL 實(shí)現(xiàn) RAM
    發(fā)表于 07-29 16:34 ?2620次閱讀
    如何使用ModelSim<b class='flag-5'>在</b>VHDL<b class='flag-5'>中</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>RAM</b>