该存储库包含创建Project Oberon 2013的有效RISC-V映像所需的一切,包括有效的RV32IM编译器以及Oberon本身的端口。
如果您不想弄清楚如何构建映像,而只是想尝试一下,请克隆RISC-V Oberon模拟器的存储库,因为它包含示例RISC-V映像。
如果希望对过程进行更多控制,请按照以下方法从您喜欢的任何文件夹中生成带有不同清单的清单:
-r标志指定创建RISC-V映像。默认情况下,build-image将选择manifests / manifest.csv清单。但是该文件夹中还有一些其他清单,您可以使用-m标志来指定使用它们。编辑清单以包括您希望包括的任何文件应该很简单;只需记住在OberonRV / Oberon文件夹中添加相应的.Mod文件即可。您可以指定与OberonRV / Oberon不同的文件夹,但是如果不进行一些重大更改,未经编辑的PO2013存储库将无法工作。
引导加载程序嵌入在仿真器中。因此,更改它与构建图像是一个独立的过程。您可能不需要更改引导程序,但是如果您希望:
使用RISC-V编译器编译引导加载程序。为了使自己更轻松,请运行cd OberonRV; source functions.sh将提供roc和nor命令。然后,您可以运行roc BootLoad.mod,然后可以在BootLoad.rsc中找到编译的程序。
在作为子模块包含的andreaspirklbauer的Oberon-build-tools中使用ORX.Mod编写可用作引导加载程序的文件:或ORX.WriteFile BootLoad.rsc BootLoad.code。 BootLoad.code现在包含RISC-V指令列表。
目前,仿真器无法理解这种格式。您需要在每行开头添加0x,并在末尾添加逗号。您可以在模拟器中查看src / emu / bootloader.inc以获取格式示例。 (我使用vim来做到这一点,而且速度如此之快,以至于我从未为它编写脚本。因此,这部分内容留给读者练习。)然后,用您自己的替换bootloader.inc引导程序。
64位支持。这很容易,据我所知,只需要很小的改动。
MagicSquares产生不正确的输出。这应该是相对容易跟踪和修复的。
由于某些原因,编译器会错误地读取Project Oberon中的符号表。它将参数长度0FFFFFFFFH读取为07FH;可能是由于只读取一个字节而不是整个字。当前,解析器中存在一种变通方法,可以将07FH的参数长度与0FFFFFFFFH视为相同。
sam-falvo的Oberon-RV编译器,该存储库是其中的一个fork。它可以编译许多程序,但是有一些错误使它无法编译整个Oberon系统。我已经修补了其中的大部分内容,因此现在可以自行编译。某些模块,例如RVAssem,RVDis和RVOTool,将保持全部或大部分不变。
pdewacht的Norebo项目,用于创建RISC-V映像,该存储库也是该映像的一个分支。
pdewacht的Oberon模拟器,用于模拟创建的图像。我在RISC-V上的仿真器端口可以在这里找到。
andreaspirklbauer的Oberon-build-tools,它作为此存储库的子模块包含在内。 Oberon引导过程的文档以及工具都非常有用。