第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。 续表