chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

基于IAR指定RL78程序地址空間說(shuō)明

瑞薩嵌入式小百科 ? 來(lái)源:未知 ? 2023-06-19 15:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

134a866a-0e72-11ee-962d-dac502259ad0.gif

介紹

基于IAR實(shí)現(xiàn)C文件指定地址存放&函數(shù)指定地址存放,定義變量指定地址。

開(kāi)發(fā)環(huán)境:IAR for RL78 2.21

芯片:R5F510NPJ

仿真器E1

主要內(nèi)容

一、C文件指定地址存放&函數(shù)指定地址存放

1

首先需要根據(jù)自己需要指定存放的C文件里面程序所占大小來(lái)規(guī)劃自己的空間。

2

可根據(jù)編譯生成的map文件來(lái)定位C文件所占大小。

如何生成map文件如下圖所示:

1374d7e4-0e72-11ee-962d-dac502259ad0.jpg1384baba-0e72-11ee-962d-dac502259ad0.jpg13a52214-0e72-11ee-962d-dac502259ad0.jpg

3

通過(guò)查看map文件就可以知道我們所有C文件所占空間大小了。在MODULE SUMMARY一欄,如下圖所示:

13b906d0-0e72-11ee-962d-dac502259ad0.jpg

4

根據(jù)map文件我們知道C文件:r_cg_cgc.c文件所占大小為217Byte,修改連接文件icf如下圖所示:

13ccbf5e-0e72-11ee-962d-dac502259ad0.jpg

具體命令如下:

13ed98a0-0e72-11ee-962d-dac502259ad0.svg

左右滑動(dòng)查看更多

13ed98a0-0e72-11ee-962d-dac502259ad0.svg
//默認(rèn)配置
//define region ROM_near = mem:[from 0x000D8 to 0x0FFFF] - EXLUDE_ROM_REGION;
//define region ROM_far = mem:[from 0x000D8 to 0x0FFFF] | mem:[from 0x10000 to 0x1FFFF] | mem:[from 0x20000 to 0x2FFFF] | mem:[from 0x30000 to 0x3FFFF] - EXLUDE_ROM_REGION;
//define region ROM_huge = mem:[from 0x000D8 to 0x3FFFF] - EXLUDE_ROM_REGION;


//下邊默認(rèn)的空間都需要更改,避開(kāi)自定義開(kāi)辟的空間段
define region ROM_near = mem:[from 0x000D8 to 0x07FFF] - EXLUDE_ROM_REGION;
define region ROM_far = mem:[from 0x000D8 to 0x07FFF] | mem:[from 0x10000 to 0x1FFFF] | mem:[from 0x20000 to 0x2FFFF] | mem:[from 0x30000 to 0x3FFFF] - EXLUDE_ROM_REGION;
define region ROM_huge = mem:[from 0x000D8 to 0x07FFF] | mem:[from 0x10000 to 0x3FFFF]- EXLUDE_ROM_REGION;


//定義自己開(kāi)辟的空間
define region ROM1 = mem:[from 0x08000 to 0x0FFFF]; 


//在自己開(kāi)辟的空間里面定義一個(gè)段
place in ROM1 { readonly section NEW_SECTION1};


//把r_cg_cgc.c文件里面的程序從0x08000開(kāi)始放置
place at address mem:0x08000 { ro section .textf object r_cg_cgc.o };

注意

A、自己開(kāi)辟的空間需要根據(jù)需要存放C文件所占用空間大小來(lái)定義。本文只是為了方便操作定義了一塊比較大的空間。

B、place at address mem:0x08000 { ro section .textf object r_cg_cgc.o }; 該條命令中需要根據(jù)自己代碼是否超過(guò)64K來(lái)配置,跟IAR配置有關(guān)系:

13ff2534-0e72-11ee-962d-dac502259ad0.jpg

當(dāng)IAR配置如下圖所示時(shí),需要更換命令為:

