OpenRISC Linux¶
这是 Linux 到 OpenRISC 类微处理器的移植;最初的目标架构具体为 32 位 OpenRISC 1000 系列 (or1k)。
关于 OpenRISC 处理器和持续开发的信息
OpenRISC 工具链和 Linux 的构建说明¶
为了构建并运行 OpenRISC 版 Linux,你至少需要一个基础工具链,或许还需要架构模拟器。此处概述了获取这些组件的步骤。
工具链
工具链二进制文件可以从 openrisc.io 或我们的 GitHub 发布页面获取。构建不同工具链的说明可以在 openrisc.io 上找到,或者查看 Stafford 的工具链构建和发布脚本。
构建
像往常一样构建 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。
在 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
在模拟器上运行(可选)
QEMU 是一个处理器模拟器,我们推荐使用它来模拟 OpenRISC 平台。请遵循 QEMU 网站上的 OpenRISC 说明,让 Linux 在 QEMU 上运行。你可以自行构建 QEMU,但你的 Linux 发行版很可能提供了支持 OpenRISC 的二进制软件包。
qemu 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 版本保持一致