RISC-V软件开发环境搭建指南
虚拟机下载与配置

  1. 下载VirtualBox(版本可以最新)下载地址https://download.virtualbox.org/virtualbox/7.0.6/VirtualBox-7.0.6-155176-Win.exe
    1.虚拟机联网
  • 第一步:点击管理—》全局设定
    在这里插入图片描述

第二步:设置网络
[图片]

第三步:设置NAT网络明细
[图片]

  • CIDR具体设置:打开命令窗口。输入ipconfig
  • 复制无线局域网的默认网关,粘贴至CIDR
    [图片]

2.新建虚拟机并配置
1.点击新建
2.配置:按照如图的类型与版本,同时文件夹应该选择空间较大的硬盘(下载后有50G左右),点击下一步
[图片]

3.分配内存:尽量多分配,选择横向内存绿色与橙色交接处(如图)这样虚拟机运行速度会较快。点击下一步
[图片]

4.点击创建
[图片]

5.不用修改,点击下一步
[图片]

6.选择动态分配,点击下一步
[图片]

7.文件位置需要选择空间足够的盘,同时虚拟硬盘大小直接选最大就ok(动态分配),点击创建
[图片]

8.可以看见新虚拟机已经安装了,现在配置系统具体设置与共享文件夹(方便主机和虚拟机之间传输文件)。
1.单击设置->系统->处理器->将处理器数量拉至绿色与橙色交接(选择实际核数)
[图片]

2.单击网络将连接方式改为桥接网卡
[图片]

3.点击共享文件夹,点击右方添加共享文件夹路径
[图片]

4.路径设置(以后传输文件就复制到这个文件夹内,放在易找到的地方),勾选自动挂载
[图片]

9.点击ok,之后启动虚拟机,会弹出选择启动盘,点击右下角的选择
[图片]

10.选择注册虚拟机,点击注册,找到下载过的虚拟光盘文件ubuntu-20.04.4-desktop-amd64.iso(这个需要找老师预先下载),选择后点击继续
[图片]

11.等待一段时间,看见如下标识,点击 Install Ubuntu。
[图片]

12.选择默认Keyboar layout(English(US)),点击Continue(ps:如果界面显示不完整可以使用Tab键一个一个尝试,下同)
[图片]

12.此页面,选择Minimal installation,点击continue
[图片]

13.点击install Now,跳出警告,点击continue
[图片]

14.跳出时区选择,选择上海作为标准时区
15.用户设置界面,输入名字,密码尽量短小易记(例如123),选择Log in automatically,点击下一步,等待下载好(大约几分钟),点击restart now
在这里插入图片描述

3.安装gcc,spike,qemu

