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

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

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

【賽昉科技昉·星光RISC-V單板計(jì)算機(jī)試用體驗(yàn)】昉·星光RISC-V單板計(jì)算機(jī)上手之基礎(chǔ)系統(tǒng)編譯

開發(fā)板試用精選 ? 來源:開發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-11-15 15:21 ? 次閱讀

本文來源電子發(fā)燒友社區(qū),作者:HonestQiao, 帖子地址:https://bbs.elecfans.com/jishu_2280585_1_1.html

拿到昉·星光RISC-V單板計(jì)算機(jī)后,我們可以從官方直接下載對應(yīng)的鏡像文件,進(jìn)行燒錄。但是我們往往想稍微挑戰(zhàn)一下,從頭開始構(gòu)建系統(tǒng)。

零、學(xué)習(xí)參考網(wǎng)址:

一、需構(gòu)建部分說明:

通過《昉·星光單板計(jì)算機(jī)快速入門指南》,我們可以了解到,需要進(jìn)行如下部分的構(gòu)建:

  1. 賽昉科技 固件:
    • Boot_recovery:用于恢復(fù) SPI flash 的二進(jìn)制文件
    • secondboot:第一階段 bootloader
    • ddrinit:第一階段 ddrinit
  2. Bootloader:u-boot,通用Bootloader
  3. OpenBSI:RISC-V SBI
  4. Kernel:Linux內(nèi)核
  5. Fedora:Fedora33

下面,我們就一步一步,來進(jìn)行每個部分的構(gòu)建。

二、編譯環(huán)境基礎(chǔ)系統(tǒng)準(zhǔn)備:

為了順利構(gòu)建上面的各個部分,我們需要在Ubuntu操作系統(tǒng)下進(jìn)行各項(xiàng)操作。

官方推薦的是Ubuntu 18.04 LTS。雖然Canonical官方把Ubuntu 18.04 LTS的支持結(jié)束日期從2023年5月延長到2028年5月,但我選擇的是主流的版本的Ubuntu 20.04 LTS。

你可以在電腦上安裝Ubuntu 20.04 LTS,或者在虛擬機(jī)里面安裝Ubuntu 20.04 LTS(Vmware或者VirtualBox等);如果你熟悉WSL2,那么也可以在WSL2中運(yùn)行Ubuntu 20.04 LTS。

我使用的是運(yùn)行Docker中的Ubuntu 20.04 LTS,可以在10秒鐘之內(nèi)啟動Ubuntu 20.04 LTS基礎(chǔ)環(huán)境。


% docker run -it --name ubuntu ubuntu /bin/bash

進(jìn)入U(xiǎn)buntu 20.04 LTS基礎(chǔ)環(huán)境后,我們需要安裝下面的基礎(chǔ)組件:


# 可以執(zhí)行sudo指令,如果沒有安裝,則先安裝,否則可以跳過install sudo % apt update % apt install -y sudo % sudo apt update % sudo apt upgrade # 安裝后續(xù)操作過程中,需要的軟件 % sudo apt install -y wget % sudo apt install -y git git-lfs subversion % sudo apt install -y vim % sudo apt install -y make gcc % sudo apt install -y bison flex % sudo apt install -y gcc-riscv64-linux-gnu % sudo apt install -y libssl-dev pkg-config libncurses-dev # 設(shè)置bash為默認(rèn)shell:選擇No即可 sudo dpkg-reconfigure dash # 如果沒有生成過id_rsa,則使用下面指令,并將生成的pub填寫到github對應(yīng)設(shè)置中;否則不用: % ssh-keygen -t rsa

三、跨平臺預(yù)編譯環(huán)境準(zhǔn)備:

進(jìn)入U(xiǎn)buntu 20.04 LTS基礎(chǔ)環(huán)境后,我們需要首先安裝跨平臺預(yù)編譯環(huán)境,官方提供了對應(yīng)文件的下載地址: https://github.com/sifive/freedom-tools/releases/tag/v2020.12.0

從以上地址,下載如下三個壓縮包:

  • riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14.tar.gz
  • riscv-openocd-0.10.0-2020.12.1-x86_64-linux-ubuntu14.tar.gz
  • sdk-utilities-1.0.1-2020.12.1-x86_64-linux-ubuntu14.tar.gz

具體操作如下:


