요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
Imagination University Program MIPSfpga
=======================================
Under the Imagination University Program, a microAptiv UP core has been
released for academic usage.
As we are dealing with a MIPS core instantiated on an FPGA, specifications
are fluid and can be varied in RTL.
This binding document is provided as baseline guidance for the example
project provided by IMG.
The example project runs on the Nexys4DDR board by Digilent powered by
the ARTIX-7 FPGA by Xilinx.
Relevant details about the example project and the Nexys4DDR board:
- microAptiv UP core m14Kc
- 50MHz clock speed
- 128Mbyte DDR RAM at 0x0000_0000
- 8Kbyte RAM at 0x1000_0000
- axi_intc at 0x1020_0000
- axi_uart16550 at 0x1040_0000
- axi_gpio at 0x1060_0000
- axi_i2c at 0x10A0_0000
- custom_gpio at 0x10C0_0000
- axi_ethernetlite at 0x10E0_0000
- 8Kbyte BootRAM at 0x1FC0_0000
Required properties:
--------------------
- compatible: Must include "digilent,nexys4ddr","img,xilfpga".
CPU nodes:
----------
A "cpus" node is required. Required properties:
- #address-cells: Must be 1.
- #size-cells: Must be 0.
A CPU sub-node is also required for at least CPU 0. Required properties:
- device_type: Must be "cpu".
- compatible: Must be "mips,m14Kc".
- reg: Must be <0>.
- clocks: phandle to ext clock for fixed-clock received by MIPS core.
Example:
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>;
};
Boot protocol:
--------------
The BootRAM is a writeable "RAM" in FPGA at 0x1FC0_0000.
This is for easy reprogrammibility via JTAG.
The BootRAM initializes the cache and the axi_uart peripheral.
DDR initialization is already handled by a HW IP block.
When the example project bitstream is loaded, the cpu_reset button
needs to be pressed.
The bootram initializes the cache and axi_uart.
Then outputs MIPSFPGA\n\r on the serial port on the Nexys4DDR board.
At this point, the board is ready to load the Linux kernel
vmlinux file via JTAG.
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
Imagination University Program MIPSfpga
1-15Imagination 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`가 포함되어야 합니다.
원문에 제시된 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-83BootRAM은 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할 준비가 됩니다.
Bitstream load부터 kernel load 준비까지의 순서입니다.
요약과 해설
xilfpga.txt:1-83M14Kc·ARTIX-7 hardware, BootRAM 초기화와 `vmlinux` load 순서를 설명합니다.