← Documents Documentation/i2c/ten-bit-addresses.rst GitHub 원문 ↗

Linux 6.18.37 · I2C

I2C Ten-bit Addresses

I2C 10비트 주소의 별도 Linux 사용자 주소 공간과 버스 드라이버·자동 감지·사용자 도구의 지원 한계를 설명합니다.

Source pathDocumentation/i2c/ten-bit-addresses.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약·해설

ten-bit-addresses.rst:1-33

Linux는 7비트 주소와 구분하기 위해 10비트 주소를 사용자 공간의 `0xa000`~`0xa3ff`에 매핑합니다. 지원은 최소 수준이므로 컨트롤러, 버스 드라이버와 사용자 도구의 실제 기능을 확인해야 합니다.

문서 개요
항목
SourceDocumentation/i2c/ten-bit-addresses.rst
분량33 source lines
프로토콜 주소 폭10 bits
사용자 표시 범위0xa000-0xa3ff

원문 분량과 핵심 검토 대상을 요약합니다.

핵심 흐름
10비트 프로토콜 주소 확인사용자 표시 주소로 매핑버스 드라이버 지원 확인명시적으로 장치 생성도구와 전송 동작 검증

문서의 주요 판단과 동작을 압축합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 =====================
2 I2C Ten-bit Addresses
3 =====================
4
5 The I2C protocol knows about two kinds of device addresses: normal 7 bit
6 addresses, and an extended set of 10 bit addresses. The sets of addresses
7 do not intersect: the 7 bit address 0x10 is not the same as the 10 bit
8 address 0x10 (though a single device could respond to both of them).
9 To avoid ambiguity, the user sees 10 bit addresses mapped to a different
10 address space, namely 0xa000-0xa3ff. The leading 0xa (= 10) represents the
11 10 bit mode. This is used for creating device names in sysfs. It is also
12 needed when instantiating 10 bit devices via the new_device file in sysfs.
13
14 I2C messages to and from 10-bit address devices have a different format.
15 See the I2C specification for the details.
16
17 The current 10 bit address support is minimal. It should work, however
18 you can expect some problems along the way:
19
20 * Not all bus drivers support 10-bit addresses. Some don't because the
21 hardware doesn't support them (SMBus doesn't require 10-bit address
22 support for example), some don't because nobody bothered adding the
23 code (or it's there but not working properly.) Software implementation
24 (i2c-algo-bit) is known to work.
25 * Some optional features do not support 10-bit addresses. This is the
26 case of automatic detection and instantiation of devices by their,
27 drivers, for example.
28 * Many user-space packages (for example i2c-tools) lack support for
29 10-bit addresses.
30
31 Note that 10-bit address devices are still pretty rare, so the limitations
32 listed above could stay for a long time, maybe even forever if nobody
33 needs them to be fixed.
34

3. 한국어 전문 번역

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

7비트와 10비트 주소 공간

1-16

I2C 프로토콜에는 일반 7비트 장치 주소와 확장된 10비트 장치 주소가 있습니다. 두 주소 집합은 서로 겹치지 않습니다. 7비트 주소 `0x10`과 10비트 주소 `0x10`은 서로 다른 주소이며, 한 장치가 둘 모두에 응답하도록 구현될 수는 있습니다.

사용자에게 모호하지 않게 보이도록 Linux는 10비트 주소를 별도 사용자 주소 공간 `0xa000`~`0xa3ff`에 매핑합니다. 앞의 `0xa`는 10을 나타내며 10비트 모드임을 표시합니다.

이 매핑은 sysfs 장치 이름을 만들 때 사용하고, sysfs의 `new_device` 파일로 10비트 장치를 생성할 때도 필요합니다.

10비트 주소 장치와 주고받는 I2C 메시지는 7비트 주소 메시지와 형식이 다릅니다. 세부 전송 형식은 I2C 규격을 참조해야 합니다.

I2C 주소 공간 구분
주소 종류프로토콜 값Linux 사용자 표시
7-bit`0x00`~`0x7f` 범위그 주소 그대로7-bit `0x10` → `0x10`
10-bit`0x000`~`0x3ff``0xa000`~`0xa3ff`10-bit `0x010` → `0xa010`

프로토콜 주소와 Linux 사용자 표시 주소를 분리합니다.

10비트 장치의 sysfs 생성
10비트 프로토콜 주소 확인주소에 10비트 모드 접두 영역 `0xa000` 적용`new_device`에 장치 이름과 매핑 주소 기록sysfs 장치 이름도 `0xa000`~`0xa3ff` 공간 사용

실제 10비트 주소를 사용자 표시 값으로 바꿉니다.

=====================
I2C Ten-bit Addresses
=====================

The I2C protocol knows about two kinds of device addresses: normal 7 bit
addresses, and an extended set of 10 bit addresses. The sets of addresses
do not intersect: the 7 bit address 0x10 is not the same as the 10 bit
address 0x10 (though a single device could respond to both of them).
To avoid ambiguity, the user sees 10 bit addresses mapped to a different
address space, namely 0xa000-0xa3ff. The leading 0xa (= 10) represents the
10 bit mode. This is used for creating device names in sysfs. It is also
needed when instantiating 10 bit devices via the new_device file in sysfs.

I2C messages to and from 10-bit address devices have a different format.
See the I2C specification for the details.

현재 10비트 주소 지원의 한계

17-33

현재 10비트 주소 지원은 최소 수준입니다. 기본 동작은 가능해야 하지만 실제 사용 중 문제가 생길 수 있습니다.

모든 버스 드라이버가 10비트 주소를 지원하지는 않습니다. 하드웨어 자체가 지원하지 않는 경우가 있으며 SMBus는 10비트 주소 지원을 요구하지 않습니다. 코드를 추가한 사람이 없거나 구현이 제대로 동작하지 않는 경우도 있습니다. 소프트웨어 구현인 `i2c-algo-bit`는 동작하는 것으로 알려져 있습니다.

일부 선택 기능도 10비트 주소를 지원하지 않습니다. 예를 들어 드라이버가 장치를 자동 감지하고 생성하는 기능은 10비트 주소를 처리하지 못합니다.

`i2c-tools`를 비롯한 많은 사용자 공간 패키지도 10비트 주소 지원이 없습니다.

10비트 주소 장치는 여전히 매우 드물기 때문에 필요로 하는 사람이 수정하지 않으면 이런 제약은 오랫동안, 어쩌면 계속 남을 수 있습니다.

10비트 주소 지원 제약
계층제약비고
컨트롤러 하드웨어10비트 주소 미지원 가능SMBus는 지원을 요구하지 않음
버스 드라이버코드 부재 또는 불완전 가능`i2c-algo-bit`는 동작 확인
선택 기능자동 감지·생성 미지원명시적 생성 필요
사용자 공간도구 지원 부족`i2c-tools` 포함

문제가 생길 수 있는 계층과 알려진 상태입니다.

The current 10 bit address support is minimal. It should work, however
you can expect some problems along the way:

* Not all bus drivers support 10-bit addresses. Some don't because the
  hardware doesn't support them (SMBus doesn't require 10-bit address
  support for example), some don't because nobody bothered adding the
  code (or it's there but not working properly.) Software implementation
  (i2c-algo-bit) is known to work.
* Some optional features do not support 10-bit addresses. This is the
  case of automatic detection and instantiation of devices by their,
  drivers, for example.
* Many user-space packages (for example i2c-tools) lack support for
  10-bit addresses.

Note that 10-bit address devices are still pretty rare, so the limitations
listed above could stay for a long time, maybe even forever if nobody
needs them to be fixed.