@ -29,7 +29,11 @@
读者可以采用VMware、VirtualBox等软件, 在客户机中安装客户机, 再在客户机中安装执行支撑软件来构建实验环境。客户机的选择我们推荐采用Ubuntu 16.04LTS( x86_64) 或更高版本的Ubuntu发行版( 如18.04LTS、20.04LTS或更高)操作系统,或者**华为openEuler操作系统**。我们未在其他系统( 如arch, RHEL等) 上做过测试, 但理论上只要将实验中所涉及到的安装包替换成其他系统中的等效软件包, 就可完成同样效果。
**方案三:头歌实验平台**
**方案三: Docker环境**
读者可以采用Docker作为开发环境。我们提供的 Docker 镜像中已经预装了完整的实验环境,实验源代码以及必要的辅助软件,读者无需手动安装任何支撑软件,便可轻松运行实验。我们建议读者使用 **x86_64** ( 例如, 采用Intel或者ARM处理器的笔记本、台式机电脑) 或 **arm64** 处理器架构(例如,苹果公司新款**采用M系列处理器**的笔记本, 如MacBook等) 的客户机来运行 Docker 容器。具体的安装过程可以看[下一节](#subsec_docker)。
**方案四:头歌实验平台**
我们在EduCoder实验平台( 网址: https://www.educoder.net ) 上创建了riscv-pke的同步实验课程, 课程的终端环境( docker虚拟机) 中已完成实验所需软件工具的安装, 所以如果读者是在头歌平台上选择的本课程, 则可跳过本节的实验环境搭建过程以及执行支撑软件的安装过程, 直接进入通过终端( 命令行) 进入实验环境, 头歌实验平台的使用方法见[2.1.3节](#subsec_educoder)。
@ -146,6 +150,119 @@ RISC-V交叉编译器的构建需要一些本地支撑软件包, 可使用以
在以上命令中, 我们假设RISCV环境变量已经指向了RISC-V交叉编译器的安装目录, 即[your.RISCV.install.path]。
< a name = "subsec_docker" > < / a >
**方案三: 安装Docker桌面环境**
* 第一步, 安装Docker
* * *Ubuntu**
对于 **x86_64** 架构,安装具体的过程可以参考[这篇](https://blog.csdn.net/magic_ll/article/details/139985543?spm=1001.2014.3001.5506)文章。对于 **arm64** 架构,安装具体的过程可以参考[这篇](https://blog.csdn.net/sglin123/article/details/139754107?ops_request_misc=& request_id=& biz_id=102& utm_term=arm64%E5%AE%89%E8%A3%85docker& utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-139754107.142^v100^pc_search_result_base8& spm=1018.2226.3001.4187)文章。
* * *Windows**
Windows 版本的 Docker 安装可以参考[这篇](https://blog.csdn.net/Liuj666/article/details/126099982?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522EC5F862A-6D9C-439D-96AB-6CB77A783F13%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D& request_id=EC5F862A-6D9C-439D-96AB-6CB77A783F13& biz_id=0& utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-126099982-null-null.142^v100^pc_search_result_base8& utm_term=windows%E5%AE%89%E8%A3%85docker& spm=1018.2226.3001.4187)文章。
* * *macOS**
macOS 版本的 Docker 安装可以参考[这篇](https://blog.csdn.net/weixin_41860471/article/details/135048312?ops_request_misc=%257B%2522request%255Fid%2522%253A%25220015913A-5C64-4FD0-A192-3686BF8FE2C4%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D& request_id=0015913A-5C64-4FD0-A192-3686BF8FE2C4& biz_id=0& utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-4-135048312-null-null.142^v100^pc_search_result_base8& utm_term=macos%E5%AE%89%E8%A3%85docker& spm=1018.2226.3001.4187)文章。
* 第二步,拉取镜像
* * *x86_64/amd64 版本镜像**
*Dockerhub 镜像源*
`$ docker pull docker.io/tjr9098/amd64_pke_mirrors:1.0`
*阿里云镜像源*
`$ docker pull crpi-vycj2ba2y82yi8d0.cn-hangzhou.personal.cr.aliyuncs.com/pke_mirrors/amd64_pke_mirrors:1.0`
* * *arm64 版本镜像**
*Dockerhub 镜像源*
`$ docker pull docker.io/tjr9098/arm64_pke_mirrors:1.0`
*阿里云镜像源*
`$ docker pull crpi-vycj2ba2y82yi8d0.cn-hangzhou.personal.cr.aliyuncs.com/pke_mirrors/arm64_pke_mirrors:1.0`
* 第三步,运行镜像
`$ docker run -it --name pke_mirror IMAGE:1.0`
● ** `IMAGE` ** 是镜像名称,名称可通过`$ docker images`查看。
● ** `-it` **: 交互式运行容器,分配一个伪终端。
● ** `--name` **: 为容器命名,便于后续使用。
若出现下图所示则成功进入容器。
< img src = "pictures/image1-docker.png" alt = "image1-docker" style = "zoom:80%;" / >
* 第四步,验证环境
接下来切换到pke实验代码目录, 并构造
`# cd riscv-pke`
`# make`
若得到以下输出则可正常进行实验
```bash
# make
compiling util/snprintf.c
compiling util/string.c
linking obj/util.a ...
Util lib has been build into "obj/util.a"
compiling spike_interface/spike_file.c
compiling spike_interface/spike_htif.c
compiling spike_interface/spike_utils.c
compiling spike_interface/dts_parse.c
compiling spike_interface/spike_memory.c
linking obj/spike_interface.a ...
Spike lib has been build into "obj/spike_interface.a"
compiling kernel/syscall.c
compiling kernel/kernel.c
compiling kernel/elf.c
compiling kernel/process.c
compiling kernel/strap.c
compiling kernel/machine/minit.c
compiling kernel/strap_vector.S
compiling kernel/machine/mentry.S
linking obj/riscv-pke ...
PKE core has been built into "obj/riscv-pke"
compiling user/app_helloworld.c
compiling user/user_lib.c
linking obj/app_helloworld ...
User app has been built into "obj/app_helloworld"
```
* 再次进入容器
* 第一步,启动容器
`$ docker container start pke_mirror`
* 第二步,进入容器
`$ docker exec -it pke_mirror /bin/bash`
若出现下图所示则成功进入容器。
< img src = "pictures/image2-docker.png" alt = "image2-docker" style = "zoom:80%;" / >
** 注意:以上代码默认容器名称为`pke_mirror`,请读者根据自己的容器名称做修改**。
< a name = "subsec_educoder" > < / a >