项目简介
本项目是RISC-V的入门级最佳实践指南总结,可助力开发者快速搭建RISC-V Linux开发环境。项目提供了RISC-V相关信息、在QEMU上启动RISC-V Linux的详细步骤,以及运行交叉编译示例应用程序的方法。
项目的主要特性和功能
- 全面的RISC-V信息整合:收集RISC-V各种规范、大学课程、Web ISA模拟器、开源RTL资源及相关社区和会议信息。
- 详细的环境搭建指南:指导用户在Ubuntu 20.04.3系统搭建RISC-V Linux开发环境,涵盖安装依赖、获取交叉编译工具链、构建QEMU、Linux内核和BusyBox等。
- 可运行自定义应用程序:用户能编写并交叉编译自定义示例应用程序,添加到根文件系统后在RISC-V Linux系统运行。
安装使用步骤
前提条件
确保已下载本项目的源码文件,且系统为Linux distribution (Ubuntu 20.04.3 LTS)。
安装依赖
bash
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
sudo apt install libpixman-1-0
获取交叉编译工具链
bash
wget https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64/tarballs/riscv64--glibc--bleeding-edge-2020.08-1.tar.bz2
sudo mkdir -p /opt/bootlin
sudo tar jxf riscv64--glibc--bleeding-edge-2020.08-1.tar.bz2 -C /opt/bootlin/
构建QEMU
bash
cd qemu
git checkout v5.2.0
sudo apt install ninja-build
./configure --target-list=riscv64-softmmu
make -j $(nproc)
sudo make install
cd ..
构建Linux内核
bash
cd linux
git checkout -b risc-v v5.11
make ARCH=riscv CROSS_COMPILE=/opt/bootlin/riscv64--glibc--bleeding-edge-2020.08-1/bin/riscv64-buildroot-linux-gnu- defconfig
make ARCH=riscv CROSS_COMPILE=/opt/bootlin/riscv64--glibc--bleeding-edge-2020.08-1/bin/riscv64-buildroot-linux-gnu- -j $(nproc)
cd ..
构建BusyBox
bash
wget https://busybox.net/downloads/busybox-1.31.1.tar.bz2
tar jxvf busybox-1.31.1.tar.bz2
cd busybox-1.31.1
CROSS_COMPILE=/opt/bootlin/riscv64--glibc--bleeding-edge-2020.08-1/bin/riscv64-buildroot-linux-gnu- make defconfig
CROSS_COMPILE=/opt/bootlin/riscv64--glibc--bleeding-edge-2020.08-1/bin/riscv64-buildroot-linux-gnu- make menuconfig
CROSS_COMPILE=/opt/bootlin/riscv64--glibc--bleeding-edge-2020.08-1/bin/riscv64-buildroot-linux-gnu- make -j $(nproc)
CROSS_COMPILE=/opt/bootlin/riscv64--glibc--bleeding-edge-2020.08-1/bin/riscv64-buildroot-linux-gnu- make install
创建RamDISK
```bash cd busybox-1.31.1/_install mkdir -p dev sudo mknod dev/console c 5 1 sudo mknod dev/ram b 1 0 touch init vim init
!/bin/sh
echo "### INIT SCRIPT ###" mkdir /proc /sys /tmp mount -t proc none /proc mount -t sysfs none /sys mount -t tmpfs none /tmp echo -e "\nThis boot took $(cut -d' ' -f1 /proc/uptime) seconds\n" exec /bin/sh chmod a+x init chown root:root init chown root:root dev find -print0 | cpio -0oH newc | gzip -9 > ../../initramfs.cpio.gz cd ../../ ```
启动Linux系统
bash
sudo ./qemu/build/qemu-system-riscv64 -nographic -machine virt -kernel ./linux/arch/riscv/boot/Image -initrd initramfs.cpio.gz -append "root=/dev/vda ro console=ttyS0"
构建并运行自定义应用程序
bash
cd testcases
make clean;make
echo simple-function.out|cpio -H newc -o|gzip -9 >> ../initramfs.cpio.gz
cd ../../
sudo ./qemu/build/qemu-system-riscv64 -nographic -machine virt -kernel ./linux/arch/riscv/boot/Image -initrd initramfs.cpio.gz -append "root=/dev/vda ro console=ttyS0"
./simple-function.out
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】