OpenRISC Linux

这是 Linux 到 OpenRISC 类微处理器的移植;最初的目标架构具体为 32 位 OpenRISC 1000 系列 (or1k)。

关于 OpenRISC 处理器和持续开发的信息


OpenRISC 工具链和 Linux 的构建说明

为了构建并运行 OpenRISC 版 Linux,你至少需要一个基础工具链,或许还需要架构模拟器。此处概述了获取这些组件的步骤。

  1. 工具链

工具链二进制文件可以从 openrisc.io 或我们的 GitHub 发布页面获取。构建不同工具链的说明可以在 openrisc.io 上找到,或者查看 Stafford 的工具链构建和发布脚本。

  1. 构建

像往常一样构建 Linux 内核

make ARCH=openrisc CROSS_COMPILE="or1k-linux-" defconfig
make ARCH=openrisc CROSS_COMPILE="or1k-linux-"

如果你想将 initramfs 嵌入到内核中,还需要传递 CONFIG_INITRAMFS_SOURCE。例如

make ARCH=openrisc CROSS_COMPILE="or1k-linux-" CONFIG_INITRAMFS_SOURCE="path/to/rootfs path/to/devnodes"

有关此内容的更多信息,请查阅 Ramfs, rootfs and initramfs

  1. 在 FPGA 上运行(可选)

OpenRISC 社区通常使用 FuseSoC 来管理 SoC 到 FPGA 的构建和烧录。下面是一个使用 OpenRISC SoC 对 De0 Nano 开发板进行编程的示例。在构建期间,FPGA RTL 代码会从 FuseSoC IP 核仓库中下载,并使用 FPGA 供应商工具进行构建。二进制文件通过 openocd 加载到开发板上。

git clone https://github.com/olofk/fusesoc
cd fusesoc
sudo pip install -e .

fusesoc init
fusesoc build de0_nano
fusesoc pgm de0_nano

openocd -f interface/altera-usb-blaster.cfg \
        -f board/or1k_generic.cfg

telnet localhost 4444
> init
> halt; load_image vmlinux ; reset
  1. 在模拟器上运行(可选)

QEMU 是一个处理器模拟器,我们推荐使用它来模拟 OpenRISC 平台。请遵循 QEMU 网站上的 OpenRISC 说明,让 Linux 在 QEMU 上运行。你可以自行构建 QEMU,但你的 Linux 发行版很可能提供了支持 OpenRISC 的二进制软件包。


术语

在代码中,以下限定符被用于符号上,以将范围限制在或多或少特定的处理器实现上

openrisc

OpenRISC 类处理器

or1k

OpenRISC 1000 系列处理器

or1200

OpenRISC 1200 处理器


历史记录

2003年11月18日 Matjaz Breskvar (phoenix@bsemi.com)

Linux 到 OpenRISC/or32 架构的初始移植。所有核心内容均已实现,看起来可用。

2003年12月8日 Matjaz Breskvar (phoenix@bsemi.com)

完全更改了 TLB 未命中处理。重写了异常处理。默认 initrd 中包含功能完整的 sash-3.6。这是一个进行了全面改进的版本。

2004年4月10日 Matjaz Breskvar (phoenix@bsemi.com)

进行了大量的错误修复。支持以太网,功能完备的 http 和 telnet 服务器。可运行许多标准的 Linux 应用程序。

2004年6月26日 Matjaz Breskvar (phoenix@bsemi.com)

移植到 2.6.x

2004年11月30日 Matjaz Breskvar (phoenix@bsemi.com)

许多错误修复和增强功能。添加了 opencores 帧缓冲区(framebuffer)驱动程序。

2010年10月9日 Jonas Bonn (jonas@southpole.se)

重大重写,以使其与上游 Linux 2.6.36 版本保持一致