2009-10-12 38 views
10

下一个学期,我将需要为Motorola 68K处理器编写一个基本操作系统,作为课程实验材料的一部分。为Motorola 68K处理器编写操作系统。我可以效仿它吗?我可以测试驱动器的操作系统吗?

是否有一个与该处理器的基本硬件设置的Linux模拟器?所以我和我的合作伙伴可以在我们的计算机上更快地进行调试,而不是在物理上重启电路板和内容

是否可以将测试驱动的开发技术应用于操作系统开发?代码大部分是程序集和C.试图对此进行测试的主要困难是什么?有关如何做的建议?

回答

5

你当然可以tdd这个项目。首先通过简单的例行呼叫将所有对硬件的访问解耦,例如, getch()和printf,那么你可以提供简单的模拟,提供测试输入和检查输出。然后,您可以使用gcc,msdev或xcode在PC上编写90%以上的项目。一旦你对解耦程序有了一定的信心,你将需要很少的硬件访问权限,然后偶尔检查你的模拟是否按照你的预期行事。

保持C直到你找到一个特定的瓶颈,然后再诉诸汇编程序。

+1

我不同意最后一句话。如果你正在编写一个操作系统,那么在C中你不能做很多必要的事情。把asm降到最低是很好的做法,从C代码中直接汇编所需的大部分asm是很好的。但是你仍然可能需要一些文件,只是程序集。看一看linux上的entry.S--一个例子 - 这种东西与内联汇编没有任何意义,它必须独立运行。 – asveikau

+2

作为O/S级函数调用,'getch'和'printf'也没有任何意义。除非您正在重写MS-DOS ... – Alnitak

6

我建议QEMU为m68k仿真。 (您在QEMU中需要的系统仿真器是“Coldfire” - 这就是飞思卡尔称之为m68k架构的后继者)。

+0

看着QMEU网站,我没有看到M68K的支持;对于PowerPC(M68K的后代)来说,它建议PearPC,似乎并不活跃(最新更新似乎是2005年9月)。 –

+0

话虽如此,我发现一个关于M68K测试的外部网站提到了QEMU:http://gwenole.beauchesne.info/en/blog/2007/07/08/m68k_emulator_testsuite –

+0

Jonathan:它叫做“Coldfire”,它是m68k的继承人,请看这里:http://www.qemu.org/qemu-doc.html#SEC66 – caf

9

我会推荐开发经典的Amiga电脑的操作系统,它有不同版本的68000处理器。由于Amiga计算机是一台完整的计算机,并且记录完备,我认为这将是一个很好的练习。

有一个称为UAE(和Win-UAE)的模拟器,它非常精确,可以配置不同种类的处理器(68000 - 68060)和其他功能。通常情况下,您还需要为其获取ROM,但由于您自己正在开发操作系统,因此这不是必需的。

您将需要的工具是Cygwin(用于在Windows下开发)或Linux计算机。那么你将需要交叉编译器。这包括一个C编译器和一个汇编器。 Here is a template用于创建一个简单的ROM,它可以改变屏幕颜色并轻拂电源LED。它将创建一个文件'kick.rom',然后阿联酋在当前目录中搜索。

有关68000指令集的参考资料,请参见下面的链接。请注意,不同的汇编程序可能会使用稍微不同的语法和指令集。

如果您需要在真实的硬件上演示操作系统,那么现在在Ebay和其他地方销售Amiga克隆。搜索“Minimig”。

更新: 时下AROS也运行在阿联酋以及物理Amigas。

参考文献:

[UAE]
[WinUAE]
[Cygwin]
[Cross Compilers]
[68000 reference]

+0

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

+1

给http://vmlinux.org/jakov/jumpstart/ @mwcz添加链接“Here is a template” –

相关问题