1

关于架构的背景信息:我刚刚为要放入 FPGA 的 CPU 设计了一组指令,但我希望能够与 Linux(一个简单的 Linux 系统)兼容,但我刚开始这个,我对此了解不多,我确信Linux可以在我的CPU中服务。我认为 AVR 也支持 Linux,但我不知道这是不是真的,但如果这是真的,我认为我的 CPU 也可以。我的 CPU 是 16 位的,它有以下寄存器:

  1. 斧头

  2. BX

  3. CX

  4. DX

  5. 前任

  6. 外汇

这可以支持多达 256 个(16 位寄存器),我也只放了几个寄存器,因为我不知道它是否会给我的 FPGA 中的 VGA 驱动程序空间,认为寄存器文件中可以容纳更多的 8 个寄存器. 我的 FPGA 板有一个 Cyclone IV。我的 CPU 的程序计数器或(PC)是 16 位的。我的 CPU 使用指向两个寄存器的指针(ARP、BRP)处理数据,并将寄存器的值传递给可用于放置 ALU 的值(A、B)的两个输出。为了将数据保存在寄存器中,我也使用了两个指针(CRP,DRP),这些指针指向将存储值的寄存器,指令说明是否要使用指针来保存值,否则,值会被错误地保存在两个寄存器中。我不知道如果我' 我将能够在我的设计中使用 Linux。非常感谢!☺</p>

问题:是否可以将 Linux 移植到 16 位架构?

编辑:在获得嵌入式系统近 3 年的经验之后,我看到这个问题是多么无知。我无法提供这个问题的答案,因为这个问题被标记为不接受答案。但我将尝试解释为什么将 Linux 本地移植到 16 位 CPU 几乎是不可能的。

  • Real Linux 需要 MMU 才能工作,尽管有 uClinux 不需要 MMU。MMU 需要为用户空间程序提供自己的内存地址空间,而不受其他程序的干扰。

  • 16 位地址空间太有限,甚至无法运行所需的内容。由于我见过的较小的 Linux 安装需要 8MB,这与 16 位地址空间(64 KB)相差甚远。

  • Linux内核需要Binutils和GCC来编译!

  • 移植 GCC 将非常棘手和棘手,因为 GCC 旨在针对 32 位架构。

  • 我之前提到这几乎是不可能的,但是,您可以进行仿真,并且在外部硬件的帮助下,您可以仿真另一种架构。但那是作弊,不是吗? http://dmitry.gr/index.php?r=05.Projects&proj=07.%20Linux%20on%208bit

  • 最后,如果您真的想在自定义 CPU 上运行 Linux,请从 RISCV 开始。它支持 GCC 和所有必需的工具,再加上 RISCV 就是未来!

如果您真的想在自定义 CPU 中运行操作系统,可以将其移植到 LCC 编译器。运行实时操作系统。这是一种更现实的方法。但是,这仍然是一个具有挑战性的任务。

4

1 回答 1

3

你运气不好。Linux 需要 32 位系统才能运行。

于 2018-04-25T08:31:16.813 回答