저는 Zynq 7000과 함께 zed 보드를 사용하고 있습니다. 궁극적인 목표는 Zynq7000의 물리적 PS에 있는 I2c-0 컨트롤러가 I2c 슬레이브로 작동하도록 하는 것입니다.
내 장치에 대한 Linux 이미지를 생성하기 위해 yocto/bitbake를 사용하고 있습니다. 지금까지 나는 I2c-0 장치 SDA 및 SCK 라인을 zed 보드의 물리적 핀에 매핑할 수 있었습니다. i2c0 장치를 활성화하기 위해 자체 장치 트리로 zynq-7000.dtsi를 덮어썼습니다.
내 보드의 Linux 셸에서 "i2cDetect -l"을 사용하면 다음과 같은 출력을 제공하는 i2c 장치를 볼 수 있습니다.
root@zed-board:~# i2cdetect -l
i2c-0 i2c Cadence I2C at e0004000 I2C adapter
간단한 hello.c 프로그램에서 사용할 수 있습니다.
#include <sys/ioctl.h>
#include <linux/i2c.h>
#include <linux/i2c-dev.h>
i2c 마스터를 사용하여 데이터를 쓰면 핀에서 나오는 데이터를 볼 수 있습니다.
그런데 이 장치를 슬레이브로 구성하는 방법을 모르겠습니다. 케이던스 i2c 드라이버 코드에서 볼 수 있습니다.https://github.com/torvalds/linux/blob/master/drivers/i2c/busses/i2c-cadence.c 슬레이브 모드를 지원합니다. 나는 yocto의 커널 구성 메뉴를 사용하여 i2c 슬레이브 지원을 활성화한 다음 해당 구성을 내 이미지에 추가하여 활성화되도록 했습니다.
사용자 공간 애플리케이션에서 장치를 슬레이브 모드로 전환하고 슬레이브 이벤트에 대한 콜백을 등록하기 위해 무엇을 해야 하는지 모르겠습니다.
어떤 도움이라도 대단히 감사하겠습니다.