riscv-gnu-toolchain

编译构建riscv-gnu-toolchain,使用qemu引导测试linux

文档

https://wiki.ubuntu.com/RISC-V
https://www.cnx-software.com/2018/03/16/how-to-run-linux-on-risc-v-with-qemu-emulator/

下载组件

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

下载编译工具链

git clone https://gitee.com/mirrors/riscv-gnu-toolchain
cd riscv-gnu-toolchain
# 这个速度有点慢
# git rm qemu
# git submodule update --init --recursive
git clone https://git.qemu.org/git/qemu.git
git clone https://gitee.com/riscv-mcu/riscv-binutils-gdb.git riscv-binutils
git clone https://gitee.com/riscv-mcu/riscv-dejagnu.git
git clone https://gitee.com/riscv-mcu/riscv-gcc.git
#git clone https://gitee.com/mirrors/riscv-gcc
git clone https://gitee.com/riscv-mcu/riscv-binutils-gdb.git riscv-gdb
git clone git://sourceware.org/git/glibc.git
git clone git://sourceware.org/git/newlib-cygwin.git

./configure
sudo make linux -j $(nproc)
riscv64-unknown-linux-gnu-gcc -v

编译u-boot

git clone https://gitlab.denx.de/u-boot/u-boot.git
make CROSS_COMPILE=riscv64-unknown-linux-gnu- qemu-riscv64_smode_defconfig
make CROSS_COMPILE=riscv64-unknown-linux-gnu- -j $(nproc)

编译opensbi

git clone https://gitee.com/ma-mengjin/opensbi
cd opensbi
make PLATFORM=generic CROSS_COMPILE=riscv64-unknown-linux-gnu-

编译内核

wget https://mirrors.tuna.tsinghua.edu.cn/kernel/v5.x/linux-5.18.tar.xz
tar -xvf linux-5.18.tar.xz
make ARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu- defconfig
make ARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu- -j $(nproc)

下载镜像

wget https://cdimage.ubuntu.com/releases/22.04/release/ubuntu-22.04-preinstalled-server-riscv64+unmatched.img.xz

启动测试

#从镜像复制出来initrd.img-5.15.0-1007-generic
#其它路径按实际自行指定
qemu-system-riscv64 \
-machine virt -nographic -m 2048 -smp 4 \
-bios /usr/lib/riscv64-linux-gnu/opensbi/generic/fw_dynamic.elf \
-kernel linux-5.18/arch/riscv/boot/Image \
-initrd initrd.img-5.15.0-1007-generic \
-drive file=buntu-22.04-preinstalled-server-riscv64+unmatched.img,format=raw,if=virtio \
-device virtio-net-device,netdev=eth0 -netdev user,id=eth0 \
-append "root=LABEL=cloudimg-rootfs ro earlycon single"

启动界面

OpenSBI v0.9
   ____                    _____ ____ _____
  / __ \                  / ____|  _ \_   _|
 | |  | |_ __   ___ _ __ | (___ | |_) || |
 | |  | | '_ \ / _ \ '_ \ \___ \|  _ < | |
 | |__| | |_) |  __/ | | |____) | |_) || |_
  \____/| .__/ \___|_| |_|_____/|____/_____|
        | |
        |_|

Platform Name             : riscv-virtio,qemu
Platform Features         : timer,mfdeleg
Platform HART Count       : 4
Firmware Base             : 0x80000000
Firmware Size             : 124 KB
Runtime SBI Version       : 0.2

[   18.445154] EXT4-fs (vda1): INFO: recovery required on readonly filesystem
[   18.445439] EXT4-fs (vda1): write access will be enabled during recovery
[   18.472855] EXT4-fs (vda1): recovery complete
[   18.476141] EXT4-fs (vda1): mounted filesystem with ordered data mode. Quota mode: disabled.

Welcome to Ubuntu 22.04 LTS!

其他

-mabi
ilp32、ilp32f、ilp32d、lp64、lp64f  lp64d
i:int,l:long,p:pointer, 32/64:32/64,f:float,d:double
裸机:unknown-elf,none-embed
linux:linux
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值