因为毕设是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的工具链的更多相关文章

  1. 64位的ubuntu14.04 LTS安装 Linux交叉编译工具链及32位“ia32-libs”依赖库

    ubuntu又迎来了其新一代的长期支持版本 14.04 LTS,其带来了许多令人期待的新特新,遂决定进行升级. 装好了64位版本及安装 Linux交叉编译工具链 运行GCC,${CROSS_COMPI ...

  2. 虚拟机快速下载安装配置aarch64-linux-gnu-gcc工具链

    方式一:软件仓库安装 此方法不用自己去配置交叉编译工具链 1.查看本地仓库有支持哪些版本哪些 输入命令: apt-cache search aarch64 2.下载安装 gcc-8-aarch64-l ...

  3. centos安装arm交叉工具链后常见的问题解决

    [root@localhost osdrv]# arm-hisiv400-linux-gcc -vbash: /opt/hisi-linux/x86-arm/arm-hisiv400-linux/ta ...

  4. centos 7安装freescale交叉编译工具链

    方法1:可以直接下载gcc包,把文件夹放到/usr/local下即可,然后修改PATH环境变量,既可以使用 方法2:可以下载.rpm包,在本地进行安装,下载地址为(http://www.panduod ...

  5. Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法

    一.安装ARM-Linux-GCC工具链 只需要一句命令: sudo apt-get install gcc-arm-linux-gnueabi 前提是你的Ubuntu系统版本是官网支持的最新的版本, ...

  6. 【转】Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法

    原文网址:http://www.cnblogs.com/muyun/p/3370996.html 一.安装ARM-Linux-GCC工具链 只需要一句命令: sudo apt-get install ...

  7. 使用GNU工具链进行嵌入式裸机开发

    Embedded-Programming-with-the-GNU-Toolchain Vijay Kumar B. vijaykumar@bravegnu.org 翻译整理:thammer gith ...

  8. 使用buildroot创建自己的交叉编译工具链【转】

    本文转载自:https://blog.csdn.net/linczone/article/details/45894181 使用buildroot创建自己的交叉编译工具链 关键字:buildroot ...

  9. xmake v2.5.2 发布, 支持自动拉取交叉工具链和依赖包集成

    xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能 ...

  10. GNU工具链学习笔记

    GNU工具链学习笔记 1..so为动态链接库,.a为静态连接库.他们在Linux下按照ELF格式存储.ELF有四种文件类型.可重定位文件(Relocatable file,*.o,*.a),包含代码和 ...

随机推荐

  1. TDD、BDD、ATDD都是什么、有什么区别?(上)

    软件开发是一个迭代过程,包括编写.测试和改进代码,直到满足需求.测试驱动开发(TDD).行为驱动开发(BDD)和验收测试驱动开发(ATDD)是支持该过程的三种方法.TDD.BDD和ATDD都是软件开发 ...

  2. 「atcoder - 214G」Three Permutations

    la traduction. link. 如果我们对于每一个 \(k\in[0,n]\) 找到所有满足存在 \(k\) 个 \(i\) 使得 \(r_i=p_i\) 或 \(r_i=q_i\) 条件的 ...

  3. Journey / Solution Set - 「NOIP-S 2020」「Prob. A-C」

    这种东西怎么写啊... Day 1(好像也没有 Day 2 到了 NK 后发现正好可以进门,于是就什么也没有检查的进去了. 进门前问了一下 LYC 之前问过的一个问题,他说没有头绪,然后就没怎么说话了 ...

  4. 用Rust手把手编写一个Proxy(代理), UDP绑定篇

    用Rust手把手编写一个Proxy(代理), UDP绑定篇 项目 ++wmproxy++ gite: https://gitee.com/tickbh/wmproxy github: https:// ...

  5. ArcGIS地图投影与坐标系转换的方法

      本文介绍在ArcMap软件中,对矢量图层或栅格图层进行投影(即将地理坐标系转为投影坐标系)的原理与操作方法.   首先,地理坐标系与投影坐标系最简单的区别就是,地理坐标系用经度.纬度作为空间衡量指 ...

  6. es针对nested类型数据无法进行过滤查询的问题记录

    问题描述 es中存在有一个名为task_data_1的索引,其字段映射关系如下所示: { "task_data_1" : { "mappings" : { &q ...

  7. 2020/5/8—cf,我裂开来

    呜呜呜我爆零了呜呜呜ljll 嗯T1T2防爆零的没了呜呜呜在此纪念可怜的yjz大佬21发AC 太惨了(逃 先来说说我们都有些啥题目吧... T1 嗯,裂开了,当场裂开我一看!桶排!然后实现,嗯?嗯!嗯 ...

  8. Full Tank 题解

    Full Tank 题目大意 给定一张 \(n\) 个点,\(m\) 条边的连通无向图,在每个点有一个加油站,油价为该点的点权,每条边的油耗为该边的边权.现给出若干询问,问一辆油箱容量为 \(c\) ...

  9. Rustlings通关记录与题解

    2023年6月19日决定对rust做一个重新的梳理,整理今年4月份做完的rustlings,根据自己的理解来写一份题解,记录在此. 周折很久,因为中途经历了推免的各种麻烦事,以及选择数据库作为未来研究 ...

  10. mybatis-plus使用心得

    mybatis-plus是一款基于mybatis的持久层框架,在mybatis上只做增强不做改变.基本使用流程: 导入依赖坐标: <dependency> <groupId>c ...