第5章 实验5:Hos-mips操作系统的构建与运行

前面4个实验在Nexys4DDRFPGA开发板上搭建了一个基于MIPSfpga处理器的完
整的嵌入式计算机硬件平台,该硬件平台包含一个标准MIPS处理器以及必要的接口设备。
从本章开始,进入本书的第二部分,将在前面搭建的MIPSfpga硬件平台上运行一个小型的
操作系统———Hos-mips。

1 实验目的

5.
在本实验中,将学习在自己的个人计算机上安装并构建(build)Hos-mips操作系统的环
境,以及将生成的镜像下载到MIPSfpga硬件平台并使其运行起来的方法。假设实验使用
的个人计算机上安装了Windows操作系统(Windows7或Windows10 )。对于安装了
MacOS的用户,可以将以下介绍的安装过程中的软件替换为对应的MacOS上的软件即可。

2 实验内容

5.
Hos-mips操作系统的构建涉及较多的软件工具,其中包括Cygwin、Vivado、交叉编译
器(MIPSMTI )、PuTTY 、OpenOCD等。Vivado、交叉编译器(MIPSMTI)以及OpenOCD 
i2.

的安装已经在前面做过介绍。在本实验中,只介绍Cywn的安装(见5.1节),并在安装完

成后构建并运行Hosmps操作系统( 2.2.

-i见5.2节和5.3节)。

5.1 安装开发环境
2.
1.Cygwin的安装
Cygwin是一个在Windows环境下运行的类Linux环境,它能够在Windows下提供
Linux环境以及很多Linux工具。在本实验中,将用到make、gc
、perl这些基本工具。
make用于解析Hos-mips的makefile文件,gc 
用于编译Hos-mips的源代码,perl用于解
释执行make工具解析过程中Hos-mips自带的一些脚本程序。可以到Cygwin的官方网站
下载安装程序并进行安装,网址为htps://www.ygwn.om 。

cic
需要指出的是,应根据自己的运行环境选择安装文件。例如,在图5-1中,如果Cygwin 
的运行环境是32位的,就应下载stpxee; 就需要下载

eu-86.x如果其运行环境是64位的, 
seupx_ee。查看自己的个人计算机的运行环境是32位还是64位的任务比较简单,

t-8664.x
而且能够在互联网上找到大量的介绍,所以就不再赘述了。
Cygwii6.

另外,n的不同版本也可能会有细微的差别(这里以Cygwn的2.0版本为例)。
但这些细微差别应该不会对后面的实验构成太大影响,因为只用到了它的几个基本软件包。

为了叙述方便,假设已经将setp-86_ee文件放在D:\Ho\olcans目录中,并

ux64.xsto-hi

104 


105
图5-1 下载Cygwin的安装文件
n安装在D:\Hos\tool-chains\cygwin64目录中。这里用到的环境是64位的
s10的专业版,其他开发环境(如Windows7或者其他32位版本)的安装过程类似。
现在开始安装过程,具体步骤如下: 
etup-x86_64.exe文件,启动Cygwin的安装程序进行安装,弹出图5-2所示的
n安装向导,单击“下一步”按钮。
图5-2 Cygwin安装向导
nstallfromInternet单选按钮,即从网络安装,如图5-3所示,单击“下一步” 
3)接下来选择安装目录以及安装包的缓存目录(注意,目录名中不要出现空格),如
下一步”按钮,再选择安装源。需要注意的是,可以根据自己的网络连接状况
选择是否使用代理,并找到最合适的安装源。这里选择的是位于教育网的镜像(http://
ft.edu.cn),如图5-5所示。
希望将CygwiWindow

