← Documents Documentation/arch/openrisc/openrisc_port.rst GitHub 원문 ↗

Linux 6.18.37 · Architecture

OpenRISC Linux

OpenRISC/or1k toolchain, kernel build, FPGA와 QEMU 실행, symbol terminology와 port history입니다.

Source pathDocumentation/arch/openrisc/openrisc_port.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

openrisc_port.rst:1-127

OpenRISC port는 같은 kernel image를 FPGA와 QEMU에서 검증할 수 있는 흐름을 제공합니다. `ARCH=openrisc`, `or1k-linux-` toolchain, FuseSoC/OpenOCD 또는 QEMU가 핵심 구성 요소입니다.

OpenRISC build and run
or1k toolchainLinux kernelFuseSoC FPGAOpenOCD
or1k toolchainLinux kernelQEMU OpenRISC

Toolchain에서 target platform까지의 두 실행 경로입니다.

Architecture naming scope
ParticleScope
`openrisc`Processor class
`or1k`OpenRISC 1000 family
`or1200`OpenRISC 1200 processor

Symbol particle이 구현 범위를 좁힙니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 ==============
2 OpenRISC Linux
3 ==============
4
5 This is a port of Linux to the OpenRISC class of microprocessors; the initial
6 target architecture, specifically, is the 32-bit OpenRISC 1000 family (or1k).
7
8 For information about OpenRISC processors and ongoing development:
9
10 ======= ==============================
11 website https://openrisc.io
12 email linux-openrisc@vger.kernel.org
13 ======= ==============================
14
15 ---------------------------------------------------------------------
16
17 Build instructions for OpenRISC toolchain and Linux
18 ===================================================
19
20 In order to build and run Linux for OpenRISC, you'll need at least a basic
21 toolchain and, perhaps, the architectural simulator. Steps to get these bits
22 in place are outlined here.
23
24 1) Toolchain
25
26 Toolchain binaries can be obtained from openrisc.io or our github releases page.
27 Instructions for building the different toolchains can be found on openrisc.io
28 or Stafford's toolchain build and release scripts.
29
30 ========== ==========================================================
31 binaries https://github.com/stffrdhrn/or1k-toolchain-build/releases
32 toolchains https://openrisc.io/software
33 building https://github.com/stffrdhrn/or1k-toolchain-build
34 ========== ==========================================================
35
36 2) Building
37
38 Build the Linux kernel as usual::
39
40 make ARCH=openrisc CROSS_COMPILE="or1k-linux-" defconfig
41 make ARCH=openrisc CROSS_COMPILE="or1k-linux-"
42
43 If you want to embed initramfs in the kernel, also pass ``CONFIG_INITRAMFS_SOURCE``. For example::
44
45 make ARCH=openrisc CROSS_COMPILE="or1k-linux-" CONFIG_INITRAMFS_SOURCE="path/to/rootfs path/to/devnodes"
46
47 For more information on this, please check Documentation/filesystems/ramfs-rootfs-initramfs.rst.
48
49 3) Running on FPGA (optional)
50
51 The OpenRISC community typically uses FuseSoC to manage building and programming
52 an SoC into an FPGA. The below is an example of programming a De0 Nano
53 development board with the OpenRISC SoC. During the build FPGA RTL is code
54 downloaded from the FuseSoC IP cores repository and built using the FPGA vendor
55 tools. Binaries are loaded onto the board with openocd.
56
57 ::
58
59 git clone https://github.com/olofk/fusesoc
60 cd fusesoc
61 sudo pip install -e .
62
63 fusesoc init
64 fusesoc build de0_nano
65 fusesoc pgm de0_nano
66
67 openocd -f interface/altera-usb-blaster.cfg \
68 -f board/or1k_generic.cfg
69
70 telnet localhost 4444
71 > init
72 > halt; load_image vmlinux ; reset
73
74 4) Running on a Simulator (optional)
75
76 QEMU is a processor emulator which we recommend for simulating the OpenRISC
77 platform. Please follow the OpenRISC instructions on the QEMU website to get
78 Linux running on QEMU. You can build QEMU yourself, but your Linux distribution
79 likely provides binary packages to support OpenRISC.
80
81 ============= ======================================================
82 qemu openrisc https://wiki.qemu.org/Documentation/Platforms/OpenRISC
83 ============= ======================================================
84
85 ---------------------------------------------------------------------
86
87 Terminology
88 ===========
89
90 In the code, the following particles are used on symbols to limit the scope
91 to more or less specific processor implementations:
92
93 ========= =======================================
94 openrisc: the OpenRISC class of processors
95 or1k: the OpenRISC 1000 family of processors
96 or1200: the OpenRISC 1200 processor
97 ========= =======================================
98
99 ---------------------------------------------------------------------
100
101 History
102 ========
103
104 18-11-2003 Matjaz Breskvar (phoenix@bsemi.com)
105 initial port of linux to OpenRISC/or32 architecture.
106 all the core stuff is implemented and seams usable.
107
108 08-12-2003 Matjaz Breskvar (phoenix@bsemi.com)
109 complete change of TLB miss handling.
110 rewrite of exceptions handling.
111 fully functional sash-3.6 in default initrd.
112 a much improved version with changes all around.
113
114 10-04-2004 Matjaz Breskvar (phoenix@bsemi.com)
115 a lot of bugfixes all over.
116 ethernet support, functional http and telnet servers.
117 running many standard linux apps.
118
119 26-06-2004 Matjaz Breskvar (phoenix@bsemi.com)
120 port to 2.6.x
121
122 30-11-2004 Matjaz Breskvar (phoenix@bsemi.com)
123 lots of bugfixes and enhancements.
124 added opencores framebuffer driver.
125
126 09-10-2010 Jonas Bonn (jonas@southpole.se)
127 major rewrite to bring up to par with upstream Linux 2.6.36
128

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

