요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
Introduction
============
The FPGA subsystem supports reprogramming FPGAs dynamically under
Linux. Some of the core intentions of the FPGA subsystems are:
* The FPGA subsystem is vendor agnostic.
* The FPGA subsystem separates upper layers (userspace interfaces and
enumeration) from lower layers that know how to program a specific
FPGA.
* Code should not be shared between upper and lower layers. This
should go without saying. If that seems necessary, there's probably
framework functionality that can be added that will benefit
other users. Write the linux-fpga mailing list and maintainers and
seek out a solution that expands the framework for broad reuse.
* Generally, when adding code, think of the future. Plan for reuse.
The framework in the kernel is divided into:
FPGA Manager
------------
If you are adding a new FPGA or a new method of programming an FPGA,
this is the subsystem for you. Low level FPGA manager drivers contain
the knowledge of how to program a specific device. This subsystem
includes the framework in fpga-mgr.c and the low level drivers that
are registered with it.
FPGA Bridge
-----------
FPGA Bridges prevent spurious signals from going out of an FPGA or a
region of an FPGA during programming. They are disabled before
programming begins and re-enabled afterwards. An FPGA bridge may be
actual hard hardware that gates a bus to a CPU or a soft ("freeze")
bridge in FPGA fabric that surrounds a partial reconfiguration region
of an FPGA. This subsystem includes fpga-bridge.c and the low level
drivers that are registered with it.
FPGA Region
-----------
If you are adding a new interface to the FPGA framework, add it on top
of an FPGA region.
The FPGA Region framework (fpga-region.c) associates managers and
bridges as reconfigurable regions. A region may refer to the whole
FPGA in full reconfiguration or to a partial reconfiguration region.
The Device Tree FPGA Region support (of-fpga-region.c) handles
reprogramming FPGAs when device tree overlays are applied.
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를 추가할 때는 미래의 재사용을 고려해 설계해야 합니다.
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-41FPGA 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-54FPGA 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을 처리합니다.
Manager, bridge, region의 핵심 책임을 비교합니다.
요약과 해설
intro.rst:1-54FPGA subsystem은 vendor-neutral upper layer와 device-specific programming driver를 분리합니다. Manager가 programming을 수행하고 bridge가 signal을 격리하며 region이 이들을 full 또는 partial reconfiguration 영역으로 결합합니다.