学习tinyriscv(1):安装tinyriscv的工具链
因为毕设是CPU的低功耗设计,所以开始看cpu,打算还是先从这个tinyriscv学起,昨天把环境下好了,第一步是用git去clone代码,这个首先要下载git,然后在目标文件夹鼠标右键,选择“open git bush here”,再输入项目的url,就可以了。方法不难。b站有详细教程
接下来是安装工具,我用的是windows,就按照以下步骤,唯一有一个地方有出入的是,安装GNU工具链的时候,工具路径不是他这样的,是散开的,为了考虑周全,我自己又建了一个“gnu-mcu-eclipse-riscv-none-gcc-8.2.0-2.2-20190521-0004-win64”的文件夹,然后又在这个文件夹里解压了(后面测试指令的时候也没有报错)
make和python比较特殊,需要加入环境变量,具体操作是“右键电脑——属性——高级系统设计——环境变量”,在用户变量里双击“path”,会发现里面有很多路径,直接新建一个路径然后加进去就行了(我是这样做的,后面测试也没有问题)


安装好之后就开始测试了,这里懒得放截图了,然后就是运行c程序,就是这一步,具体来说也就是在cmd里面输入指令,我的运行是没有错误的,关于如何在cmd中更换路径,这个可以看我这篇文章:如何在cmd中转入其他文件夹。


关于这个测试c程序,我昨天问了师兄,师兄说这个“python .\sim_new_nowave.py ..\tests\example\simple\simple.bin inst.data”就是一个python脚本,原因是机器肯定是不能直接理解c语言的,需要转换成机器所能理解的指令,因此先转成bin文件,但是bin文件又不能说是直接打开,所以又转换成了一个inst.data文件(所以在走完这个步骤之后,会发现sim文件夹里多出来了一个名字叫inst.data的文件,如下图所示)

关于这个inst.data,打开之后发现是一堆16进制的数字,这里面的每一行实际上就对应的是一条指令。

