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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(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)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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

    文章

    18589

    瀏覽量

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

    關(guān)注

    36

    文章

    22428

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    VS Code 中`xiaozhi-esp32` 項(xiàng)目文件夾 修改 I2C 設(shè)備地址為 `0x78`

    VS Code 中`xiaozhi-esp32` 項(xiàng)目文件夾 修改 I2C 設(shè)備地址為 `0x78`
    的頭像 發(fā)表于 11-28 07:30 ?461次閱讀

    請(qǐng)問(wèn)e203定義的地址空間是虛擬地址還是物理地址?

    ; RED_LED_OFFSET); GPIO_REG為基地址,GPIO_OUTPUT_VAL為偏移量,從而確定了要操作的寄存器的絕對(duì)地址。 同樣地,在做上電復(fù)位時(shí),可以配置pc_rtvec使得程序從不同的內(nèi)存
    發(fā)表于 11-11 06:20

    編譯器如何指定代碼的地址段?

    我在官方 gcc 的基礎(chǔ)上添加了自定義指令,目前可以正確編譯出匯編代碼,但是我該如何指定匯編結(jié)果的地址段,讓生成的代碼符合蜂鳥(niǎo)的地址分配呢?求助大神幫助指導(dǎo)一下,thx~
    發(fā)表于 11-10 06:06

    通過(guò)sysmem接口擴(kuò)展內(nèi)存空間

    存儲(chǔ)器的訪問(wèn)接口,在e203_subsys_mems.v文件中可以找到: 同時(shí)在這個(gè)源文件中實(shí)現(xiàn)了一主多從的總線系統(tǒng),可以看到sysmem被分配到0x80000000到0xFFFFFFFF的地址空間
    發(fā)表于 10-24 08:12

    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 ?337次閱讀

    請(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 ?2464次閱讀
    瑞薩電子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表的介紹,到多種放置手段的闡釋?zhuān)约皩?shí)際配置示例的展示
    的頭像 發(fā)表于 04-30 16:38 ?579次閱讀
    基于 <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 ?3814次閱讀
    如何在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

    通過(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 ?2112次閱讀
    通過(guò)Boot swap實(shí)現(xiàn)瑞薩<b class='flag-5'>RL78</b>/F24 MCU固件升級(jí)

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

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