吴忠躺衫网络科技有限公司

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

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

3天內不再提示

RISC-V MCU gp全局指針說明

CHANBAEK ? 來源:CSDN-借過風景 ? 作者:CSDN-借過風景 ? 2023-02-15 11:55 ? 次閱讀

gp ,g lobal pointer,全局指針寄存器RISC-V 32個寄存器之一,為了優化±2KB內全局變量的訪問。

gp寄存器在啟動代碼中加載為__global_pointer$的地址,并且之后不能被改變。

linker時使用 __global_pointer$ 來比較全局變量的地址,如果在范圍內,就替換掉lui或puipc指令的 absolute/pc-relative尋址, 變為gp-relative尋址,使得代碼效率更高。 該過程被稱為 linker relaxation (鏈接器松弛),也可以使用-Wl,--no-relax來關閉此功能。

如:需要讀取全局變量 tao_global的值,地址位 0x20000100 ,gp指針地址為 0x20000800 ;

  • 普通調用方式為:
    lui a5,0x20000 /* 將0x20000100200x20000 左移12位賦給a5寄存器 */
    lw a5,256(a5) /* 加載a5+2560x1000x2000010012位)的值至a5寄存器 */
    
  • gp指針優化調用方式:
    lw a5,-1792(gp) /* 加載gp-1792地址處的值至a5,即0x20000100處的值*/
    

通過gp指針,訪問其值±2KB,即4KB范圍內的全局變量,可以節約一條指令。

4KB區域可以位于尋址內存中任意位置,但是為了使優化更有效率,最好覆蓋最頻繁使用的RAM區域。 對于標準的newlib應用程序,這是分配.sdata部分的區域,因為它包含了諸如_impure_ptr、malloc_sbrk_base等變量。 因此,定義應該被放在.sdata部分之前。 以RISC-V MCU CH32V103 ld文件為例:

.data :
    {
        *(.gnu.linkonce.r.*)
        *(.data .data.*)
        *(.gnu.linkonce.d.*)
        . = ALIGN(8);
        PROVIDE( __global_pointer$ = . + 0x800 ); /* __global_pointer地址*/
        *(.sdata .sdata.*)
        *(.sdata2.*)
        *(.gnu.linkonce.s.*)
        . = ALIGN(8);
        *(.srodata.cst16)
        *(.srodata.cst8)
        *(.srodata.cst4)
        *(.srodata.cst2)
        *(.srodata .srodata.*)
        . = ALIGN(4);
        PROVIDE( _edata = .);
    } >RAM AT>FLASH

gp指針優化代碼空間---

通常情況下,gp指針定義在data區,有時候為了優化代碼密度,可以根據實際情況修改gp指針的位置,如工程中定義了大量的初始化為0或未初始化的全局數組作為緩沖區,可以將gp指針的位置定義到bss段。

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

    關注

    146

    文章

    17317

    瀏覽量

    352631
  • 寄存器
    +關注

    關注

    31

    文章

    5363

    瀏覽量

    121156
  • 指針
    +關注

    關注

    1

    文章

    481

    瀏覽量

    70608
  • 變量
    +關注

    關注

    0

    文章

    613

    瀏覽量

    28463
  • RISC-V
    +關注

    關注

    45

    文章

    2322

    瀏覽量

    46589