以上就是,配置环境和测试的内容,还有一些问题,师兄做了解答:
1.为什么装了很多东西,比如iverilog、GNU、make,结果在测试的时候看起来没用到?实际上虽然这里只是说执行了一条指令,但实际上他们内部是相互调用的,c程序之所以能够翻译成机器所理解的,原因还是因为上面的工具起作用,例如GNU里面的gcc(也不能说是程序,只能是一个类似“包工头的玩意”)实现了c的编译器,具体的可以参考这篇文章:编译工具链
2.这个c程序测试是做什么的?实际上,他这个测试就是说,比如1+1=2,那么在实际测试中,就是把运算结果,从寄存器取出来,然后人为的比对一下,如果一样,就说明测试成功
3.我能自己写一个c吗?好像不行。。原因记不太清了。。。
4.接下来我应该做什么:不要看那个tinyriscv的配套文档,那个只是针对这个cpu写的,直接去看计组的书或者网课
学习tinyriscv(1):安装tinyriscv的工具链的更多相关文章
- 64位的ubuntu14.04 LTS安装 Linux交叉编译工具链及32位“ia32-libs”依赖库
ubuntu又迎来了其新一代的长期支持版本 14.04 LTS,其带来了许多令人期待的新特新,遂决定进行升级. 装好了64位版本及安装 Linux交叉编译工具链 运行GCC,${CROSS_COMPI ...
- 虚拟机快速下载安装配置aarch64-linux-gnu-gcc工具链
方式一:软件仓库安装 此方法不用自己去配置交叉编译工具链 1.查看本地仓库有支持哪些版本哪些 输入命令: apt-cache search aarch64 2.下载安装 gcc-8-aarch64-l ...
- centos安装arm交叉工具链后常见的问题解决
[root@localhost osdrv]# arm-hisiv400-linux-gcc -vbash: /opt/hisi-linux/x86-arm/arm-hisiv400-linux/ta ...
- centos 7安装freescale交叉编译工具链
方法1:可以直接下载gcc包,把文件夹放到/usr/local下即可,然后修改PATH环境变量,既可以使用 方法2:可以下载.rpm包,在本地进行安装,下载地址为(http://www.panduod ...
- Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法
一.安装ARM-Linux-GCC工具链 只需要一句命令: sudo apt-get install gcc-arm-linux-gnueabi 前提是你的Ubuntu系统版本是官网支持的最新的版本, ...
- 【转】Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法
原文网址:http://www.cnblogs.com/muyun/p/3370996.html 一.安装ARM-Linux-GCC工具链 只需要一句命令: sudo apt-get install ...
- 使用GNU工具链进行嵌入式裸机开发
Embedded-Programming-with-the-GNU-Toolchain Vijay Kumar B. vijaykumar@bravegnu.org 翻译整理:thammer gith ...
- 使用buildroot创建自己的交叉编译工具链【转】
本文转载自:https://blog.csdn.net/linczone/article/details/45894181 使用buildroot创建自己的交叉编译工具链 关键字:buildroot ...
- xmake v2.5.2 发布, 支持自动拉取交叉工具链和依赖包集成
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能 ...
- GNU工具链学习笔记
GNU工具链学习笔记 1..so为动态链接库,.a为静态连接库.他们在Linux下按照ELF格式存储.ELF有四种文件类型.可重定位文件(Relocatable file,*.o,*.a),包含代码和 ...
随机推荐
- Zimbra禁止接收带有加密的文件邮件 提醒病毒(Heuristics.Encrypted.PDF)
最近碰到一个国际性大客户,一定要发送经过加密的文件,因为是合约相关的文件,对方公司有这方面要求.但是Zimbra默认是禁止接收加密的文件 - 'Block encrypted archives',这样 ...
- OpenLDAP服务器搭建
一.关闭防火墙和selinux [root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# systemctl d ...
- C#开源且免费的Windows桌面快速预览神器 - QuickLook
前言 今天给大家推荐一款由C#开源且免费的Windows桌面快速预览神器:QuickLook. 工具介绍 QuickLook是一款在Windows操作系统上的实用工具,它提供了一种快速预览文件内容的方 ...
- 5 分钟理解 Next.js SSG (Static Site Generation / Static Export)
5 分钟理解 Next.js SSG (Static Site Generation / Static Export) 在本篇文章中,我们将介绍 Next.js 中的 SSG(静态网站生成)功能,以及 ...
- C/C++基础——引用与指针有什么区别?C++中输入输出加速
文章目录 1 引用与指针有什么区别? 2 C++中输入输出加速 tie sync_with_stdio 应用 1 引用与指针有什么区别? 指针和引用都是地址的概念,指针指向一块内存,它的内容是所指内存 ...
- 第七单元《中国传统文化与管理》单元测试 mooc
第七单元<中国传统文化与管理>单元测试 返回 本次得分为:8.00/10.00, 本次测试的提交时间为:2020-08-30, 如果你认为本次测试成绩不理想,你可以选择 再做一次 . 1 ...
- Jmeter将响应数据的结果保存到本地的一个文件(xls和csv)
打印excel和csv文件的区别?? 第一种:打印excel 第二种:打印csv文件 创建beanshell后置处理器 import org.json.*;import java.io.*; Str ...
- Semantic Kernel .NET SDK 的 v1.0.0 Beta1 发布
介绍 Semantic Kernel (SK) 是一个开源的将大型语言模型(LLM)与流行的编程语言相结合的SDK,Microsoft将Semantic Kernel(简称SK)称为轻量级SDK,结合 ...
- P5445 [APIO2019] 路灯 题解
题目链接 题目描述 给你一个 01 串,有 \(q\) 个时刻,每个时刻要么把一位取反,要么问你在过去的所有时刻中有多少个时刻 \(a\) 和 \(b-1\) 之间都为 1. 题目分析 观察题目,我们 ...
- Java技术_基础技术(0003)_类执行顺序详解+实例(阿里面试题)+详细讲解+流程图
类加载机制 加载.验证.准备.初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地开始,而解析阶段则不一定:它在某些情况下可以在初始化阶段之后再开始,这是为了支持Java语言的 ...