% mkdir ~/VisionFive/freedom-tools % cd ~/VisionFive/freedom-tools % wget https://static.dev.sifive.com/dev-tools/freedom-tools/v2020.12/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14.tar.gz % wget https://static.dev.sifive.com/dev-tools/freedom-tools/v2020.12/riscv-openocd-0.10.0-2020.12.1-x86_64-linux-ubuntu14.tar.gz % wget https://static.dev.sifive.com/dev-tools/freedom-tools/v2020.12/sdk-utilities-1.0.1-2020.12.1-x86_64-linux-ubuntu14.tar.gz

下載完成后,我們需要解壓,并設(shè)置對應(yīng)的PATH,以備被后續(xù)操作調(diào)用:


% tar xzvf riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14.tar.gz % tar xzvf riscv-openocd-0.10.0-2020.12.1-x86_64-linux-ubuntu14.tar.gz % tar xzvf sdk-utilities-1.0.1-2020.12.1-x86_64-linux-ubuntu14.tar.gz % echo "$(pwd)/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14/bin:$(pwd):riscv-openocd-0.10.0-2020.12.1-x86_64-linux-ubuntu14/bin:$(pwd)/sdk-utilities-1.0.1-2020.12.1-x86_64-linux-ubuntu14/bin" # 將以上的部分的部分,按照如下設(shè)置,注意最好的:$PATH % export PATH=/root/VisionFive/freedom-tools/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14/bin:/root/VisionFive/freedom-tools:riscv-openocd-0.10.0-2020.12.1-x86_64-linux-ubuntu14/bin:/root/VisionFive/freedom-tools/sdk-utilities-1.0.1-2020.12.1-x86_64-linux-ubuntu14/bin:$PATH # 并將上一條語句,添加到~/.bashrc的最后 % riscv64-unknown-elf-gcc -v ... gcc version 10.2.0 (SiFive GCC-Metal 10.2.0-2020.12.8)

riscv64-unknown-elf-gcc能夠成功運(yùn)行,說明跨平臺預(yù)編譯設(shè)置正確,可以開始后續(xù)的操作了。

四、Boot_recovery編譯:

代碼網(wǎng)址:starfive-tech/bootloader_recovery (github.com)


# 獲取Boot_recovery對應(yīng)的代碼: % cd ~/VisionFive % git clone git@github.com:starfive-tech/bootloader_recovery.git % cd bootloader_recovery % make ... Finished building target: debug/jh7100_recovery_boot.elf

顯示以上最后一條信息,表示編譯成功,debug/jh7100_recovery_boot.bin即為編譯得到的Boot_recovery文件

五、secondboot編譯:

代碼網(wǎng)址:starfive-tech/JH7100_secondBoot (github.com)


% cd ~/VisionFive % git clone https://github.com/starfive-tech/JH7100_secondBoot.git % cd JH7100_secondBoot/build % make ... riscv64-unknown-elf-objdump -S bootloader-JH7100-220515.elf > bootloader-JH7100-220515.asm

顯示以上最后一條信息,表示編譯成功,bootloader-JH7100-220515.bin.out即為編譯得到的secondboot文件。

六、ddrinit編譯:

代碼網(wǎng)址:starfive-tech/JH7100_ddrinit (github.com)


% cd ~/VisionFive % git clone https://github.com/starfive-tech/JH7100_ddrinit.git % cd JH7100_ddrinit/build % make ... riscv64-unknown-elf-objdump -S ddrinit-2133-220515.elf > ddrinit-2133-220515.asm

顯示以上最后一條信息,表示編譯成功,ddrinit-2133-220515.bin.out即為編譯得到的ddrinit文件。

七、u-boot編譯:

代碼網(wǎng)址:starfive-tech/u-boot (github.com)


# 首先檢查riscv64-linux-gnu-gcc能否正常運(yùn)行 顯示以上最后一條信息,表示能夠正常運(yùn)行,可以繼續(xù)操作了。 % cd ~/VisionFive % git clone https://github.com/starfive-tech/u-boot % cd u-boot % make starfive_jh7100_visionfive_smode_defconfig ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- % make u-boot.bin u-boot.dtb ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- ... CAT u-boot-dtb.bin COPY u-boot.bin

顯示以上最后兩條信息,表示編譯成功,u-boot.dtb、u-boot.bin即為編譯得到的u-boot文件,將會用于后續(xù)的OpenSBI編譯。

