/dev/i2c'x'의 i2c 버스 번호는 어떻게 할당됩니까?

/dev/i2c'x'의 i2c 버스 번호는 어떻게 할당됩니까?

나는 방법을 알고 싶다i2cLinux에서 버스 번호는 어떻게 할당됩니까? 우리의 레거시 개발 보드 중 하나에는i2c슬레이브 장치가 연결되었습니다. 프로빙 장치를 사용하면 다음과 같이 i2cdetect표시됩니다./dev/i2c1그리고/dev/i2c3.

무슨 일이에요i2c0그리고i2c1존재하다/개발자? 이 번호는 어떻게 할당되나요? 누구든지 이것에 대해 통찰력을 줄 수 있습니까?

노트: 시작할 때마다 0과 1이 아닌 1과 3만 보이는 것을 관찰했습니다. 이는 모든 출시에 대해 변경되지 않습니다. i2c1과 i2c3을 i20과 i2c1에 심볼릭링크하려면 가능합니까?

답변1

내 시스템에서 i2c 버스는 장치 /dev/i2c-0등입니다. 이를 어댑터라고 하며 커널 문서 파일에 설명된 대로 동적으로 할당됩니다.i2c/dev 인터페이스:

이를 확인하려면 /sys/class/i2c-dev/를 확인하거나 "i2cDetect -l"을 실행해야 합니다. 어댑터 번호는 동적으로 할당되므로 이에 대해 너무 많은 가정을 할 수 없습니다. 한 부팅에서 다른 부팅으로 변경할 수도 있습니다.

sudo i2cdetect -l어떤 버스가 나열된 작업을 수행하는지 또는 다음을 볼 수 있습니다 /sys/class/i2c-dev/.

$ sudo i2cdetect -l|sort
i2c-0   i2c             i915 gmbus ssc                 I2C adapter
i2c-1   i2c             i915 gmbus vga                 I2C adapter
i2c-2   i2c             i915 gmbus panel               I2C adapter
...

$ head /sys/class/i2c-dev/i2c-*/name
==> /sys/class/i2c-dev/i2c-0/name <==
i915 gmbus ssc

==> /sys/class/i2c-dev/i2c-1/name <==
i915 gmbus vga
...

노트: i2c 버스 번호는 일반적으로 동적으로 할당되지만 일부 플랫폼에서는 Linux가 장치 트리의 정보를 사용하여 i2c 어댑터에 특정 번호를 할당합니다. 아마도 일부 마더보드에는 하드웨어 레이아웃을 더 잘 표현하기 위해 특정 버스 번호를 요청하는 플랫폼 드라이버가 유사하게 있을 수 있습니다. 커널 호출은 i2c_add_numbered_adapter().

관련 정보