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

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

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

RISC-V Linux運(yùn)行時(shí)OpenSBI配置和編譯

麥辣雞腿堡 ? 來(lái)源:嵌入式Linux充電站 ? 作者:Vincent ? 2023-10-08 14:24 ? 次閱讀

配置和編譯

OpenSBI的配置選項(xiàng)位于不同平臺(tái)下的config.mk文件,例如platform/generic/config.mk

# Blobs to build
FW_TEXT_START=0x80000000
FW_DYNAMIC=y
FW_JUMP=y
FW_PAYLOAD=y
ifeq ($(PLATFORM_RISCV_XLEN), 32)
  # This needs to be 4MB aligned for 32-bit system
  FW_JUMP_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x400000)))
else
  # This needs to be 2MB aligned for 64-bit system
  FW_JUMP_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x200000)))
endif
FW_JUMP_FDT_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x2200000)))

ifeq ($(PLATFORM_RISCV_XLEN), 32)
  # This needs to be 4MB aligned for 32-bit system
  FW_PAYLOAD_OFFSET=0x400000
else
  # This needs to be 2MB aligned for 64-bit system
  FW_PAYLOAD_OFFSET=0x200000
endif
FW_PAYLOAD_FDT_ADDR=$(FW_JUMP_FDT_ADDR)

選擇編譯需要的固件類型:

三種固件,根據(jù)自己的需求,在對(duì)應(yīng)的固件類型配置為y:

  • FW_DYNAMIC=y
  • FW_JUMP=y
  • FW_PAYLOAD=y

默認(rèn)三種固件類型都編譯。

FW_TEXT_START

OpenSBI的運(yùn)行地址,需要把OpenSBI下載到FW_TEXT_START指定的地址才能運(yùn)行

FW_JUMP_ADDR

FW_JUMP固件的跳轉(zhuǎn)地址,對(duì)于RV32需要4M對(duì)齊,對(duì)于RV64需要2M對(duì)齊

FW_PAYLOAD_OFFSET

FW_PAYLOAD固件的偏移地址,對(duì)于RV32需要4對(duì)齊,對(duì)于RV64需要2M對(duì)齊

FW_JUMP_FDT_ADDRFW_PAYLOAD_FDT_ADDR

設(shè)備樹(shù)的地址

這里可能有個(gè)疑問(wèn):為什么跳轉(zhuǎn)地址/偏移地址需要2M對(duì)齊或4M對(duì)齊?這個(gè)跟RISC-V Linux啟動(dòng)時(shí)建立的頁(yè)表有關(guān),需要深入分析才知道。