八、OpenBSI編譯:

代碼地址:riscv-software-src/open***i: RISC-V Open Source Supervisor Binary Interface (github.com)


% cd ~/VisionFive % git clone https://github.com/riscv/open***i.git % make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- PLATFORM=generic FW_PAYLOAD_PATH=~/VisionFive/u-boot/u-boot.bin FW_FDT_PATH=~/VisionFive/u-boot/u-boot.dtb ... OBJCOPY platform/generic/firmware/fw_payload.bin

顯示以上最后一條信息,表示編譯成功,build/platform/generic/firmware/fw_payload.bin即為編譯得到的openbsi文件。

但是這個文件大于2M,還需要進(jìn)行一些處理,才可以使用,具體操作如下:


% mkdir ~/VisionFive/payload % cp -a build/platform/generic/firmware/fw_payload.bin ~/VisionFive/payload/ % cd ~/VisionFive/payload % svn export https://github.com/starfive-tech/freelight-u-sdk.git/branches/starfive/fsz.sh % chmod +x fsz.sh % ./fsz.sh fw_payload.bin fw_payload.bin.out inFile: fw_payload.bin inSize: 3022552 (0x002e1ed8, LE:0xd81e2e00) outFile: fw_payload.bin.out outSize: 3022556 (0x002e1edc)

調(diào)用fsz.sh處理fw_payload.bin后,顯示如上信息,表示處理成功,fw_payload.bin.out即為實(shí)際需要使用的文件。

九、編譯Linux 內(nèi)核:

代碼網(wǎng)址:starfive-tech/linux (github.com)


% cd ~/VisionFive % git clone https://github.com/starfive-tech/linux % cd linux % make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv visionfive_defconfig % make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv menuconfig % make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv -j2 ... Kernel: arch/riscv/boot/Image.gz is ready

iShot_2022-05-15_23.11.54.png

顯示以上最后三條信息,表示編譯成功,arch/riscv/boot/Image.gz即為內(nèi)核文件,arch/riscv/boot/dts/starfive/jh7100-starfive-visionfive-v1.dtd即為需要的dtb文件。

十、使用:

通過以上的步驟,我們就能夠編譯得到所需要的如下文件:

  1. 賽昉科技 固件:
    • Boot_recovery:用于恢復(fù) SPI flash 的二進(jìn)制文件
    • secondboot:第一階段 bootloader
    • ddrinit:第一階段 ddrinit
  2. Bootloader:u-boot,通用Bootloader
  3. OpenBSI:RISC-V SBI
  4. Kernel:Linux內(nèi)核

recovery_boot、secondboot、ddrinit的燒錄,可以使用JH7100-tools進(jìn)行。該工具需要在Linux上使用。

代碼倉庫:kprasadvnsi/JH71xx-tools: Bootloader recovery and updater tool for StarFive JH71x0 SoCs. (github.com)


cd ~/VisionFive git clone git@github.com:kprasadvnsi/JH71xx-tools.git cd JH71xx-tools gcc -o jh7100-recover jh7100-recover.c ./jh7100-recover Need serial device path. Usage: ./jh7100-recover [OPTION]... -D, --device : Serial tty device path. -r, --recovery : Bootloader recovery firmware. -b, --bootloader : Second stage bootloader. -d, --ddrinit : DRAM initialization firmware. -h, --help : Show this help.

編譯成功后,將會生成jh7100-recover,該工具將會用于recovery_boot、secondboot、ddrinit的燒錄。
iShot_2022-05-16_10.11.33.png

其調(diào)用參數(shù)如下:

  • -D 指定串口設(shè)備,使用USB轉(zhuǎn)串口轉(zhuǎn)換器的跳線連接到昉·星光的 40-Pin GPIO Header 上
  • -r Boot_recovery編譯結(jié)果文件
  • -b secondboot編譯結(jié)果文件
  • -d ddrinit編譯結(jié)果文件

