如何为我设计的CPU制作Linux操作系统?
体系结构的背景信息:我刚刚为CPU设计了一组指令,我将把它放在FPGA中,但我希望它能够与Linux(一个简单的Linux系统)兼容,但我刚刚开始做这个,对此我不太了解,我确信Linux可以在我的CPU中使用。我认为AVR也支持Linux,但我不知道这是不是真的,但如果这是真的,我认为我的CPU也可以。 我的CPU是16位的,它有以下寄存器:如何为我设计的CPU制作Linux操作系统?,linux,linux-kernel,linux-device-driver,linux-capabilities,Linux,Linux Kernel,Linux Device Driver,Linux Capabilities,体系结构的背景信息:我刚刚为CPU设计了一组指令,我将把它放在FPGA中,但我希望它能够与Linux(一个简单的Linux系统)兼容,但我刚刚开始做这个,对此我不太了解,我确信Linux可以在我的CPU中使用。我认为AVR也支持Linux,但我不知道这是不是真的,但如果这是真的,我认为我的CPU也可以。 我的CPU是16位的,它有以下寄存器: 斧头 BX CX DX 前 外汇 这可以支持多达256个(16位寄存器),我也只放了几个寄存器,因为我不知道它是否会给我的FPGA中的VGA驱
- 真正的Linux需要MMU才能工作,尽管有些uClinux不需要MMU。MMU需要为用户空间程序提供自己的内存地址空间,而不受其他程序的干扰
- 16位地址空间太有限,甚至无法运行所需的内容。正如我所看到的较小的Linux安装需要8MB,这远远超出了16位地址空间(64KB)
- Linux内核需要Binutils和GCC来编译
- 移植GCC将非常困难和棘手,因为GCC是针对32位体系结构设计的
- 我在前面提到,这几乎是不可能的,但是,您可以进行仿真,并且在外部硬件的帮助下,您可以仿真另一个体系结构。但那是作弊,不是吗?
- 最后,如果您真的想在自定义CPU上运行Linux,请从RISCV开始。它支持GCC和所有必需的工具,加上RISCV就是未来
如果您确实想在自定义CPU中运行操作系统,可以将其移植到LCC编译器。运行RTOS。这是一种更现实的方法。但是,这仍然是一个挑战。你运气不好。Linux需要32位系统才能运行。您的体系结构有编译器吗?即使你有,linux也很可能永远不会在其中构建,因为它依赖于一些gcc特性。所以如果你的cpu没有mmu,linux就不能工作。还有更多。你最好从一个hello world的例子开始。@AlexHoppus这不是真的。Linux也在无MMU的CPU上运行。16位,但它不能:-)真正的Linux需要一个MMU。在没有MMU的CPU上运行的并不是真正的Linux,只是一个苍白的模仿者,您至少需要阅读然后再研究一下