• 【一生一芯】Chap.1 “一生一芯”实验环境配置| VMware安装Ubuntu20.04 | PA工程配置 | 解决llvm版本问题


    前言:搞环境搞了三个晚上,解决了llvm的问题,成功下载“一生一芯”框架代码即南大计算机PA,成功编译运行。

    PA0 - 世界诞生的前夜: 开发环境配置

    PA0的讲解实验讲义

    0. 什么是PA?

      PA:(Programming Assignment)。是一个小型项目,来自于南京大学计算机科学与技术系《计算机系统基础课程》,指导学生实现一个经过简化但功能完备的x86/mips32/riscv32(64)模拟器NEMU(NJU EMUlator), 最终在NEMU上运行游戏"仙剑奇侠传", 来让学生探究"程序在计算机上运行"的基本原理。
      PA包括一个准备实验(配置实验环境)以及5部分连贯的实验内容:

    • 图灵机与简易调试器
    • 冯诺依曼计算机系统
    • 批处理系统
    • 分时多任务
    • 程序性能优化
      做PA的终极目标是通过构建一个简单完整的计算机系统, 来深入理解程序如何在计算机上运行。只有去尝试理解并掌握计算机系统的每一处细节, 才能一步步完成PA。

    1. 安装VMware+Ubuntu 20.04

    1.1 ubuntu版本选择20.04

    官方教程中说推荐Ubuntu 21.04,实际上并不适合我,我最终选择了Ubuntu 20.04,并有如下几点原因:
    在这里插入图片描述

    1. 由于Ubuntu的21.04版本是去年的版本,由于它并非一个长期支持版本(LTS),自 2021 年 4 月 22 日正式发布,其支持周期仅有 9 个月时间,其支持周期也在今年正式结束。一般而言,选择LTSC版,这是长期服务版,会注重稳定性和修复错误。Ubuntu 20.04 正式版本已经发布,这是一款LTS版本,也就是长期支持版本,Ubuntu 长期支持版本官方一般支持为5年,而20.04版本会支持到2032年。
      在这里插入图片描述
    2. 更新版本的操作系统更“吃”电脑硬件性能,而我的笔记本比较旧了我怕会卡,所以不打算选择今年出来的22.04。
    3. 根据我玩树莓派的经验,一般高版本可以支持低版本的东西,而低版本不太支持高版本的东西。不过这个应该在学习初期没什么太大影响。
    4. 我的电脑上已经有了14.04(三年前跑TX2刷机用过)、16.04(TX2、jetson NANO刷机用过)、18.04(本科毕设部署了蜂鸟E203的相关工具)、还有一个CentOS7(芯王国大佬的IC_EDA环境)。打算把这个20.04可以作为我专门学习“一生一芯”的平台。
      在这里插入图片描述
    5. 助教曾推荐Ubuntu20.04

    在这里插入图片描述

    记录下安装成功这一美好的时刻-

    参考链接:

    1.2 安装VMtools——实现复制粘贴

    安装步骤:VMware安装VMware Tools(ubuntu 20.04)
      系统安装完成之后,可以看到Ubuntu 20.04系统界面没有全屏展示,虚拟机和物理机之间也不能相互拖拽、粘贴、复制内容,下面就需要安装VMware工具,来实现上述功能。

      目前VMware工具存在两种:传统的VMware Tools和开源的open-vm-tools。VMware Tools经常会出现兼容性不好,系统之间复制文件失灵,并且安装时提示建议使用open-vm-tools,于是放弃vmware-tools的安装,尝试使用open-vm-tools
      open-vm-tools 是 VMware Tools 的开源实施,由一套虚拟化实用程序组成,这些程序可增强虚拟机在 VMware 环境中的功能,使管理更加有效。open-vm-tools 的主要目的是使操作系统供应商及/或社区以及虚拟设备供应商将 VMware Tools 绑定到其产品发布中。从Ubuntu14.04开始open-vm-tools 代替了官方 VMware Tools。

      需要注意的是

    1. 复制VMwareTools-10.3.22-15902021.tar.gz出来需要sudo权限
    2. 解压是-zxvf不是-zcvf
    tar -zxvf  VMwareTools-10.3.22-15902021.tar.gz 
    
    • 1

    在这里插入图片描述

    然后就可以复制粘贴啦

    1.2 启动共享文件夹

    u20.04如何与windows10设置共享文件夹
    Windows与Ubuntu主机与虚拟设备直接复制粘贴得先开启VMwareTools。

    这里有个坑爹的问题,就是我想复制粘贴,得安装VMware工具,但是因为没有换源所以无法下载,换源需要打很多字,所以需要复制粘贴。我的解决办法是,写好这些东西,直接通过共享文件夹在虚拟机里面打开
    
    • 1

    1.3 换源

      Ubuntu默认使用的是Ubuntu官方的软件源,远在国外,速度很慢,可以换成国内源。
    参考链接:ubuntu20.04 国内软件源更新

    2. 安装PA项目中所需的软件

    2.1 安装Vim

    Ubuntu 20.04 配置vim编辑器

    sudo apt install vim
    
    • 1

    然后再配置一下

    2.2 安装Git

    教程:Ubuntu20.04安装Git

    2.3 安装4.210版本Verilator

    # Prerequisites:
    sudo apt-get install git perl python3 make autoconf g++ flex bison ccache
    sudo apt-get install libgoogle-perftools-dev numactl perl-doc
    sudo apt-get install libfl2  # Ubuntu only (ignore if gives error)
    sudo apt-get install libfl-dev  # Ubuntu only (ignore if gives error)
    sudo apt-get install zlibc zlib1g zlib1g-dev  # Ubuntu only (ignore if gives error)
     
    git clone https://github.com/verilator/verilator   # Only first time
     
    # Every time you need to build:
    unsetenv VERILATOR_ROOT  # For csh; ignore error if on bash
    unset VERILATOR_ROOT  # For bash
    cd verilator
    git pull         # Make sure git repository is up-to-date
    git tag          # See what versions exist
    #git checkout master      # Use development branch (e.g. recent bug fixes)
    #git checkout stable      # Use most recent stable release
    git checkout v4.210  # Switch to specified release version
     
    autoconf         # Create ./configure script
    ./configure      # Configure and create Makefile
    make -j `nproc`  # Build Verilator itself (if error, try just 'make')
    sudo make install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    参考链接:Unbuntu21.04安装Verilator --4.210EDA开源仿真工具verilator入门1:安装和测试
    在这里插入图片描述
    成功!

    2.4 安装实验 PAs所需工具

    cd ~
    sudo su
    apt-get install build-essential    # build-essential packages, include binary utilities, gcc, make, and so on
    apt-get install man                # on-line reference manual
    apt-get install gcc-doc            # on-line reference manual for gcc
    apt-get install gdb                # GNU debugger
    apt-get install git                # revision control system
    apt-get install libreadline-dev    # a library used later
    apt-get install libsdl2-dev        # a library used later
    ####### apt-get install llvm
    apt-get install llvm-11               # llvm project, which contains libraries used later
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    这里有个坑,官方讲解文档里,如果直接apt-get install llvm 会下载成10.0.0而本实验需要llvm-11。官方给的方法是,还是建议直接下成llvm-11。请见下节讲解。
    在这里插入图片描述

    3. 下载"一生一芯"框架代码

    在这里插入图片描述

    3.1 首先需要注册一个github账号

    3.2 在github上添加SSH key

    参考链接:在github上添加SSH key Github配置ssh key的步骤(大白话+包含原理解释)
    在这里插入图片描述

    3.3 获取一生一芯工程项目

    可以先浏览一下子源工程:
      配置好SSHkey后,就可以git clone了。
      为了方便,我选择在根目录新建一个ysyx的文件夹用于存放一生一芯相关的东西。
    在这里插入图片描述
    操作:

    mkdir ysyx
    cd ysyx
    git clone -b ysyx2204 git@github.com:OSCPU/ysyx-workbench.git
    
    • 1
    • 2
    • 3

    3.4 发出以下命令来执行git配置:

    cd ysyx-workbench
    git config --global user.name "22050047-Ren Jianjie" # your student ID and name
    git config --global user.email "jiemsd@outlook.com"   # your email
    git config --global core.editor vim                 # your favorite editor
    git config --global color.ui true
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.5 修改README添加学号信息

    • 将PA讲义中的ics2022看成是ysyx-workbench
    • 修改ysyx-workbench/Makefile中的学号和姓名时, 请使用"一生一芯"的学号和真实姓名

    3.6 激活实验环境

    git branch -m master
    bash init.sh nemu
    bash init.sh abstract-machine
    source ~/.bashrc
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.7 编译 NEMU

    cd ~/ysyx/ysyx-workbench/nemu
    make menuconfig
    
    • 1
    • 2

    在这里插入图片描述

    点击“右”键,选择EXIT然后YES

    然后编译

    make
    
    • 1

    这里会出现 #error Please use LLVM with major version >= 11
    在这里插入图片描述

    3.8 解决llvm版本的报错

    解决问题参考链接:

    1. 官方文档,在使用git那里
    2. Linux相关总结-BUG及解决方案:3-llvm报错,no such file or dictionary
    3. sashimi-yzh的解答

    在这里插入图片描述
      这个文档相当有迷惑性,我一度以为是要把这些全部都复制粘贴到/nemu/src/utils/filelist.mk里面。ps,请原谅我linux并不熟练的操作。

    nano ~/ysyx/ysyx-workbench/nemu/src/utils/filelist.mk
    # 这里是编写filelist.mk
    # 首先得安装高版本的:sudo apt-get install llvm-11-dev
    
    • 1
    • 2
    • 3

    直接把文档里的llvm-config全部换成llvm-config-11

    编写前
    在这里插入图片描述
    编写后

    在这里插入图片描述

    然后直接make,编译成功啦!!没有llvm报错

    在这里插入图片描述

    3.9 运行NEMU、gdb调试NEMU

    cd ~/ysyx/ysyx-workbench/nemu
    make run
    
    • 1
    • 2

    在这里插入图片描述

    #这里是gdb调试
    make gdb
    #如果想退出,就输入q再回车
    
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    3.10 编译成功后,发展追踪

    编译成功后,源代码的变化将通过git. 类型

    git log
    
    • 1

    在这里插入图片描述

    后记

    至此,利用了VMware安装了Ubuntu20.04成功;完成了 “一生一芯”实验环境配置;获得了PA的源代码;解决llvm版本问题!

  • 相关阅读:
    毕业设计 单片机LSRB算法的走迷宫小车 - 嵌入式 stm32
    GPT-4o版本间的对比分析和使用心得
    求HTML+CSS礼花特效
    2023秋招—大数据开发面经—闻泰科技
    springcloudalibaba和nacos版本对应关系
    平衡二叉树
    HttpServletRequest详解
    FCN中制作自己的数据集并进行训练
    【一包通刷】晶晨S905L3A/B_完美AI语音线刷包_打开ADB_ROOT权限
    企业服务器租用对性能有什么要求呢?
  • 原文地址:https://blog.csdn.net/qq_43858116/article/details/126638618