# 將之前生成的文件集中到一起 mkdir ~/VisionFive/images cp -a ~/VisionFive/debug/jh7100_recovery_boot.bin ~/VisionFive/images/ cp -a ~/VisionFive/JH7100_secondBoot/build/bootloader-JH7100-220515.bin.out ~/VisionFive/images/ cp -a ~/VisionFive/JH7100_ddrinit/build/ddrinit-2133-220515.bin.out ~/VisionFive/images/ # 更新第一階段 bootloader ./jh7100-recover -D /dev/ttyUSB0 -r ~/VisionFive/images/jh7100_recovery_boot.bin -b ~/VisionFive/images/bootloader-JH7100-220515.bin.out # 更新DRAM初始化固件 ./jh7100-recover -D /dev/ttyUSB0 -r ~/VisionFive/images/jh7100_recovery_boot.bin -d ~/VisionFive/images/ddrinit-2133-buildroot.bin.out # 同時更新第二階段引導(dǎo)加載程序和DRAM初始化固件 ./jh7100-recover -D /dev/ttyUSB0 -r ~/VisionFive/images/jh7100_recovery_boot.bin -b ~/VisionFive/images/bootloader-JH7100-220515.bin.out -d ~/VisionFive/images/ddrinit-2133-220515.bin.out

以上的具體操作,可參考:《昉·星光單板計(jì)算機(jī)快速入門指南》。如果Bootlaber不慎損壞,我們也可以參考《昉·星光單板計(jì)算機(jī)快速入門指南》進(jìn)行Boot_recovery恢復(fù)了。 參考《昉·星光單板計(jì)算機(jī)軟件技術(shù)參考手冊》,我們可以更新Kernel以及內(nèi)核模塊了!

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

    關(guān)注

    44

    文章

    2182

    瀏覽量

    45907
  • 賽昉科技
    +關(guān)注

    關(guān)注

    3

    文章

    144

    瀏覽量

    14241