place at address mem:0x08000 { ro section .text object r_cg_cgc.o }

14260f5a-0e72-11ee-962d-dac502259ad0.jpg

5

一切配置好后,編譯就可以看到我們指定的C文件(r_cg_cgc.c里面含有兩個(gè)函數(shù):

R_CGC_Create() test1() )

就放在了我們指定地址的地方了,如下圖所示:

1433ecb0-0e72-11ee-962d-dac502259ad0.jpg143c1868-0e72-11ee-962d-dac502259ad0.jpg

6

上文中我們?cè)谧约洪_(kāi)辟的空間里面定義了一個(gè)段,也是用來(lái)分配自己指定函數(shù)地址的,如果函數(shù)不在同一個(gè)C文件里面可以通過(guò)如下方法

在我們需要指定的函數(shù)上邊加上如下代碼:

#pragma location = "NEW_SECTION1"  
Void fun()
{


}

NEW_SECTION1是我們自己定義的段名,可以根據(jù)自己來(lái)定義。如下圖所示:

14676f40-0e72-11ee-962d-dac502259ad0.jpg148e142e-0e72-11ee-962d-dac502259ad0.jpg

二、定義變量指定地址

定義的變量只能單獨(dú)的添加,沒(méi)有統(tǒng)一操作的方法,且方法很多,這里只介紹如下方法,在ICF里面更改定義的RAM,具體操作如下圖所示:

149f3434-0e72-11ee-962d-dac502259ad0.jpg

具體命令如下:

13ed98a0-0e72-11ee-962d-dac502259ad0.svg

左右滑動(dòng)查看更多

13ed98a0-0e72-11ee-962d-dac502259ad0.svg
//默認(rèn)RAM配置
//define region SADDR  = mem:[from 0xFFE20 to 0xFFEDF] - EXLUDE_RAM_REGION;
//define region RAM_near = mem:[from 0xFBF00 to 0xFFE1F] - EXLUDE_RAM_REGION;
//define region RAM_far = mem:[from 0xFBF00 to 0xFFE1F] - EXLUDE_RAM_REGION;
//define region RAM_huge = mem:[from 0xFBF00 to 0xFFE1F] - EXLUDE_RAM_REGION;


//避開(kāi)自己開(kāi)辟的空間
define region SADDR  = mem:[from 0xFFE20 to 0xFFEDF] - EXLUDE_RAM_REGION;
define region RAM_near = mem:[from 0xFBF00 to 0xFE0FF] | mem:[from 0xFFC00 to 0xFFE1F]- EXLUDE_RAM_REGION;
define region RAM_far = mem:[from 0xFBF00 to 0xFE0FF] | mem:[from 0xFFC00 to 0xFFE1F]- EXLUDE_RAM_REGION;
define region RAM_huge = mem:[from 0xFBF00 to 0xFE0FF] | mem:[from 0xFFC00 to 0xFFE1F]- EXLUDE_RAM_REGION;
//重新定義開(kāi)辟RAM空間
define region RAM1 = mem:[from 0xFE100 to 0xFFBFF];
//在自己開(kāi)辟的RAM定義一個(gè)段
place in RAM1 { rw section RAM_METER};

在C代碼里面添加:

#pragma location = "RAM_METER"
unsigned char bufff[100];

RAM_METER 是我們自己定義的段名,可以根據(jù)自己來(lái)定義。如下圖所示:

14cb16f8-0e72-11ee-962d-dac502259ad0.jpg14f4d90c-0e72-11ee-962d-dac502259ad0.jpg

結(jié)論

當(dāng)部分函數(shù)或是整個(gè)C文件需要放在芯片特定地址時(shí),可以按照上述方法簡(jiǎn)單實(shí)現(xiàn)。

更多資料分享

您可識(shí)別下方二維碼查看:

