编译构建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

riscv-gnu-toolchain相关推荐

  1. RISC-V GNU Toolchain及交叉编译

    交叉编译 想要理解riscv gnu Toolchain的作用,首先要了解交叉编译的概念.我们平时常见的架构有Intel的X86架构.龙芯处理器的MIPS架构.苹果A系列处理器的ARM架构等. 交叉编 ...

  2. [学习笔记]使用GNU Toolchain在STM32上跑起一个最小OS

    前言: 我是从小学2年级开始接触电脑的,那个时候的系统满大街都是windows95,如果再早一点,接触到的系统应该是在小霸王游戏机上.十几年过去了(好伤感XD),现在终于知道一个最简单的操作系统,从硬 ...

  3. GNU toolchain —— (一)介绍

    GNU工具链(GNU toolchain)是一个包含了由GNU项目所产生的各种编程工具的集合.这些工具形成了一条工具链(串行使用的一组工具),用于开发应用程序和操作系统. GNU工具链中包含的项目有: ...

  4. GNU工具链(GNU Toolchain)学习

    在软件工程中,工具链(英语:toolchain)是一系列用于制作软件的工具. 这些工具一般一个接一个地运用,一件工具的输出输入至下一件工具,但广义上可以单单是指多个相关的工具. 工具链一般包括用来编辑 ...

  5. RISC-V GNU编译环境搭建与运行实践

    RISC-V GNU编译环境搭建与运行实践 riscv-gnu-toolchain交叉编译工具链 riscv-gnu-toolchain下载 riscv-gnu-toolchain编译 RISC-V运 ...

  6. 优秀的 Verilog/FPGA开源项目介绍(三十六)-RISC-V(新增一)

    关于RISC-V的二三事 risc-v官网 ❝ https://riscv.org/ RISC-V(跟我读:"risk----------------five")是一个基于精简指令 ...

  7. Linux 之八 完整嵌入式 Linux 环境、(交叉)编译工具链、CPU 体系架构、嵌入式系统构建工具

      最近,工作重心要从裸机开发转移到嵌入式 Linux 系统开发,由于之前对嵌入式 Linux 环境并不是很了解,因此,第一步就是需要了解如何搭建一个完整的嵌入式 Linux 环境.现在将学习心得记录 ...

  8. RISCV toolchain编译工具链搭建

    目录 写在前面 1.获取源文件 2.安装相关依赖包 3.修改环境变量 4.编译GCC 写在前面 刚刚接触RISCV编译器,根据网上RISCV toolchain工具链的搭建方法,结合自己体会,写点儿学 ...

  9. LINUX下的GNU调试工具,GNU调试器 GDB 8.3 发布及安装更新,支持RISC-V与IPv6连接等

    Joel Brobecker刚刚宣布了大型GDB 8.3功能版本. GNU调试器的这一更新带来了许多改进和新功能,可以帮助开发人员. GNU Debugger 8.3版本为RISC-V GNU / L ...

  10. rust做嵌入式开发_Rust 嵌入式开发 STM32 amp; RISC-V

    Rust 嵌入式开发 STM32 & RISC-V 发布于 2020-04-03 11:07:06 本帖最后由 wuhanstudio 于 2020-4-3 11:58 编辑 更新地址: [m ...

最新文章

  1. 利用dsamain.exe挂载快照(活动目录快照配置管理系列四)
  2. netty系列之:netty中的Channel详解
  3. python里面的函数
  4. linux中的acl权限,linux中的权限和ACL
  5. windbg --sqlserver 实例 转
  6. 十个多线程并发编程面试题(附答案)
  7. 已知二叉树的后序和中序遍历结果 求前序结果
  8. 关于调整我省高等教育自学考试计算机及应用等五个专业计划的通知,关于2008年我省高等教育自学考试计算机及应用等五个专业考生执行专业考试计划有关问题的通知...
  9. 点餐小程序的数据库设计以及系统实现
  10. 2018年6月2日 星期六 天气晴
  11. vue+animation实现翻页动画
  12. 基于jeecgboot的flowable流程增加节点表单的支持(二)
  13. 《jmeter入门使用》
  14. Jackson公司蛋白质印迹指南丨样品制备
  15. python流程控制编写_Python 流程控制
  16. epplus word html,.Net开源Excel、Word操作组件-NPOI、EPPlus、DocX
  17. RISC-V扩展指令示例
  18. 一元操作符、强制类型转换表达式、乘除操作符、加法操作符、移位操作符、关系操作符、判等操作符、位操作符与逻辑操作符、条件与操作符、条件或操作符--运算机制与返回值
  19. U3D-3D MAX Biped导出.fbx到Unity的Humanoid的骨架不匹配(Disable Triangle Pelvis, Enable Triangle Neck)
  20. GMT对应的SimpleDateFormat

热门文章

  1. ABBYY15版无水印免费Pdf编辑器
  2. 设置虚拟机桥接模式以及解决桥接模式上不了网以及ping不通主机的问题
  3. 杨东援:交通管控,从智能走向智慧
  4. 洛谷试炼场---新手村
  5. JSP SSH公车拍卖系统myeclipse开发mysql数据库bs框架java编程网结构详细设计
  6. 电脑上的字体安装教程
  7. STVD cpstm8 miss } in struct/union definition
  8. 计算机内部复制粘贴文件速度慢,电脑复制粘贴速度慢为什么
  9. 为酒店设计一套计算机网络管理系统,酒店管理系统设计与方案.doc
  10. java获取图片流_JAVA IO流读取图片的问题