Documentation/driver-api/fpga/intro.rst GitHub 원문 ↗

Linux 6.18.37 · Driver API

Introduction

Vendor-neutral FPGA framework의 layer 분리 원칙과 manager·bridge·region 역할을 설명합니다.

Source pathDocumentation/driver-api/fpga/intro.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

intro.rst:1-54

FPGA subsystem은 vendor-neutral upper layer와 device-specific programming driver를 분리합니다. Manager가 programming을 수행하고 bridge가 signal을 격리하며 region이 이들을 full 또는 partial reconfiguration 영역으로 결합합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 Introduction
2 ============
3
4 The FPGA subsystem supports reprogramming FPGAs dynamically under
5 Linux. Some of the core intentions of the FPGA subsystems are:
6
7 * The FPGA subsystem is vendor agnostic.
8
9 * The FPGA subsystem separates upper layers (userspace interfaces and
10 enumeration) from lower layers that know how to program a specific
11 FPGA.
12
13 * Code should not be shared between upper and lower layers. This
14 should go without saying. If that seems necessary, there's probably
15 framework functionality that can be added that will benefit
16 other users. Write the linux-fpga mailing list and maintainers and
17 seek out a solution that expands the framework for broad reuse.
18
19 * Generally, when adding code, think of the future. Plan for reuse.
20
21 The framework in the kernel is divided into:
22
23 FPGA Manager
24 ------------
25
26 If you are adding a new FPGA or a new method of programming an FPGA,
27 this is the subsystem for you. Low level FPGA manager drivers contain
28 the knowledge of how to program a specific device. This subsystem
29 includes the framework in fpga-mgr.c and the low level drivers that
30 are registered with it.
31
32 FPGA Bridge
33 -----------
34
35 FPGA Bridges prevent spurious signals from going out of an FPGA or a
36 region of an FPGA during programming. They are disabled before
37 programming begins and re-enabled afterwards. An FPGA bridge may be
38 actual hard hardware that gates a bus to a CPU or a soft ("freeze")
39 bridge in FPGA fabric that surrounds a partial reconfiguration region
40 of an FPGA. This subsystem includes fpga-bridge.c and the low level
41 drivers that are registered with it.
42
43 FPGA Region
44 -----------
45
46 If you are adding a new interface to the FPGA framework, add it on top
47 of an FPGA region.
48
49 The FPGA Region framework (fpga-region.c) associates managers and
50 bridges as reconfigurable regions. A region may refer to the whole
51 FPGA in full reconfiguration or to a partial reconfiguration region.
52
53 The Device Tree FPGA Region support (of-fpga-region.c) handles
54 reprogramming FPGAs when device tree overlays are applied.
55

3. 한국어 전문 번역

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

FPGA subsystem의 설계 원칙

1-20

문서 제목은 `Introduction`입니다. FPGA subsystem은 Linux에서 FPGA를 동적으로 reprogramming하는 기능을 지원합니다.

Subsystem은 vendor-agnostic하게 설계되며, userspace interface와 enumeration을 담당하는 upper layer를 특정 FPGA programming 방법을 아는 lower layer에서 분리합니다.

Upper layer와 lower layer 사이에서 code를 공유하지 않아야 합니다. 공유가 필요해 보인다면 다른 사용자도 활용할 framework 기능으로 일반화할 가능성이 큽니다. 이 경우 `linux-fpga` mailing list와 maintainer에게 문의해 폭넓게 재사용할 해결책을 찾아야 합니다.

새 code를 추가할 때는 미래의 재사용을 고려해 설계해야 합니다.

FPGA subsystem layer 분리
Userspace interface와 enumerationVendor-agnostic FPGA frameworkManager·bridge·region 공통 contractDevice-specific low-level driver특정 FPGA programming hardware

Vendor-neutral upper layer와 device-specific lower layer의 책임 경계입니다.

FPGA Manager

21-30

새 FPGA 또는 새 FPGA programming 방법을 추가한다면 FPGA Manager subsystem을 사용합니다. Low-level FPGA manager driver는 특정 device를 programming하는 방법을 알고 있습니다.

이 subsystem은 `fpga-mgr.c`의 framework와 여기에 등록되는 low-level driver로 구성됩니다.

FPGA Bridge

31-41

FPGA bridge는 programming 중 FPGA 또는 FPGA region 밖으로 의도하지 않은 signal이 나가는 것을 막습니다. Programming 전에 disable되고 완료 후 다시 enable됩니다.

Bridge는 CPU로 가는 bus를 gate하는 실제 hardware일 수도 있고, FPGA fabric에서 partial reconfiguration region을 둘러싼 soft 또는 `freeze` bridge일 수도 있습니다. Subsystem은 `fpga-bridge.c`와 여기에 등록되는 low-level driver로 구성됩니다.

FPGA Region

42-54

FPGA framework에 새 interface를 추가할 때는 FPGA region 위에 구현합니다.

`fpga-region.c`의 FPGA Region framework는 manager와 bridge를 reconfigurable region으로 연결합니다. Region은 full reconfiguration에서는 FPGA 전체를, partial reconfiguration에서는 일부 region을 나타낼 수 있습니다.

`of-fpga-region.c`의 Device Tree FPGA Region 지원은 device tree overlay가 적용될 때 FPGA reprogramming을 처리합니다.

FPGA subsystem 구성 요소
구성 요소책임핵심 구현
FPGA Manager특정 device programmingfpga-mgr.c
FPGA BridgeProgramming 중 signal 격리fpga-bridge.c
FPGA RegionManager와 bridge를 reconfigurable 영역으로 연결fpga-region.c
DT Region supportOverlay 적용 시 reprogramming과 enumerationof-fpga-region.c

Manager, bridge, region의 핵심 책임을 비교합니다.