欢迎光临散文网 会员登陆 & 注册

Zeal8bit操作系统Build & Run(基于Windows)

2023-09-10 18:16 作者:timfang1990  | 我要投稿

基于Windowns build Zeal8bit操作系统 OS,并在Web Emulator上成功运行,拼齐了三大操作系统的上Build & Run的最后一块版图, 给想动手尝试一下,并且主力工作操作系统为Windows的同学们分享下~

0. 前言

距离上一次发文章已经过去两个多月了,这两个月除了忙于工作和家庭之外,一有时间就投身于ZOS移植到自制RV32平台的事情上。这个事情工作量相对我来说还是有点大并且时间周期有点长。虽然时间周期拖的有点长,但是进展很大,应用程序已经能够通过syscall正确访问到内核了。ZOS的操作流程也基本摸清楚了,并且通过这次移植过程,自己的操作系统的知识积累也上了一个台阶。等第一版跑通流程的demo出来后再更新详细的移植技术细节文章出来。如果有可能,发布一个视频出来也在考虑范围内。 不过在这之前,不更新点状态好像说不过去。那就接着更新下ZOS 8bit在Windows操作系统的build和在Web Emulator中运行的步骤吧,这样在3大操作系统的操作步骤总算是齐活了。 在Windows操作系统中的操作,总体上遇到的问题不多,但是每个都是有难度的。在Mac OS和Ubuntu上基本build过了,Run起来就没有问题,但是在Windows下,即使build成功了,Run起来就遇到问题了:加载过程完成不了,并且运行画面闪烁等。 下面就分享下如何在Windows建立一个build环境以及debug的细节信息。 1. 环境及所需工具

Windows 10及以上(本机版本:Windows 10 专业版19044.3086)

Python 3及PIP3 Windows版

z88dk-win32-2.2.zip

mingw(Windows make命令及gcc支持工具)

git工具安装

2. 工具安装

Python3的安装

具体安装过程网上一搜一大堆,我这边还是不写了。需要注意的是,在安装完成后如果没有自动添加环境变量,那么需要按照如下的步骤手动添加环境变量 右键“此电脑”->“属性”->“高级系统设置”->“环境变量”->“系统变量”, 双击“Path”,添加Python3安装目录的完整路径。

然后打开Windows PowerShell,用which命令看到python和pip3的完整路径就代表着python软件安装成功并可以用命令行操作了。

Windows make命令及gcc支持工具mingw平台安装

这部分我有CSDN文章详细介绍:https://blog.csdn.net/weixin_46687727/article/details/129431352

z88dk系列Windows工具下载安装

z88dk的下载地址还是这里:https://kgithub.com/z88dk/z88dk/releases,选择z88dk-win32-2.2.zip,如果嫌下载速度慢可以私我,我给你个百度网盘地址。 安装方法采用的依然是绿色安装+自定义设置系统path,方便命令行调用:先把下载好的压缩包解压到一个特定目录,比如我这边解压到目录:C:\Users\Administrator\Documents\GitProject\ZealOS\z88dk 然后同上述Python3工具和mingw工具安装步骤中提到的手动设置环境path的方法一样,右键“此电脑”->“属性”->“高级系统设置”->“环境变量”->“系统变量”, 双击“Path”,添加z88dk工具安装目录的完整路径,如下图所示:

git工具安装

因为Windows平台不像Mac OS和Linux自带git工具,Windows下的git工具需要手动安装,安装过程按着操作步骤一步步操作即可,最后记得查看下系统path中有没有git工具目录,没有的话按照上述的步骤手动添加即可。 git Windows版下载目录:https://git-scm.com/download/win 3. Image Build

按照2#的步骤安装好以后,应该所有工具都支持在PowerShell中用命令行操作,那么还是老规矩,先从github上把OS代码先clone下来: git clone https://kgithub.com/Zeal8bit/Zeal-8-bit-OS.git 获得Zeal-8-bit-OS目录,进入该目录下。

Step 1. 下载安装menuconfig及Makefile预处理

根据之前在Ubuntu/Mac OS下的操作经验,先用pip3 install kconfiglib。但是Windows平台毕竟不像前面两者的类unix平台直接安装就行,Windows平台安装kconfiglib需要安装一系列的可执行文件,按照提示走即可,最终安装完成的kconfiglib所需所有的可执行文件如下图所示:

Step2 执行make menuconfig,配置os.conf文件

在PowerShell中进入到Zeal-8-bit-OS目录下,执行make menuconfig,按esc键,保存默认配置文件os.conf。

Step3 修改Top目录Makefile中的menuconfig中的路径

Windows平台下的menuconfig直接启动刚才安装的menuconfig.exe即可,而不需要像Mac OS和Linux那样通过python启动脚本。 更改Zeal-8-bit-OS目录下Makefile第144行的“$(PYTHON) $(shell $(PYTHON) -m site --user-base)/bin/menuconfig”为 “@C:\Python\Python310\Scripts\menuconfig.exe”

Step4 修改romdisk目录Makefile中的bin生成路径

和Mac OS, Linux目录下的z88dk-z80编译工具一样的问题,编译生成的bin文件在build/build下,因此修改方法也是一样,按照下图修改romdisk目录下Makefile的第25行和29行的build目录。

Step5 修改pack.c文件的打开属性

这个是Windows操作系统下的新问题,这个问题就是造成在Windows平台,最终程序编译成功,运行失败的根源所在。 先说解决方法:修改pack.c文件的第96行和第139行,在open的属性参数中添加“O_BINARY”,使得pack程序以纯二进制的方式读写文件。

再解释下问题的根源,不一定对,有大佬需要纠正的话欢迎在评论区留言: Windows平台下的回车换行符是两个字符:0x0D 0x0A。如果以默认的字符属性读写文件,系统见到单独0x0D字符而没见到0x0A字符,会认为字符输入输出异常,从而造成读写异常,在我这边遇到的问题就是0x0D之后的所有字符丢失,导致编译生成的bin文件不完整造成载入到Web Emulator中运行异常,前面遇到的程序初始化加载过程异常,屏幕闪烁就是这个问题造成的。 而类Unix系统中(Linux和Mac OS),由于回车换行字符对应的仅仅时回车符0x0D,因此,即使按照默认字符属性读写文件也不会造成异常。 因此解决方法修改成纯二进制方式读写就能避免对回车换行符异常判定的问题,看到什么数据,就以纯二进制方式写入生成的bin文件,最终生成和Linux和Mac OS下build生成的文件尺寸大小一样。 4. Run OS in Web Emulator

修正所有问题后,按照之前文章中运行OS img的步骤,加载os_with_romdisk.img后运行结果。

5. 总结

三大系统的build & Run in Web Emulator的过程圆满结束,花样繁多的坑都独立解决了,通过这些鼓捣过程,自己在增加知识积累的同时,也极大地增强了独立解决问题的信心和心得:不要害怕困难,去面对,去搜索,去问ChatGPT,只要思想不滑坡,办法总比困难多。诸君共勉!

Zeal8bit操作系统Build & Run(基于Windows)的评论 (共 条)

分享到微博请遵守国家法律