riscv 相关工具链安装:https://pdos.csail.mit.edu/6.S081/2020/tools.html
Mac下,安装好
Homebrew
后brew tap riscv/riscv
brew install riscv-tools
增加环境变量:
PATH=$PATH:/usr/local/opt/riscv-gnu-toolchain/bin
然后安装
QEMU
:brew install qemu
测试是否安装成功:
$ riscv64-unknown-elf-gcc --version
riscv64-unknown-elf-gcc (GCC) 10.2.0
...
$ qemu-system-riscv64 --version
QEMU emulator version 6.0.0
下载
xv6
代码:git clone git://github.com/mit-pdos/xv6-riscv.git
git clone git://github.com/mit-pdos/xv6-riscv-book.git
安装
xv6
:cd xv6-riscv
make
make qemu
问题:
make qemu
后无响应![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2F9b3b041b-5d31-4cc5-91d9-4437b659a00e%2Fbb882397-7685-4a5e-bc0b-9e8e9f74c604%2FUntitled.png%3Fid%3Df89b0bc1-f0ef-4dcc-9ca1-b2abfc93a66f%26table%3Dblock%26spaceId%3D9b3b041b-5d31-4cc5-91d9-4437b659a00e%26expirationTimestamp%3D1721757600000%26signature%3DQHvlYHJv7jtzpfN9Nc47ZvIxJ9l6_iUvaB0f5mr07pA?table=block&id=f89b0bc1-f0ef-4dcc-9ca1-b2abfc93a66f&cache=v2)
原因:
QEMU
版本为6.0
,版本过高,有兼容问题,手动降级即可:brew uninstall qemu # 先卸载 qemu
wget https://download.qemu.org/qemu-5.1.0.tar.xz # 下载
tar -xf qemu-5.1.0.tar.xz # 等待解压完成
cd qemu-5.1.0/ # 进入目录
./configure # 默认安装所有目标平台,产物路径为/usr/local/bin
make && make install # 编译并安装
也可以手动进入 https://download.qemu.org/ 找到
5.1.0
版本,手动下载。安装成功后,我们再次
make qemu
,成功:![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2F9b3b041b-5d31-4cc5-91d9-4437b659a00e%2F34c2045e-ff89-46df-9836-de6a296ee8a3%2FUntitled.png%3Fid%3D33295957-6d1b-4c59-91e6-3faa8c137412%26table%3Dblock%26spaceId%3D9b3b041b-5d31-4cc5-91d9-4437b659a00e%26expirationTimestamp%3D1721757600000%26signature%3DeLIiMJouiicAY55GSJMS4LriMFbj359-7tTGqmR1bs4?table=block&id=33295957-6d1b-4c59-91e6-3faa8c137412&cache=v2)
实验环境搭建
Vscode 格式化 自动排序头文件问题
需要注意的是,一定不要对
#include
头文件自动排序,要设置SortIncludes: false
不然头文件顺序不对会报错。比如排序前:
#include "kernel/types.h"
#include "kernel/stat.h"
#include "user/user.h"
自动格式化后
#include "kernel/stat.h"
#include "kernel/types.h"
#include "user/user.h"
就会报错:
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2F9b3b041b-5d31-4cc5-91d9-4437b659a00e%2F9bf16d73-c95d-4376-b178-39be07769243%2FUntitled.png%3Fid%3Debe94eea-da15-4c77-b239-e344c31aa25c%26table%3Dblock%26spaceId%3D9b3b041b-5d31-4cc5-91d9-4437b659a00e%26expirationTimestamp%3D1721757600000%26signature%3DsoYDu8PpwGKhOVo-hB-x6S5q_jKL5ple0RzwdqxH5E4?table=block&id=ebe94eea-da15-4c77-b239-e344c31aa25c&cache=v2)
解决方法:
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2F9b3b041b-5d31-4cc5-91d9-4437b659a00e%2Fcc528e0d-2c2a-423a-98c0-a5e99cb1cd51%2FUntitled.png%3Fid%3Db7206997-aece-4b78-bba8-ce3240dd91eb%26table%3Dblock%26spaceId%3D9b3b041b-5d31-4cc5-91d9-4437b659a00e%26expirationTimestamp%3D1721757600000%26signature%3DNN7zBBskhW5E7YjxW_nRHbU4QLuk68PWkGO4r9yu4F0?table=block&id=b7206997-aece-4b78-bba8-ce3240dd91eb&cache=v2)
{BasedOnStyle: Google, IndentWidth: 2, ColumnLimit: 120, SortIncludes: false}
备注
教材参考
xv6 book
我学习本课程的目的并非是为了考试,做这些笔记也只是为了让自己更好的理解。因此这里会用令人比较容易理解的语言去描述(为了以后即使我忘了,但看到自己的笔记又能快速想起这些知识)。
注:用词上可能会为了容易理解而不够严谨,如果谬误,欢迎提出。
代码
这里我把教材中要用的代码放到 Github 上,大家可以自行下载:(链接待补充@TODO)
Loading Comments...