1.点击上方“设备”,最下方安装增强功能,点击确定。安装
(若出错,参考这篇文章https://blog.csdn.net/kinzxv/article/details/81237557?ops_request_misc=&request_id=&biz_id=102&utm_term=Oracle%20VM%20VirtualBox%E5%A6%82%E4%BD%95%E5%88%A0%E9%99%A4%E5%A2%9E%E5%BC%BA%E5%8A%9F%E8%83%BD&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-2-81237557.142v73wechat_v2,201v4add_ask,239v2insert_chatgpt&spm=1018.2226.3001.4187)
2.点击设备,设置拖放共享粘贴板,都选择为双向
[图片]

3.输入终端
sudo mkdir /mnt/share
sudo mount -t vboxsf XXX(共享文件夹名称 ) /mnt/share
搭建好共享文件夹,(这个是临时的,建立永久的参考:https://blog.csdn.net/SkyGloaming/article/details/120518021?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167833467716800188537249%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=167833467716800188537249&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_click~default-2-120518021-null-null.142v73wechat_v2,201v4add_ask,239v2insert_chatgpt&utm_term=ubuntu%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6%E5%A4%B9&spm=1018.2226.3001.4187
4.下载基本工具链
终端输入:

sudo apt-get install  vim git autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev

5.通过网络下载库:
git clone https://gitee.com/mirrors/riscv-gnu-toolchain.git
6.库完成后跳转至库内
编辑其.gitmodules

vim  .gitmodules

按键“i”进入文本编辑模式,删除所有并复制下列代码至其中

[submodule "binutils"]
        path = binutils
        url = https://gitee.com/mirrors/binutils-gdb.git
        branch = binutils-2_40-branch
[submodule "gcc"]
        path = gcc
        url = https://gitee.com/mirrors/gcc.git
        branch = releases/gcc-12
[submodule "glibc"]
        path = glibc
        url = https://gitee.com/mirrors/glibc_source.git
[submodule "dejagnu"]
        path = dejagnu
        url = https://git.savannah.gnu.org/git/dejagnu.git
        branch = dejagnu-1.6.3
[submodule "newlib"]
        path = newlib
        url = https://gitee.com/mirrors/newlib-cygwin.git
        branch = master
[submodule "gdb"]
        path = gdb
        url = https://gitee.com/mirrors/binutils-gdb.git
        branch = gdb-12-branch
[submodule "qemu"]
        path = qemu
        url = https://gitee.com/mirrors/qemu.git
[submodule "musl"]
        path = musl
        url = https://gitee.com/mirrors/musl.git
        branch = master
[submodule "spike"]
        path = spike
        url = https://gitee.com/mirrors/riscv-isa-sim.git
        branch = master
[submodule "pk"]
        path = pk
        url = https://github.com/riscv-software-src/riscv-pk.git
        branch = master

7.点击按键“esc”后输入“:wq”,保存文件

8.依次输入

git submodule sync
git submodule update --init --recursive

9.等待下载完成(40min)
(ps:qemu文件可能下载失败,可以外部下载后通过共享文件传输进内部)
下载地址:https://download.qemu.org/qemu-7.2.0.tar.xz
10.下载完成后分别编译GCC, QEMU, SPIKE。找到下载的文件夹位置riscv-gnu-toolchain,在同级文件夹打开终端,创建Makefile的内容

touch Makefile
vim Makefile

按键“i”进入文本编辑模式并复制下列代码至其中(注意标红字(-j7)段需要自己修改为自己cpu分配的核数)

TOP_DIR   = $(shell pwd)
GCC_DIR   = riscv-gnu-toolchain
QEMU_DIR  = riscv-gnu-toolchain/qemu
SPIKE_DIR = riscv-gnu-toolchain/spike

###############################################################################################################


spike-modify:
        @echo -ne "\nBuild RISCV Spike\n"
        @cd $(SPIKE_DIR)/build && make -j7 && make install

spike-all:
        @cd $(SPIKE_DIR) && mkdir -p build && mkdir -p install && cd build && ../configure --prefix=$(TOP_DIR)/$(SPIKE_DIR)/install --enable-commitlog
        @echo -ne "\nRe-Build RISCV Spike\n"
        @cd $(SPIKE_DIR)/build && make -j7 && make install

spike-clean:
        @echo -ne "\nRemove RISCV Spike\n"
        @rm -rf $(SPIKE_DIR)/build
        @rm -rf $(SPIKE_DIR)/install


###############################################################################################################


qemu-modify:
        @echo -ne "\nBuild RISCV Qemu\n"
        @cd $(QEMU_DIR)/build && make -j7 && make install

qemu-all:
        @cd $(QEMU_DIR) && mkdir -p build && mkdir -p install && cd build && ../configure --prefix=$(TOP_DIR)/$(QEMU_DIR)/install
        @echo -ne "\nRe-Build RISCV Qemu\n"
        @cd $(QEMU_DIR)/build && make -j7 && make install

qemu-clean:
        @echo -ne "\nRemove RISCV Qemu\n"
        @rm -rf $(QEMU_DIR)/build
        @rm -rf $(QEMU_DIR)/install


###############################################################################################################


gcc-modify:
        @echo -ne "\nBuild RISCV GCC\n"
        @cd $(GCC_DIR)/build && make -j7 && make install 

gcc-all:
        @cd $(GCC_DIR) && mkdir -p build && mkdir -p install && cd build && ../configure --prefix=$(TOP_DIR)/$(GCC_DIR)/install --with-cmodel=medany --enable-multilib
        @echo -ne "\nRe-Build RISCV GCC\n"
        @cd $(GCC_DIR)/build && make -j7 && make install 
        #&& make linux -j7 && make install

gcc-clean:
        @echo -ne "\nRemove RISCV GCC\n"
        rm -rf $(GCC_DIR)/build
        rm -rf $(GCC_DIR)/install

gcc-test:
        $(GCC_DIR)/install/bin/riscv64-unknown-elf-gcc -print-multi-lib


###############################################################################################################

all: gcc-all qemu-all spike-all

11.点击按键“esc”后输入“:wq”,保存文件
12.先进入spike目录,使用命令

  git checkout 469d9c6907d6df44afce48c422626194c9cd1e3c  
   sudo apt-get install device-tree-compiler pkg-config  libsysfs-dev

13.然后再回到Makefile目录使用make gcc-all, make spike-all, make qemu-all 分别编译。

14.完成搭建

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