聲明:本文內(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)投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1352

    瀏覽量

    40161
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11183

    瀏覽量

    208563
  • 固件
    +關(guān)注

    關(guān)注

    9

    文章

    549

    瀏覽量

    22865
  • RISC
    +關(guān)注

    關(guān)注

    6

    文章

    461

    瀏覽量

    83620
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    647

    瀏覽量

    32747
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何檢查Linux服務(wù)器的運(yùn)行時(shí)

    Linux 中的 uptime 用于查看系統(tǒng)啟動(dòng)后的運(yùn)行時(shí)間。它是一個(gè)比較簡(jiǎn)單的 Linux 命令,可以不帶參數(shù)直接運(yùn)行。
    發(fā)表于 11-25 15:25 ?1.5w次閱讀
    如何檢查<b class='flag-5'>Linux</b>服務(wù)器的<b class='flag-5'>運(yùn)行時(shí)</b>間

    vs code下面如何安裝配置risc-v交叉編譯工具?

    如題,如何配置vscdoe下面的RISC-V的交叉編譯工具?
    發(fā)表于 07-25 11:48

    rIsc-v的缺的是什么?

    通過(guò)軟件模擬或復(fù)雜的指令序列來(lái)實(shí)現(xiàn)一些高級(jí)功能,這可能會(huì)增加執(zhí)行時(shí)間和功耗。 2. 生態(tài)系統(tǒng)支持不足 軟件和工具鏈的可用性:盡管RISC-V社區(qū)在快速發(fā)展,但與成熟的ARM等架構(gòu)相比,其生
    發(fā)表于 07-29 17:18

    開(kāi)發(fā)者為Linux添加了一系列RISC-V UEFI支持補(bǔ)丁

    10 重命名了 arm-init,以便可以在不同的代碼中使用該基礎(chǔ);補(bǔ)丁 11 則為 RISC-V 添加了運(yùn)行時(shí)服務(wù)??偨Y(jié)起來(lái),這一系列補(bǔ)丁的主要貢獻(xiàn)在于:添加了完整的 ioremap 支持。添加
    發(fā)表于 08-13 15:19

    安卓支持RISC-V架構(gòu)的技術(shù)剖析

    ://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b llvm-toolchainrepo sync該工程中需要為RISC-V添加工具前綴、架構(gòu)配置運(yùn)行時(shí)庫(kù)
    發(fā)表于 09-01 15:45

    搭載RISC-V芯片的手機(jī),或?qū)⒂诿髂暾酵瞥?/a>

    開(kāi)發(fā)板來(lái)測(cè)試RTOS、Linux發(fā)行版、編譯器等項(xiàng)目。作為RISC-V的重要推動(dòng)者之一,去年SiFive從英特爾、高通等投資者中籌集了超過(guò)6000萬(wàn)美元,前高通技術(shù)公司高管Patrick Little
    發(fā)表于 12-17 08:00

    ?GPU,RISC-V的長(zhǎng)痛

    色與ARM的計(jì)算能力表現(xiàn),但在圖形處理上還是沒(méi)能匹敵ARM多年來(lái)的積累。但境況似乎正在慢慢好轉(zhuǎn),近年來(lái)RISC-V的GPU生態(tài)也已經(jīng)開(kāi)始發(fā)力了。 已有GPU生態(tài)的支持去年1月,賽昉科技發(fā)布了可運(yùn)行
    發(fā)表于 03-24 15:53

    RISC-V GNU Toolchain 編譯安裝

    RISC-V GNU Toolchain 源碼獲取$git clone https://github.com/riscv/riscv-gnu-toolchain.git&
    發(fā)表于 04-16 00:22

    方舟編譯器官發(fā)布對(duì) RISC-V 后端的支持

    昨日,方舟編譯器官方新發(fā)布了對(duì) RISC-V 后端的支持。 地址:https://gitee.com/openarkcompiler-incubator/mapleall 目前,方舟編譯器可以在
    的頭像 發(fā)表于 11-21 10:55 ?1706次閱讀

    關(guān)于risc-v啟動(dòng)部分的思考

    順序 3.什么是SBI? 4.什么是opensbi 5.openSBI call接口的實(shí)現(xiàn) 6.總結(jié) 1.本文說(shuō)明 risc-v的架構(gòu)有著非常鮮明的特點(diǎn),如果看過(guò)arm,aarch64,mips等架構(gòu)
    的頭像 發(fā)表于 12-28 10:25 ?5409次閱讀
    關(guān)于<b class='flag-5'>risc-v</b>啟動(dòng)部分的思考

    RISC-V嵌入式開(kāi)發(fā)準(zhǔn)備篇1:編譯過(guò)程簡(jiǎn)介

    本文的目的是對(duì)編譯過(guò)程進(jìn)行簡(jiǎn)單的科普與回顧,為后續(xù)詳細(xì)介紹“RISC-V GCC工具鏈”和“RISC-V匯編語(yǔ)言程序設(shè)計(jì)”打下基礎(chǔ)。
    發(fā)表于 11-02 19:06 ?38次下載
    <b class='flag-5'>RISC-V</b>嵌入式開(kāi)發(fā)準(zhǔn)備篇1:<b class='flag-5'>編譯</b>過(guò)程簡(jiǎn)介

    RISC-V MCU開(kāi)發(fā) (四):編譯配置

    RISC-V MCU開(kāi)發(fā) (四):編譯配置在嵌入式開(kāi)發(fā)中,當(dāng)我們完成了工程創(chuàng)建、代碼編輯等操作之后,就可以開(kāi)始進(jìn)行工程編譯。 對(duì)于使用內(nèi)置工程模板創(chuàng)建或外部導(dǎo)入的項(xiàng)目,MounRive
    發(fā)表于 12-07 19:21 ?3次下載
    <b class='flag-5'>RISC-V</b> MCU開(kāi)發(fā) (四):<b class='flag-5'>編譯</b><b class='flag-5'>配置</b>

    Arch Linux RISC-V 端口及相關(guān)作品簡(jiǎn)介

    Arch Linux RISC-V 端口及相關(guān)作品簡(jiǎn)介 演講ppt分享
    發(fā)表于 07-17 16:34 ?6次下載

    ch32v307記錄程序運(yùn)行時(shí)

    ch32v307記錄程序運(yùn)行時(shí)間 在程序開(kāi)發(fā)中,很重要的一項(xiàng)任務(wù)就是對(duì)程序的運(yùn)行時(shí)間進(jìn)行評(píng)估。對(duì)于大型的程序系統(tǒng)來(lái)說(shuō),它們通常需要處理大量的數(shù)據(jù)或進(jìn)行復(fù)雜的計(jì)算操作。因此,如果程序的運(yùn)行時(shí)
    的頭像 發(fā)表于 08-22 15:53 ?804次閱讀

    OpenSBI固件類型介紹

    OpenSBI固件類型 在介紹OpenSBI固件類型前,我們需要知道一點(diǎn)RISC-V Linux的啟動(dòng)過(guò)程: 啟動(dòng)流程:ZSBL-->FSBL-->
    的頭像 發(fā)表于 10-08 14:11 ?629次閱讀
    <b class='flag-5'>OpenSBI</b>固件類型介紹