← Documents Documentation/devicetree/bindings/mips/img/xilfpga.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

Imagination University Program MIPSfpga

Nexys4DDR MIPSfpga의 memory map, CPU clock과 JTAG boot 바인딩입니다.

Source pathDocumentation/devicetree/bindings/mips/img/xilfpga.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

xilfpga.txt:1-83

M14Kc·ARTIX-7 hardware, BootRAM 초기화와 `vmlinux` load 순서를 설명합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 Imagination University Program MIPSfpga
2 =======================================
3
4 Under the Imagination University Program, a microAptiv UP core has been
5 released for academic usage.
6
7 As we are dealing with a MIPS core instantiated on an FPGA, specifications
8 are fluid and can be varied in RTL.
9
10 This binding document is provided as baseline guidance for the example
11 project provided by IMG.
12
13 The example project runs on the Nexys4DDR board by Digilent powered by
14 the ARTIX-7 FPGA by Xilinx.
15
16 Relevant details about the example project and the Nexys4DDR board:
17
18 - microAptiv UP core m14Kc
19 - 50MHz clock speed
20 - 128Mbyte DDR RAM at 0x0000_0000
21 - 8Kbyte RAM at 0x1000_0000
22 - axi_intc at 0x1020_0000
23 - axi_uart16550 at 0x1040_0000
24 - axi_gpio at 0x1060_0000
25 - axi_i2c at 0x10A0_0000
26 - custom_gpio at 0x10C0_0000
27 - axi_ethernetlite at 0x10E0_0000
28 - 8Kbyte BootRAM at 0x1FC0_0000
29
30 Required properties:
31 --------------------
32 - compatible: Must include "digilent,nexys4ddr","img,xilfpga".
33
34 CPU nodes:
35 ----------
36 A "cpus" node is required. Required properties:
37 - #address-cells: Must be 1.
38 - #size-cells: Must be 0.
39 A CPU sub-node is also required for at least CPU 0. Required properties:
40 - device_type: Must be "cpu".
41 - compatible: Must be "mips,m14Kc".
42 - reg: Must be <0>.
43 - clocks: phandle to ext clock for fixed-clock received by MIPS core.
44
45 Example:
46
47 compatible = "img,xilfpga","digilent,nexys4ddr";
48 cpus {
49 #address-cells = <1>;
50 #size-cells = <0>;
51
52 cpu0: cpu@0 {
53 device_type = "cpu";
54 compatible = "mips,m14Kc";
55 reg = <0>;
56 clocks = <&ext>;
57 };
58 };
59
60 ext: ext {
61 compatible = "fixed-clock";
62 #clock-cells = <0>;
63 clock-frequency = <50000000>;
64 };
65
66 Boot protocol:
67 --------------
68
69 The BootRAM is a writeable "RAM" in FPGA at 0x1FC0_0000.
70 This is for easy reprogrammibility via JTAG.
71
72 The BootRAM initializes the cache and the axi_uart peripheral.
73
74 DDR initialization is already handled by a HW IP block.
75
76 When the example project bitstream is loaded, the cpu_reset button
77 needs to be pressed.
78
79 The bootram initializes the cache and axi_uart.
80 Then outputs MIPSFPGA\n\r on the serial port on the Nexys4DDR board.
81
82 At this point, the board is ready to load the Linux kernel
83 vmlinux file via JTAG.
84

3. 한국어 전문 번역

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

Imagination University Program MIPSfpga

1-15

Imagination University Program은 학술용 microAptiv UP core를 공개했습니다. FPGA에 구현되는 MIPS core이므로 specification은 유동적이며 RTL에서 바꿀 수 있습니다. 이 바인딩은 IMG example project의 baseline guidance입니다.

예제 project는 Xilinx ARTIX-7 FPGA를 탑재한 Digilent Nexys4DDR board에서 실행됩니다.

Nexys4DDR hardware map

16-33

예제는 microAptiv UP m14Kc core와 50MHz clock을 사용합니다. 필수 root `compatible`에는 `digilent,nexys4ddr`와 `img,xilfpga`가 포함되어야 합니다.

MIPSfpga example memory map
항목주소·크기
DDR RAM128Mbyte at 0x0000_0000
RAM8Kbyte at 0x1000_0000
axi_intc0x1020_0000
axi_uart165500x1040_0000
axi_gpio0x1060_0000
axi_i2c0x10A0_0000
custom_gpio0x10C0_0000
axi_ethernetlite0x10E0_0000
BootRAM8Kbyte at 0x1FC0_0000

원문에 제시된 memory와 peripheral 위치입니다.

M14Kc CPU와 fixed clock

34-65

`cpus` node는 필수이며 `#address-cells = <1>`, `#size-cells = <0>`입니다. 적어도 CPU 0 subnode가 필요하고 `device_type = "cpu"`, `compatible = "mips,m14Kc"`, `reg = <0>`, MIPS core가 받는 external fixed-clock의 phandle인 `clocks`를 지정해야 합니다.

예제는 `img,xilfpga`, `digilent,nexys4ddr` root와 CPU0, 50MHz `fixed-clock` provider `ext`를 구성합니다.

compatible = "img,xilfpga","digilent,nexys4ddr";
cpus {
        #address-cells = <1>;
        #size-cells = <0>;

        cpu0: cpu@0 {
                device_type = "cpu";
                compatible = "mips,m14Kc";
                reg = <0>;
                clocks        = <&ext>;
        };
};

ext: ext {
        compatible = "fixed-clock";
        #clock-cells = <0>;
        clock-frequency = <50000000>;
};

BootRAM·JTAG boot protocol

66-83

BootRAM은 FPGA의 `0x1FC0_0000`에 있는 writable RAM이며 JTAG로 쉽게 다시 program하기 위한 것입니다. BootRAM이 cache와 `axi_uart` peripheral을 초기화하고 DDR 초기화는 이미 hardware IP block이 처리합니다.

Example bitstream을 load하면 `cpu_reset` button을 눌러야 합니다. BootRAM은 cache와 `axi_uart`를 초기화한 뒤 Nexys4DDR serial port로 `MIPSFPGA\n\r`을 출력합니다. 그 시점부터 JTAG로 Linux kernel `vmlinux`를 load할 준비가 됩니다.

MIPSfpga JTAG boot
Load FPGA bitstreamPress cpu_reset
BootRAMInitialize cache
BootRAMInitialize axi_uart
Serial output MIPSFPGA\n\rLoad vmlinux via JTAG

Bitstream load부터 kernel load 준비까지의 순서입니다.