(1)双击sCygwi
(2)选择I
按钮。
(
图5-4所示。

(4)单击“ 
mir.es

rosnuo


图5-3 选择从网络安装Cygwin 


图5-4 选择Cygwin的安装目录

106 


1 07 
图5-5 选择Cygwin的安装源 
(5)单击“下一步”按钮,Cygwin的安装程序会从网络下载基本的安装文件,并弹出如
图5-6所示的界面。实际上,这个界面给出的是即将安装到D:\Hos\tool-chains\cygwin64 
目录(注意,目录名中不要出现空格)的Cygwin的软件包,且只包含最基本的部分。该默认
配置并不包括即将要用到的软件工具,所以,需要在这里安装额外的软件包。
(6)首先安装make软件包,方法是在图5-6所示界面的Search文本框中输入make,并
在界面中间的安装列表刷新后,单击Devel前的,并在展开的列表中单击make:TheGNU 
versionofthe'make'utility前的,直到该处显示即将安装的make软件工具的版本为
止,如图5-7所示。此时,千万不要单击“下一步”按钮,因为还有其他软件包需要安装。

6 Cygwin的默认配置

c,并选择其Devel中的gc-core:GNUCompiler 
ompilerColection(C++)两个选项,如图5-8 

earch文本框中输入perl,展开Interpreters,并选择
eter,如图5-9所示。
下一步”按钮,并开始真正的Cygwin下载和安装了。

in中选择安装make 

108 

图5-
图5-7 在Cygw(7)在Search文本框中输入gCollection(C,OpenMP)和gcc-g++:GNUC
所示。
(8)接下来选择安装perl。同样在Sperl:Perlprogramminglanguageinterpr(9)完成以上步骤后,就可以单击“ 

109
图5-7 (续) 
图5-8 在Cygwin中选择安装gcc
在安装的最后一个界面选择CreateicononDesktop复选框,如图5-10所示。
(10)接下来,测试Cygwin。双击桌面上的Cygwin64Terminal图标,弹出图5-11所示
的终端界面。
(11)在图5-11所示的终端界面中,可以测试以前安装的软件包是否能够正常使用。分
别输入make和gcc命令并按回车键,因为没有输入文件,这两个命令肯定会报错。但是,只
要不出现“未找到命令”的错误,就不会影响以后的实验。

图5-9 在Cygwin中选择安装perl 


图5-10 选择在桌面创建图标


图5-11Cygwin终端界面

(12)最后,将Cygwin安装目录下的bin子目录(这里是D:\Hos\tool-chains\cygwin 
64\bin目录)加入系统路径,方法是:在“开始”菜单中选择“控制面板”→“系统和安全”→ 
110 


111
高级系统设置”命令,当显示“系统属性”对话框后,单击“环境变量”按钮,在弹出
对话框中,单击“新建”按钮,如图5-12所示。在接下来弹出的“新建用户变
设置“变量名”为Path,“变量值”为D:\Hos\tool-chains\cygwin64\bin,如
如果已经定义了Path环境变量,则可单击“编辑”按钮,然后添加D:\Hos\tool-
n64\bin变量值。在设置完成后单击“确定”按钮,就将Cygwin加入了的开发
图5-12 添加环境变量
图5-13 新建环境变量Path 
os-mips源代码
接下来访问https://github.com/mrshawcode/hos-mips,下载Hos-mips源代码。可以
t工具对源代码进行复制(使用clone命令)。实际上,这也是较好的方法,因为这样
可以跟踪自己对代码所做的所有改动。但是,如果不熟悉git工具,则可以单击Download 
ZIP按钮直接下载压缩包,并在本地进行解压操作,如图5-14所示。
假设已经下载了Hos-mips源代码,并将其解压到D:\Hos\hos-mips-master\目
目录名中不要出现空格)。hos-mips-master目录的内容如图5-15所示。该目录
下的子目录及文件的说明见表5-1。
“系统”→“ 
的“环境变量” 
量”对话框中, 
图5-13所示。

chains\cygwi
环境。

2.下载H
使用gi

现在, 
录下(注意, 


图5-14 下载Hos-mips源代码

图5-15 解压后的hos-mips-master目录的内容
表5-1hos-mips-master的子目录及文件的说明
文件/文件夹名称说明
.vscode目录存放VSCode的配置文件
存放用于Hos-mips运行的工具程序和配置文件,例如JTAG 的启动配置文件、
于显示Ho-ips运行结果的PuTTY 串口终端以及mips-mti-elf-gdb 调试程序(用) 的配置文件((m) (s) atp-c.t)等

struuoretxHos-mips操作系统内核的源代码
用于生成sfsimage镜像的工具

用户态代码

debug目录

kern-ucore目录
tool目录
user目录

112 


1 13 
文件/文件夹名称说 明
.gitignore 用于git的配置文件(与后面的实验无关) 
Makefile 主make文件
Makefile.config 主make文件的配置文件,通过该文件可配置交叉编译器等
README.md 对于Hos-mips编译与使用的简单说明文件
run.bat 运行Hos-mips的批处理文件。在make命令执行后,如果成功生成了内核,则可
以执行此批处理文件,在Nexys4DDRFPGA开发板上运行Hos-mips 
至此,Hos-mips的环境配置就完成了。接下来,将构建Hos-mips内核,并在前面4个
实验所构造的MIPSfpga硬件平台上运行该操作系统。
5.2.2 构建Hos-mips镜像
本节使用Cygwin构建Hos-mips系统镜像。
启动Cygwin,并进入Hos-mips源代码目录,如图5-16 所示。这里需要注意的是, 
Cygwin中使用的路径是cygpath,而Hos-mips源代码目录(即D:\Hos\hos-mips-master\) 
对应的路径是/cygdrive/d/Hos/hos-mips-master,所以要转到该目录下,命令如下: 
$cd /cygdrive/d/Hos/hos-mips-master 
图5-16 启动Cygwin并进入Hos-mips源代码目录
接下来,输入make命令开始构建系统镜像的过程。此时,应确定Cygwin以及交叉编
译器所在的目录已经在系统路径中了。在构建过程中,如果出现找不到某命令的错误,一般
是由于该命令对应的工具不在系统路径中。这时应检查是否已经正确设置了系统路径(例
如,路径中是否出现了空格等)。构建时间需要一两分钟,取决于计算机的性能。构建成功
后,会出现图5-17所示的界面。
为了进一步确保构建过程的正确性,可检查是否正确地生成了Hos-mips系统的镜像, 
输入如下命令: 
$ls ./obj/kernel/ucore-kernel-initrd -alh 
执行该命令后,如果获得图5-18所示的结果,说明Hos-mips系统镜像已经构建成功,且
Hos-mips系统镜像文件(ucore-kernel-initrd)的大小为3.1MB。
续表