macOS - 上编译运行 risc-v (spike)

这篇具有很好参考价值的文章主要介绍了macOS - 上编译运行 risc-v (spike)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、说明

本文根据以下文章改编:

  • RISC-V 环境配置
    https://decaf-lang.github.io/minidecaf-tutorial/docs/step0/riscv_env.html

相关链接:

  • riscv-gnu-toolchain
    GNU toolchain for RISC-V, including GCC
    https://github.com/riscv/riscv-gnu-toolchain
  • brew - Custom-GCC-and-cross-compilers
    https://docs.brew.sh/Custom-GCC-and-cross-compilers
  • riscv-isa-sim
    Spike, a RISC-V ISA Simulator
    https://github.com/riscv-software-src/riscv-isa-sim
  • riscv-pk
    RISC-V Proxy Kernel
    https://github.com/riscv-software-src/riscv-pk

二、安装步骤

1、使用 brew 安装相关依赖

brew install dtc gawk gnu-sed gmp mpfr libmpc isl zlib expat texinfo flock

brew tap riscv/riscv
brew install riscv-tools  
brew install riscv-isa-sim  
brew install qemu
 

brew 安装的文件包一般位于:/usr/local/Cellar


2、下载预编译好的 RISC-V 工具链
riscv64-unknown-elf-gcc-8.3.0-2020.04.0-x86_64-apple-darwin.tar.gz
https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.3.0-2020.04.0-x86_64-apple-darwin.tar.gz

解压后,将 bin 目录添加到环境变量


可以得到如下的可执行文件等:

riscv64-unknown-elf-addr2line

  • riscv64-unknown-elf-gcc-ar
  • riscv64-unknown-elf-ld.bfd
  • riscv64-unknown-elf-ar
  • riscv64-unknown-elf-gcc-nm
  • riscv64-unknown-elf-nm
  • riscv64-unknown-elf-as
  • riscv64-unknown-elf-gcc-ranlib
  • riscv64-unknown-elf-objcopy
  • riscv64-unknown-elf-c++
  • riscv64-unknown-elf-gcov
  • riscv64-unknown-elf-objdump
  • riscv64-unknown-elf-c++filt
  • riscv64-unknown-elf-gcov-dump
  • riscv64-unknown-elf-ranlib
  • riscv64-unknown-elf-cpp
  • riscv64-unknown-elf-gcov-tool
  • riscv64-unknown-elf-readelf
  • riscv64-unknown-elf-elfedit
  • riscv64-unknown-elf-gdb
  • riscv64-unknown-elf-size
  • riscv64-unknown-elf-g++
  • riscv64-unknown-elf-gdb-add-index
  • riscv64-unknown-elf-strings
  • riscv64-unknown-elf-gcc
  • riscv64-unknown-elf-gprof
  • riscv64-unknown-elf-strip
  • riscv64-unknown-elf-gcc-8.3.0
  • riscv64-unknown-elf-ld

3、下载 spike 预编译的二进制程序包

spike-pk-prebuilt-x86_64-apple-darwin.tar.gz
https://cloud.tsinghua.edu.cn/f/6246e90c407b4a508816/


解压后,制作 pk 软连接

ln xxx/software/spike-pk-prebuilt-x86_64-apple-darwin/pk  /usr/local/bin/pk

否则执行程序可能报错:

libc++abi: terminating due to uncaught exception of type std::runtime_error: could not open /usr/local/bin/pk (did you misspell it? If VCS, did you forget +permissive/+permissive-off?)


三、测试

实现如下功能:

  • 生成 RISC-V 汇编
  • 使用 gcc 把 RISC-V 汇编变成 RISC-V 可执行文件
  • 用 spike 运行 RISC-V 可执行文件。
                  你的编译器                gcc            qemu/spike
MiniDecaf 源文件 ------------> RISC-V 汇编 -----> 可执行文件 --------> 输出

1、编写文件 input.c

int main(){return 233;}

2、编译到 input.s

riscv64-unknown-elf-gcc -march=rv32im -mabi=ilp32 -O3 -S input.c

得到 cat input.s,你可以查看它的内容

cat input.s

得到:

	.file	"input.c"
	.option nopic
	.attribute arch, "rv32i2p1_m2p0"
	.attribute unaligned_access, 0
	.attribute stack_align, 16
	.text
	.section	.text.startup,"ax",@progbits
	.align	2
	.globl	main
	.type	main, @function
main:
	li	a0,122
	ret
	.size	main, .-main
	.ident	"GCC: (g2ee5e430018-dirty) 12.2.0"

3、编译成可执行文件

riscv64-unknown-elf-gcc -march=rv32im -mabi=ilp32 input.s

生成 a.out 文件


你也可以跳过 -s 直接生成可执行文件

riscv64-unknown-elf-gcc -march=rv32im -mabi=ilp32 -O3 test.c

查看 a.out 文件属性

file a.out

得到:

a.out: ELF 32-bit LSB executable, UCB RISC-V, soft-float ABI, version 1 (SYSV), statically linked, not stripped


4、执行 a.out

spike --isa=RV32G /usr/local/bin/pk a.out

打印出

bbl loader

继续执行
打印 $?,这是 spike 的返回码,也就是我们 .c 文件 main 方法返回的值