收藏 人收藏

    評論

    相關推薦

    擁抱RISC-V的開發世界 兆易創新推GD32VF103系列RISC-V MCU

    兆易創新推出GD32V系列RISC-V內核32位通用MCU新品,現在,直接使用GD32V系列32位通用MCU以創意靈感擁抱
    發表于 08-23 10:05 ?8002次閱讀

    國產RISC-V MCU推薦

    高速PHY收發器(480Mbps)、千兆以太網MAC及10兆物理層收發器等。 沁恒的另一顆芯片 xiaolinen認為在選擇國產RISC-V MCU時,需要重點考慮生態問題,碰到問題是否能快速的找到
    發表于 04-17 11:00

    RISC-VMCU與ARM對比

    RISC-VMCU與ARM在多個方面存在顯著的區別,以下是兩者的對比: 開源與專有 RISC-VRISC-V是一種開源的指令集架構(ISA),允許任何人免費使用、修改和貢獻
    發表于 05-27 15:58

    RISC-VMCU關于USB高速通信設計的難點

    RISC-VMCU關于USB高速通信設計的難點主要集中在硬件集成、性能優化、軟件生態和成本效益等方面。以下是針對這些難點的詳細分析和歸納: 硬件集成與外設支持 : 高速USB PHY集成 :傳統
    發表于 05-27 16:23

    risc-vmcu對RTOS兼容性如何

    RISC-VMCU對RTOS(實時操作系統)的兼容性主要取決于多個因素,包括RTOS的版本、RISC-V指令集的實現、以及芯片制造商提供的支持。以下是關于RISC-V
    發表于 05-27 16:26

    RISC-V MCU入門

    RISC-V MCU入門哪個廠家的資料比較全?
    發表于 11-27 16:51

    RISC-V MCU技術

    嘿,咱來聊聊RISC-V MCU技術哈。 這RISC-V MCU技術呢,簡單來說就是基于一個叫RISC-V的指令集架構做出的微控制器技術。
    發表于 01-19 11:50

    RISC-V MCU開發 (一):集成開發環境

    、鏈接腳本文件編輯、全局配置、工程配置、命令行工具、重新編譯等功能入口。 【內置芯片工程】MRS內置WCH、GD等廠家RISC-V、ARM等系列MCU的芯片工程模板,同時支持Harmony
    發表于 09-22 14:44

    RISC-V MCU開發相關資料分享

    RISC-V MCU開發(一):集成開發環境近年來,RISC-V生態獲得了空前的繁榮發展,國內外眾多科技公司紛紛下場布局、行業應用層出不窮,搭載RISC-V內核的
    發表于 11-10 07:50

    RISC-V MCU開發相關資料分享

    RISC-V MCU開發 (二):工程創建與管理MounRiver? Studio(MRS)內置了GD、WCH等芯片廠家的RISC-V/ARM以及RISC-V通用指令集系列的芯片工程模
    發表于 12-09 08:14

    RISC-V的相關資料分享

      大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是國內RISC-V內核MCU廠商(2021)。  雖然RISC-V風潮已經吹了好幾年,但2019年才是其真正進入主流市場的元年,最近
    發表于 02-11 06:23

    RISC-V MCU開發的相關資料分享

    RISC-V MCU開發 (十一):跨內核工程轉換大多數嵌入式工程師使用Keil進行開發,但Keil目前不支持RISC-V內核,只支持ARM內核。MounRiver? Studio(MRS)同時支持
    發表于 02-11 06:17

    RISC-V gp全局指針寄存器說明

    RISC-V 32個寄存器之一,為了優化±2KB內全局變量的訪問。 gp寄存器在啟動代碼中加載為__global_pointer$的地址,并且之后不能被改變。 linker時使用__global_pointer
    發表于 09-11 16:57

    RISC-V MCU開發(一):集成開發環境

    RISC-V MCU開發(一):集成開發環境近年來,RISC-V生態獲得了空前的繁榮發展,國內外眾多科技公司紛紛下場布局、行業應用層出不窮,搭載RISC-V內核的
    發表于 11-05 16:35 ?37次下載
    <b class='flag-5'>RISC-V</b> <b class='flag-5'>MCU</b>開發(一):集成開發環境

    推出采用GD32 RISC-VMCU

    推出采用GD32 RISC-VMCU ppt分享
    發表于 07-14 17:15 ?0次下載
    咸丰县| 六合彩摇奖结果| 大发888娱乐场118| 真博国际| 百家乐官网概率下注法| 百家乐官网方案| 百家乐巴厘岛平台| 明溪百家乐的玩法技巧和规则| 大发888 方管下载| 平远县| 真人百家乐官网作假视频| 百家乐官网真人游戏棋牌| 澳门百家乐现场真人版| 大发888娱乐城游戏lm0| 伽师县| 百家乐官网博乐36bol在线 | 威尼斯人娱乐城信誉lm0| 博彩赌场| 百家乐官网真人娱乐城| 百家乐网上最好网站| 威尼斯人娱乐场 送2688元礼金领取lrm64 | 碧桂园太阳城户型图| 国际足球直播| 百家乐官网8点直赢| 百家乐波音平台开户导航| 大发888账号申请| 真人百家乐官网是骗局| 爱赢百家乐官网的玩法技巧和规则| 跪求百家乐打法| 钻石国际| 百家乐官网路单下| 威尼斯人娱乐城老品牌值得信赖| 南郑县| 百家乐官网波音独家注册送彩| 百家乐软件代理打| 宁晋县| 百家乐玩法秘决| 大发888电话| 网络百家乐官网游赌博| 百家乐自动算牌软件| 利澳娱乐城|