前言:搞环境搞了三个晚上,解决了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,并有如下几点原因:
- 由于Ubuntu的21.04版本是去年的版本,由于它并非一个长期支持版本(LTS),自 2021 年 4 月 22 日正式发布,其支持周期仅有 9 个月时间,其支持周期也在今年正式结束。一般而言,选择LTSC版,这是长期服务版,会注重稳定性和修复错误。Ubuntu 20.04 正式版本已经发布,这是一款LTS版本,也就是长期支持版本,Ubuntu 长期支持版本官方一般支持为5年,而20.04版本会支持到2032年。
- 更新版本的操作系统更“吃”电脑硬件性能,而我的笔记本比较旧了我怕会卡,所以不打算选择今年出来的22.04。
- 根据我玩树莓派的经验,一般高版本可以支持低版本的东西,而低版本不太支持高版本的东西。不过这个应该在学习初期没什么太大影响。
- 我的电脑上已经有了14.04(三年前跑TX2刷机用过)、16.04(TX2、jetson NANO刷机用过)、18.04(本科毕设部署了蜂鸟E203的相关工具)、还有一个CentOS7(芯王国大佬的IC_EDA环境)。打算把这个20.04可以作为我专门学习“一生一芯”的平台。
- 助教曾推荐Ubuntu20.04
记录下安装成功这一美好的时刻-
参考链接:
- 虚拟机VMware安装Ubuntu20.04
- Vmware 安装 ubuntu 系统详细步骤
- VMware虚拟机安装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。
需要注意的是
- 复制VMwareTools-10.3.22-15902021.tar.gz出来需要sudo权限
- 解压是-zxvf不是-zcvf
tar -zxvf VMwareTools-10.3.22-15902021.tar.gz
然后就可以复制粘贴啦
1.2 启动共享文件夹
u20.04如何与windows10设置共享文件夹
Windows与Ubuntu主机与虚拟设备直接复制粘贴得先开启VMwareTools。
这里有个坑爹的问题,就是我想复制粘贴,得安装VMware工具,但是因为没有换源所以无法下载,换源需要打很多字,所以需要复制粘贴。我的解决办法是,写好这些东西,直接通过共享文件夹在虚拟机里面打开
1.3 换源
Ubuntu默认使用的是Ubuntu官方的软件源,远在国外,速度很慢,可以换成国内源。
参考链接:ubuntu20.04 国内软件源更新
2. 安装PA项目中所需的软件
2.1 安装Vim
Ubuntu 20.04 配置vim编辑器
sudo apt install vim
然后再配置一下
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
参考链接:Unbuntu21.04安装Verilator --4.210 、 EDA开源仿真工具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
这里有个坑,官方讲解文档里,如果直接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
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
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
3.7 编译 NEMU
cd ~/ysyx/ysyx-workbench/nemu
make menuconfig
点击“右”键,选择EXIT然后YES
然后编译
make
这里会出现 #error Please use LLVM with major version >= 11
3.8 解决llvm版本的报错
解决问题参考链接:
- 官方文档,在使用git那里
- Linux相关总结-BUG及解决方案:3-llvm报错,no such file or dictionary
- 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
直接把文档里的llvm-config全部换成llvm-config-11
编写前
编写后
然后直接make,编译成功啦!!没有llvm报错
3.9 运行NEMU、gdb调试NEMU
cd ~/ysyx/ysyx-workbench/nemu
make run
#这里是gdb调试
make gdb
#如果想退出,就输入q再回车
3.10 编译成功后,发展追踪
编译成功后,源代码的变化将通过git. 类型
git log
文章来源:https://www.toymoban.com/news/detail-423454.html
后记
至此,利用了VMware安装了Ubuntu20.04成功;完成了 “一生一芯”实验环境配置;获得了PA的源代码;解决llvm版本问题!文章来源地址https://www.toymoban.com/news/detail-423454.html
到了这里,关于【一生一芯】Chap.1 “一生一芯”实验环境配置| VMware安装Ubuntu20.04 | PA工程配置 | 解决llvm版本问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!