我正在尝试在从模式下从 i2c 读取和写入数据,并在用户空间中找到了几个执行此操作的示例,包括来自 NXP 的最相关示例(我正在使用 iMX8MQ): https ://source.codeaurora.org/外部/imx/imx-test/tree/test/mxc_i2c_slave_test/mxc_i2c_slave_test.c?h=imx_4.14.78_1.0.0_ga
但是,如果我想读取数据,这将是一个基于轮询的实现,因为当 i2c 数据可用时,i2c-dev 似乎没有提供注册用户空间回调的方法。甚至不确定是否有任何 Linux 设备驱动程序允许这样做。我是否正确假设在从模式下没有非阻塞和异步方式从用户空间读取 i2c ?
我对编写设备驱动程序不是很熟悉,所以即使我想实现自己的,类似于这个: https ://github.com/torvalds/linux/blob/master/drivers/i2c/i2c-slave-eeprom .c 在数据可用时(例如,当驱动程序收到 I2C_SLAVE_STOP 时)调用用户空间函数是个好主意吗?