收藏 人收藏

    評論

    相關(guān)推薦

    Ubuntu現(xiàn)已適配RISC-V單板計(jì)算機(jī)Milk-V Mars

    近期,Canonical宣布優(yōu)化的Ubuntu24.04鏡像已可用于RISC-V單板計(jì)算機(jī)Milk-VMars。Milk-VMars由深圳市群芯閃耀科技有限公司(Milk-V)設(shè)計(jì)并推出,搭載
    的頭像 發(fā)表于 06-12 08:19 ?371次閱讀
    Ubuntu現(xiàn)已適配<b class='flag-5'>RISC-V</b><b class='flag-5'>單板計(jì)算機(jī)</b>Milk-<b class='flag-5'>V</b> Mars

    暢玩·星光 2|手把手教你搭建基于RISC-V的家用NAS

    方案。通過科技與開源社區(qū)的共同努力,·星光2(VisionFive2)RISC-V單板計(jì)算機(jī)
    的頭像 發(fā)表于 06-04 08:19 ?718次閱讀
    暢玩<b class='flag-5'>昉</b>·<b class='flag-5'>星光</b> 2|手把手教你搭建基于<b class='flag-5'>RISC-V</b>的家用NAS

    信用卡大小的 RISC-V 單板計(jì)算機(jī)介紹

    信用卡大小的 RISC-V 單板計(jì)算機(jī) —— Mars Mars 由深圳市群芯閃耀科技有限公司(Milk-V)設(shè)計(jì)并推出,搭載科技
    發(fā)表于 04-12 16:39

    科技VisionFive 2生態(tài)進(jìn)展雙周報(bào)(2.1-2.29)

    Image for VisionFive 2) 社區(qū)開發(fā)者發(fā)布4篇【·星光 2高性能RISC-V單板計(jì)算機(jī)體驗(yàn)】系列文章,內(nèi)容包括:為Ubuntu安裝Docker及常用軟件;以容器
    發(fā)表于 02-29 15:45

    RISC-V智能化網(wǎng)絡(luò)解決方案|科技·星光 2成功運(yùn)行OpenWrt

    。近期,科技在·星光2(VisionFive2)RISC-V單板計(jì)算機(jī)上成功運(yùn)行OpenW
    的頭像 發(fā)表于 02-23 08:18 ?574次閱讀
    <b class='flag-5'>RISC-V</b>智能化網(wǎng)絡(luò)解決方案|<b class='flag-5'>賽</b><b class='flag-5'>昉</b>科技<b class='flag-5'>昉</b>·<b class='flag-5'>星光</b> 2成功運(yùn)行OpenWrt

    ·星光 2 高性能RISC-V單板計(jì)算機(jī)體驗(yàn)】以容器的方式安裝 HomeAssistant

    ·星光 2 高性能RISC-V單板計(jì)算機(jī)體驗(yàn)】以容器的方式安裝 HomeAssistant 下載并啟動容器 HomeAssisatant 官方并沒有提供基于
    發(fā)表于 02-21 18:07

    ·星光 2 高性能RISC-V單板計(jì)算機(jī)體驗(yàn)】為 Ubuntu 安裝 Docker 及常用軟件

    ·星光 2 高性能RISC-V單板計(jì)算機(jī)體驗(yàn)】為 Ubuntu 安裝 Docker 及常用軟件 目的 為了更好的利用星光2,決定使用容器
    發(fā)表于 02-21 17:54

    ·星光 2 高性能RISC-V單板計(jì)算機(jī)體驗(yàn)】VisionFive2開箱+安裝Ubuntu

    ·星光 2 高性能RISC-V單板計(jì)算機(jī)體驗(yàn)】VisionFive2開箱+安裝Ubuntu 前言 很感謝
    發(fā)表于 02-21 17:49

    ·星光2 RISC-V單板計(jì)算機(jī)體驗(yàn)(三) - SSH連接

    ·星光2 RISC-V單板計(jì)算機(jī)體驗(yàn)(三) - SSH連接 一、官方資料 RISC-V官網(wǎng): [https://rvspace.org]
    的頭像 發(fā)表于 02-21 10:21 ?428次閱讀
    <b class='flag-5'>昉</b>·<b class='flag-5'>星光</b>2 <b class='flag-5'>RISC-V</b><b class='flag-5'>單板計(jì)算機(jī)</b>體驗(yàn)(三) - SSH連接

    ·星光2 RISC-V單板計(jì)算機(jī)體驗(yàn)(二) - 系統(tǒng)環(huán)境

    ·星光2 RISC-V單板計(jì)算機(jī)體驗(yàn)(二) - 系統(tǒng)環(huán)境 一、官方資料 RISC-V官網(wǎng): [
    的頭像 發(fā)表于 02-21 10:15 ?577次閱讀
    <b class='flag-5'>昉</b>·<b class='flag-5'>星光</b>2 <b class='flag-5'>RISC-V</b><b class='flag-5'>單板計(jì)算機(jī)</b>體驗(yàn)(二) - <b class='flag-5'>系統(tǒng)</b>環(huán)境

    ·星光2 RISC-V單板計(jì)算機(jī)體驗(yàn)(一) - 開箱

    ·星光2 RISC-V單板計(jì)算機(jī)體驗(yàn)(一) - 開箱 一、開箱 ·星光2( VisionFi
    的頭像 發(fā)表于 02-21 10:10 ?595次閱讀
    <b class='flag-5'>昉</b>·<b class='flag-5'>星光</b>2 <b class='flag-5'>RISC-V</b><b class='flag-5'>單板計(jì)算機(jī)</b>體驗(yàn)(一) - 開箱

    ·星光 2 高性能RISC-V單板計(jì)算機(jī)試用體驗(yàn)】開箱及裝載Debian系統(tǒng)

    上周收到了·星光 2高性能RISC-V單板計(jì)算機(jī)開發(fā)板,在此非常感謝科技提供的
    發(fā)表于 01-24 00:32

    256核!發(fā)布全新RISC-V眾核子系統(tǒng)IP平臺

    Coherency)和內(nèi)存子系統(tǒng)。該RISC-V眾核子系統(tǒng)IP平臺可廣泛應(yīng)用于服務(wù)器、DPU、計(jì)算存儲、網(wǎng)絡(luò)通信、AI等領(lǐng)域。 StarLink-700
    發(fā)表于 11-29 13:37

    ·星光 2 高性能RISC-V單板計(jì)算機(jī)體驗(yàn)】在·星光2上安裝配置新編譯的OpenWRT

    本文是《【·星光 2 高性能RISC-V單板計(jì)算機(jī)體驗(yàn)】在·星光2上
    發(fā)表于 11-18 11:22

    科技RISC-V架構(gòu)7110

      FET7110-C核心板基于科技·驚鴻7110處理器設(shè)計(jì)開發(fā),采用開源RISC-V架構(gòu),主頻1.5GHz,集成4個RISC-V核,
    發(fā)表于 10-30 08:49