TL;DR

  • ls_i2c는 여러 I2C 버스를 동시에 스캔하고, 50개가 넘는 인식 대상 기기의 모델과 종류를 표시하는 i2cdetect 대체 도구임.
  • 기기 주소를 시작점으로 삼고 WHO_AM_I 레지스터 같은 고유 정보를 대조해 응답 기기를 식별함.
  • 감지된 주소와 기기 정보를 보기 좋게 정리해 출력함.
  • BitBang_I2C 라이브러리에 사용한 코드를 활용해 도구를 구현함.
  • 프로젝트는 단일 .C 파일과 makefile로 구성되며, 저장소를 복제한 뒤 make로 빌드할 수 있음.

어떤 기능을 제공하나

  • ls_i2c는 오래된 리눅스 도구 i2cdetect를 더 편리하고 기능이 풍부하게 대체하는 용도의 I2C 질의 도구임.
  • 여러 I2C 버스를 한 번에 스캔하고, 인식 대상 기기 50종 이상을 자동 감지함.
  • 감지된 주소를 목록으로 표시하며, 지원 대상 기기라면 모델과 종류 정보도 함께 출력함.
  • 기기 주소를 기준으로 삼은 뒤 WHO_AM_I 레지스터 등 고유 정보를 대조해 응답 기기를 판별함.

개발 배경

  • 센서 라이브러리 작업을 진행하면서 여러 리눅스 단일 보드 컴퓨터(SBC)에서 I2C 오버레이를 동작시키는 데 어려움을 겪음.
  • i2cdetect를 여러 차례 실행하는 과정에서 정보를 더 나은 방식으로 표시할 수 있다고 판단함.
  • Arduino BitBang_I2C 라이브러리용으로 작성한 코드를 활용하는 접근이 적절했으며, 그 결과 더 유용하다고 느끼는 도구를 구현함.

출력 비교

  • 같은 컴퓨터와 센서에서 i2cdetect 출력과 ls_i2c 출력을 비교하는 이미지가 제시됨.

시작하기

  • 프로젝트는 단일 .C 파일과 makefile로 구성됨.
  • 저장소를 복제한 뒤 make를 입력해 빌드함.
  • 매개변수 없이 도구를 실행하면 터미널에 사용 안내가 출력됨.