150a33f6-0e72-11ee-962d-dac502259ad0.png1525972c-0e72-11ee-962d-dac502259ad0.png

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

    關(guān)注

    147

    文章

    18383

    瀏覽量

    378866
  • 瑞薩
    +關(guān)注

    關(guān)注

    36

    文章

    22413

    瀏覽量

    89223
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    IAR平臺(tái)現(xiàn)已提供對(duì)Zephyr RTOS的量產(chǎn)級(jí)支持

    IAR宣布,其嵌入式開(kāi)發(fā)平臺(tái)正式推出對(duì)Zephyr RTOS的量產(chǎn)級(jí)支持。該支持自IAR的Arm開(kāi)發(fā)工具鏈v9.70起全面提供。
    的頭像 發(fā)表于 07-09 15:43 ?239次閱讀

    請(qǐng)問(wèn)Modus Toolbox下針對(duì)CYW20719B2編程,能否指定全局變量地址?

    請(qǐng)問(wèn)Modus Toolbox 下針對(duì)CYW20719B2編程,能否指定全局變量地址
    發(fā)表于 07-08 07:20

    wsOtaUpgrade有沒(méi)有辦法指定MAC地址

    cybt-353027 的 MAC 地址。 我可以制作一個(gè)軟件實(shí)用程序,從連接的設(shè)備讀取 MAC 地址,然后使用正確的 MAC 地址作為命令行參數(shù)啟動(dòng) wsOTAupgrade,但我
    發(fā)表于 06-27 06:19

    瑞薩電子RA4L1的表計(jì)應(yīng)用解析(下)

    RA4L1就是電表分離架構(gòu)中的主控MCU。RL78/I1C和RA2A2就是電表集成架構(gòu)中的SoC。
    的頭像 發(fā)表于 05-13 10:50 ?2214次閱讀
    瑞薩電子RA4L1的表計(jì)應(yīng)用解析(下)

    基于 IAR Embedded Workbench 的自研 MCU 芯片軟件函數(shù)與變量?jī)?nèi)存布局優(yōu)化精控方法

    的函數(shù)和變量指定section放置方法與操作流程,兼具過(guò)程記錄與詳細(xì)說(shuō)明,旨在打造一份實(shí)用的參考指南,助力開(kāi)發(fā)者精準(zhǔn)掌控程序的內(nèi)存分布與執(zhí)行邏輯。文檔涵蓋從默認(rèn)section表的介紹,到多種放置手段的闡釋,以及實(shí)際配置示例的展示
    的頭像 發(fā)表于 04-30 16:38 ?477次閱讀
    基于 <b class='flag-5'>IAR</b> Embedded Workbench 的自研 MCU 芯片軟件函數(shù)與變量?jī)?nèi)存布局優(yōu)化精控方法

    如何在VS Code中使用瑞薩RL78系列MCU

    RL78家族系列MCU,以其業(yè)界領(lǐng)先的低功耗和各種內(nèi)置的高性能外圍功能,極大地提高了電源效率,降低了BOM成本,實(shí)現(xiàn)了設(shè)備的小型化。
    的頭像 發(fā)表于 04-23 13:49 ?3500次閱讀
    如何在VS Code中使用瑞薩<b class='flag-5'>RL78</b>系列MCU

    開(kāi)發(fā)5744的Bootloader時(shí),為flashdriver在ram中指定了一塊的空間?

    你好,我在開(kāi)發(fā)5744的Bootloader時(shí),為flashdriver在ram中指定了一塊的空間,我想要將flashdriver放在這塊地址中,使用鏈接文件將函數(shù)地址
    發(fā)表于 04-02 07:07

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-內(nèi)核空間與用戶空間的數(shù)據(jù)拷貝之?dāng)?shù)據(jù)拷貝介紹

    本帖最后由 jf_13411809 于 2025-3-20 14:10 編輯 在Linux系統(tǒng)中,內(nèi)核空間和用戶空間是兩個(gè)獨(dú)立的地址空間,它們有不同的訪問(wèn)權(quán)限和內(nèi)存保護(hù)機(jī)制。在內(nèi)
    發(fā)表于 03-20 11:50

    飛凌嵌入式ElfBoard ELF 1板卡-內(nèi)核空間與用戶空間的數(shù)據(jù)拷貝之?dāng)?shù)據(jù)拷貝介紹

    get_user(x, p);int put_user(x, p);參數(shù)說(shuō)明:x:數(shù)據(jù)的值;p:指向用戶空間的指針;需要注意的是,在進(jìn)行數(shù)據(jù)拷貝時(shí),應(yīng)確保源地址和目標(biāo)地址的有效性,并
    發(fā)表于 03-19 08:55

    Stm32CubeIDE能像Keil一樣指定不同文件下的代碼編譯到不同的FLASH地址嗎?

    Stm32CubeIDE能像Keil一樣指定不同文件下的代碼編譯到不同的FLASH地址嗎?比如部分代碼存放到內(nèi)部FLASH,另一部分存放到外部QSPI的FLASH中
    發(fā)表于 03-07 08:09

    通過(guò)Boot swap實(shí)現(xiàn)瑞薩RL78/F24 MCU固件升級(jí)

    本文主要說(shuō)明如何使用已有的程序更新flash中的固件。使用這種方法代碼閃存分為兩個(gè)區(qū)域:執(zhí)行區(qū)域和臨時(shí)區(qū)域。瑞薩flash驅(qū)動(dòng)程序RL78 RFD Type02用于對(duì)flash進(jìn)行重新
    的頭像 發(fā)表于 02-26 09:25 ?1912次閱讀
    通過(guò)Boot swap實(shí)現(xiàn)瑞薩<b class='flag-5'>RL78</b>/F24 MCU固件升級(jí)

    MAC地址的作用范圍,MAC地址怎么申請(qǐng)?

    MAC地址(MediaAccessControlAddress),也稱為局域網(wǎng)地址(LANAddress)、以太網(wǎng)地址(EthernetAddress)、硬件地址(HardwareAd
    的頭像 發(fā)表于 12-19 17:44 ?2200次閱讀
    MAC<b class='flag-5'>地址</b>的作用范圍,MAC<b class='flag-5'>地址</b>怎么申請(qǐng)?

    怎么綁定IP地址和MAC地址

    本篇文章主要說(shuō)一說(shuō)怎么在本地計(jì)算機(jī)上綁定IP和MAC地址以及通過(guò)路由器綁定IP和MAC地址,并且這兩者綁定可以解決什么問(wèn)題。 ? 先來(lái)說(shuō)說(shuō)怎么去綁定 本地計(jì)算上綁定IP和MAC地址: 首先獲取IP
    的頭像 發(fā)表于 12-01 22:48 ?2259次閱讀

    如何獲取入口函數(shù)不是__iar_program_start的Program entry的stack使用情況

    entry的stack使用相關(guān)信息: 如果對(duì)應(yīng)啟動(dòng)代碼沒(méi)有使用默認(rèn)的入口函數(shù)__iar_program_start,需要使用--entry鏈接器選項(xiàng)指定對(duì)應(yīng)的入口函數(shù)(以使用入口函數(shù)
    的頭像 發(fā)表于 11-25 16:23 ?1371次閱讀
    如何獲取入口函數(shù)不是__<b class='flag-5'>iar</b>_program_start的Program entry的stack使用情況

    知道IP地址有什么用?

    相關(guān)信息的,這是Internet之所以能夠運(yùn)行的基礎(chǔ)。更好理解的說(shuō)法就是IP地址是你發(fā)出郵件的地址,如果你要寫信給另外一個(gè)人,你就需要知道他的地址,這樣郵遞員才能把信送到,而為了送信員不會(huì)把信送錯(cuò),也需要給對(duì)方的計(jì)算機(jī)
    的頭像 發(fā)表于 11-21 10:53 ?1092次閱讀