echo $?

伊织 2023-08-21文章来源地址https://www.toymoban.com/news/detail-662994.html

到了这里,关于macOS - 上编译运行 risc-v (spike)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 启动电容与运行电容-电容-嵌入式开发-物联网开发

            启动电容与运行电容常常在单相异步电动机相关电路中十分常见,可以通过电容上标注的字母来区分,启动电容以CD开头,而运行电容以CBB开头。         启动电容以CD标识开头,一般来说其 耐压值小,容量大 。         启动电容一般与离心开关串联,电机启动以

    2024年02月13日
    浏览(37)
  • 嵌入式C语言自我修养笔记1-ARM体系结构与编译运行

    ARM 体系结构 ARM 体系结构 ARM 相对精简指令集 RISC 还有如下区别 ● ARM 有桶型移位寄存器,单周期内可以完成数据的各种移位操作。 ● 并不是所有的 ARM 指令都是单周期的。 ● ARM 有 16 位的 Thumb 指令集,是 32 位 ARM 指令集的压缩形式,提高了代码密度 ● 条件执行:通过指令

    2024年02月07日
    浏览(38)
  • 嵌入式常用术语与AHL-STM32L431运行示例

    1.1 与硬件相关的术语 1. 封装(Package) 2. 印制电路板(Printed Circuit Board,PCB) 3. 动态可读写随机存储器(Dynamic Random Access Memory,DRAM) 4. 静态可读写随机存储器(Static Random Access Memory,SRAM) 5. 只读存储器(Read Only Memory,ROM) 6. 闪存存储器(Flash Memory) 7. 模拟量(Analog Signal) 

    2024年04月14日
    浏览(34)
  • S905L3A拆解:嵌入式设备运行EmuELEC和Armbian

    嵌入式设备的拆解是一项有趣的活动,可以帮助我们了解设备的内部结构和组件。本文将介绍如何拆解S905L3A嵌入式设备,并演示如何在该设备上安装和运行EmuELEC和Armbian操作系统。 S905L3A是一款基于ARM架构的嵌入式处理器,广泛应用于电视盒子和嵌入式设备中。通过拆解设备

    2024年02月04日
    浏览(39)
  • 嵌入式系统专业术语以及AHL-STM32L431运行示例程序

    目录 一、嵌入式术语 1.1 与硬件相关的术语 1.2 与通信相关的术语 1.3 与功能模块相关的术语 二、运行示例程序,并得出结论 1.1 与硬件相关的术语 封装(Package,PKG)   封装是指将集成电路芯片封装在外部包装中以保护芯片并便于连接到电路板上。不同类型的封装可以影响芯

    2024年04月09日
    浏览(29)
  • 嵌入式Qt-动手编写并运行自己的第1个ARM-Qt程序

    介绍了如何搭建在Linux开发板中搭建Qt的运行环境,并测试了Qt自带的例程。 本篇,来介绍如何自己编写一个Qt程序,并将编译结果放到Linux开发板中运行。 因为Qt是支持跨平台的,所以我们可以先在Windows平台上编写和查看Qt的运行效果,然后再通过交叉编译,编译出ARM Linux平

    2024年02月02日
    浏览(30)
  • 博流RISC-V芯片JTAG debug配置与运行

    CKLink 驱动安装 Windows版驱动下载地址: https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1666331581133/T-Head-DebugServer-windows-V5.16.5-20221021-1018.zip 解压后按照默认配置安装,安装成功后插上 cklink-lite 后,可以在设备管理器中找到 cklink-lite 已经找到 运行 双击桌面上的 T-HeadDebugServer 即可

    2024年02月11日
    浏览(27)
  • MIT 6.S081 Operating System/Fall 2020 macOS搭建risc-v与xv6开发调试环境

    电脑型号:Apple M2 Pro 2023 操作系统:macOS Ventura 13.4 所以我的电脑是arm64架构的M2芯片 执行安装脚本 /bin/zsh -c \\\"$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)\\\" 镜像选哪个都无所谓,我选择的是阿里巴巴 查看安装是否成功 brew --version 执行brew的安装脚本 这步需要先安装

    2024年02月08日
    浏览(42)
  • 在FPGA上运行轻量级Linux系统的RISC-V内核 FPGA开发

    随着嵌入式系统的发展,FPGA(现场可编程门阵列)在实现高性能和灵活性方面发挥着重要作用。RISC-V是一种基于开放指令集架构(ISA)的处理器架构,它在嵌入式系统中越来越受欢迎。本文将介绍如何在FPGA上实现一个轻量级Linux系统,其中包括RISC-V内核的开发。 为了在FPGA上

    2024年02月04日
    浏览(36)
  • 在x86下运行的Ubuntu系统上部署QEMU用于模拟RISC-V硬件系统

    下载地址: 建议选择stable版本,arch选择riscv64-lp64d,libc选择常用的glibc。 下载后解压,然后将bin目录加入PATH环境变量中。 下载地址: 建议选择稳定版本,下载后解压,然后make --enable-virtfs 用户虚拟机和宿主机之间共享文件 Linux内核下载地址: 选择稳定的版本,下载完后解

    2024年02月13日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包