编写适用于Motorola 68K处理器的操作系统。我可以模拟它吗?并且我可以进行操作系统开发测试吗?

11

下一个学期,我需要作为课程实验材料之一编写适用于Motorola 68K处理器的基本操作系统。

是否有适用于该处理器的Linux模拟器基本硬件设置?这样我的伙伴和我就可以在电脑上快速调试,而不必物理重新启动板子等等。

是否可能将测试驱动开发技术应用于操作系统开发?代码将主要使用汇编语言和C语言编写。尝试进行测试驱动开发的主要困难是什么?如何做到?

6个回答

10
我建议为经典的Amiga计算机开发操作系统,该计算机拥有不同版本的68000处理器。由于Amiga计算机是一台完整的计算机,并且文档十分详细,我认为这将是一个很好的练习。
有一个名为UAE(和Win-UAE)的模拟器,非常精确,可以配置不同类型的处理器(68000-68060)和其他能力。通常情况下,您还需要获取ROM,但由于您自己正在开发操作系统,因此这是不必要的。
您需要的工具是Cygwin(用于在Windows下进行开发)或Linux计算机。然后您需要交叉编译器。这包括C编译器和汇编器。这里提供了创建简单ROM的模板,可更改屏幕颜色并闪烁电源LED。它将创建一个名为“kick.rom”的文件,UAE会在当前目录中搜索该文件。
68000指令集的参考资料可以在下面的链接中找到。请注意,不同的汇编程序可能使用略有不同的语法和指令集。
如果您需要在真实硬件上演示操作系统,则可以在Ebay和其他地方购买现代的Amiga克隆机。搜索“Minimig”。
更新: 现在AROS也可以在UAE以及物理的Amigas上运行。
参考资料: [UAE] [WinUAE] [Cygwin] [Cross Compilers] [68000 reference]

哪个超链接包含更改屏幕颜色或闪烁电源 LED 的 ROM 模板? - mwcz

6
我建议使用QEMU进行m68k仿真。
(你想要的QEMU系统仿真器是"Coldfire" - 这是Freescale称为m68k架构的后继者。)

看了一下QMEU网站,我没有看到对M68K的支持;对于PowerPC(M68K的后代),它建议使用PearPC,但似乎已经不再更新(最后一次更新似乎是在2005年9月)。 - Jonathan Leffler
话虽如此,我发现了一个关于M68K测试的外部网站,提到了QEMU:http://gwenole.beauchesne.info/en/blog/2007/07/08/m68k_emulator_testsuite - Jonathan Leffler
Jonathan:它被称为“Coldfire”,是m68k的继承者,详见此处:http://www.qemu.org/qemu-doc.html#SEC66 - caf

5
你肯定可以使用测试驱动开发(TDD)来完成这个项目。首先,将所有对硬件的访问解耦成简单的例程调用,例如getch()和printf,然后可以提供简单的模拟程序来提供测试输入并检查输出。然后,您可以使用gcc、msdev或xcode在PC上编写超过90%以上的项目。一旦你对解耦例程有了信心,你将需要非常少的硬件访问权限,仅在偶尔检查模拟程序是否按照您的期望工作时才需要访问硬件。
在找到特定的瓶颈之前,一直使用C语言编写,只有在必要时才使用汇编语言。

2
我不同意最后一句话。如果你正在编写操作系统,有很多必要的事情是你不能用C语言完成的。尽量减少汇编代码的使用是好的,而且最好将大部分需要的汇编代码作为C代码的内联汇编来完成。但是你仍然可能需要一些只包含汇编代码的文件。以Linux上的entry.S为例--那种东西作为内联汇编是没有意义的,它必须独立存在。 - asveikau
3
getchprintf作为操作系统级函数调用完全没有任何意义。除非你在重写MS-DOS... - Alnitak

3
有几个新项目正在使用硬件模拟的68000 CPU,包括C-One项目、Minimig项目(Mini Amiga)和Natami项目(Native Amiga),它们都是兼容68k的全新Amiga系统。
C One是可重构计算机,详情请见此处;Minimig正在开发中,原型已经完成,可在FPGA Arcade此处了解详情;Natami的相关信息可以在此处找到。

3

1

uClinux项目始于m68k开发板。他们可能有你需要的工具...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接