| ============== |
| OpenRISC Linux |
| ============== |
| |
| This is a port of Linux to the OpenRISC class of microprocessors; the initial |
| target architecture, specifically, is the 32-bit OpenRISC 1000 family (or1k). |
| |
| For information about OpenRISC processors and ongoing development: |
| |
| ======= ============================= |
| website http://openrisc.io |
| email openrisc@lists.librecores.org |
| ======= ============================= |
| |
| --------------------------------------------------------------------- |
| |
| Build instructions for OpenRISC toolchain and Linux |
| =================================================== |
| |
| In order to build and run Linux for OpenRISC, you'll need at least a basic |
| toolchain and, perhaps, the architectural simulator. Steps to get these bits |
| in place are outlined here. |
| |
| 1) Toolchain |
| |
| Toolchain binaries can be obtained from openrisc.io or our github releases page. |
| Instructions for building the different toolchains can be found on openrisc.io |
| or Stafford's toolchain build and release scripts. |
| |
| ========== ================================================= |
| binaries https://github.com/openrisc/or1k-gcc/releases |
| toolchains https://openrisc.io/software |
| building https://github.com/stffrdhrn/or1k-toolchain-build |
| ========== ================================================= |
| |
| 2) Building |
| |
| Build the Linux kernel as usual:: |
| |
| make ARCH=openrisc CROSS_COMPILE="or1k-linux-" defconfig |
| make ARCH=openrisc CROSS_COMPILE="or1k-linux-" |
| |
| 3) Running on FPGA (optional) |
| |
| The OpenRISC community typically uses FuseSoC to manage building and programming |
| an SoC into an FPGA. The below is an example of programming a De0 Nano |
| development board with the OpenRISC SoC. During the build FPGA RTL is code |
| downloaded from the FuseSoC IP cores repository and built using the FPGA vendor |
| tools. Binaries are loaded onto the board with 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 |
| |
| 4) Running on a Simulator (optional) |
| |
| QEMU is a processor emulator which we recommend for simulating the OpenRISC |
| platform. Please follow the OpenRISC instructions on the QEMU website to get |
| Linux running on QEMU. You can build QEMU yourself, but your Linux distribution |
| likely provides binary packages to support OpenRISC. |
| |
| ============= ====================================================== |
| qemu openrisc https://wiki.qemu.org/Documentation/Platforms/OpenRISC |
| ============= ====================================================== |
| |
| --------------------------------------------------------------------- |
| |
| Terminology |
| =========== |
| |
| In the code, the following particles are used on symbols to limit the scope |
| to more or less specific processor implementations: |
| |
| ========= ======================================= |
| openrisc: the OpenRISC class of processors |
| or1k: the OpenRISC 1000 family of processors |
| or1200: the OpenRISC 1200 processor |
| ========= ======================================= |
| |
| --------------------------------------------------------------------- |
| |
| History |
| ======== |
| |
| 18-11-2003 Matjaz Breskvar (phoenix@bsemi.com) |
| initial port of linux to OpenRISC/or32 architecture. |
| all the core stuff is implemented and seams usable. |
| |
| 08-12-2003 Matjaz Breskvar (phoenix@bsemi.com) |
| complete change of TLB miss handling. |
| rewrite of exceptions handling. |
| fully functional sash-3.6 in default initrd. |
| a much improved version with changes all around. |
| |
| 10-04-2004 Matjaz Breskvar (phoenix@bsemi.com) |
| alot of bugfixes all over. |
| ethernet support, functional http and telnet servers. |
| running many standard linux apps. |
| |
| 26-06-2004 Matjaz Breskvar (phoenix@bsemi.com) |
| port to 2.6.x |
| |
| 30-11-2004 Matjaz Breskvar (phoenix@bsemi.com) |
| lots of bugfixes and enhancments. |
| added opencores framebuffer driver. |
| |
| 09-10-2010 Jonas Bonn (jonas@southpole.se) |
| major rewrite to bring up to par with upstream Linux 2.6.36 |