OpenRISC Linux port

1-15

Linux를 OpenRISC microprocessor class에 port한 문서이며 최초 target은 32-bit OpenRISC 1000 family (`or1k`)입니다.

Contact주소
`website``https://openrisc.io`
`email``linux-openrisc@vger.kernel.org`

Toolchain과 kernel build

16-47

OpenRISC Linux를 build/run하려면 최소한 기본 toolchain이 필요하고 경우에 따라 architecture simulator도 필요합니다. Binary와 build instruction은 다음 위치에서 구합니다.

ResourceURL
`binaries``https://github.com/stffrdhrn/or1k-toolchain-build/releases`
`toolchains``https://openrisc.io/software`
`building``https://github.com/stffrdhrn/or1k-toolchain-build`

일반 Linux kernel build command는 다음과 같습니다.

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

Kernel에 initramfs를 embed하려면 `CONFIG_INITRAMFS_SOURCE`도 전달합니다.

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

자세한 설명은 `Documentation/filesystems/ramfs-rootfs-initramfs.rst`를 참조합니다.

FPGA와 QEMU에서 실행

48-83

OpenRISC community는 보통 FuseSoC로 FPGA SoC build/programming을 관리합니다. De0 Nano 예제에서는 FuseSoC IP core repository의 RTL을 vendor tool로 build하고 OpenOCD로 binary를 board에 적재합니다.

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는 권장 processor emulator입니다. Distribution package를 사용할 수 있고 직접 build할 수도 있으며 OpenRISC platform instruction은 아래 문서를 따릅니다.

ResourceURL
`qemu openrisc``https://wiki.qemu.org/Documentation/Platforms/OpenRISC`

Source symbol terminology

84-99

Source code symbol의 prefix/particle은 processor implementation 범위를 구분합니다.

Particle범위
`openrisc:``the OpenRISC class of processors`
`or1k:``the OpenRISC 1000 family of processors`
`or1200:``the OpenRISC 1200 processor`

Port history

100-127
DateMaintainer변경
2003-11-18Matjaz BreskvarOpenRISC/or32 최초 port, core 기능 구현
2003-12-08Matjaz BreskvarTLB miss와 exception handling 재작성, sash-3.6 initrd
2004-04-10Matjaz BreskvarBugfix, Ethernet, HTTP/telnet server와 표준 application
2004-06-26Matjaz BreskvarLinux 2.6.x port
2004-11-30Matjaz BreskvarBugfix/enhancement와 OpenCores framebuffer driver
2010-10-09Jonas BonnUpstream Linux 2.6.36 수준으로 major rewrite