I2C通信和轮询

I2C通信和轮询,c,linux,embedded,polling,i2c,C,Linux,Embedded,Polling,I2c,我正在开发一款HummingBoard Pro(Armbian) 我想用I2C与外设通话。我阅读了数据表,发现它在地址0xff处提供了数据流。 所以我写了一个工具,定期检查数据是否可用并打印出来 这是司机吗 如果它是一个驱动程序,它应该像其他程序一样在用户空间中运行吗 是否有替代方法(以避免轮询外围设备) 首先,您需要将外围设备添加到Linux设备树中,以便您的Linux系统知道它在那里。我用Zynq 7000处理系统做了一个类似的应用。这是假设您的体系结构允许您的处理器使用Linux直接与外

我正在开发一款HummingBoard Pro(Armbian)

我想用I2C与外设通话。我阅读了数据表,发现它在地址
0xff
处提供了数据流。 所以我写了一个工具,定期检查数据是否可用并打印出来

  • 这是司机吗
  • 如果它是一个驱动程序,它应该像其他程序一样在用户空间中运行吗
  • 是否有替代方法(以避免轮询外围设备)

首先,您需要将外围设备添加到Linux设备树中,以便您的Linux系统知道它在那里。我用Zynq 7000处理系统做了一个类似的应用。这是假设您的体系结构允许您的处理器使用Linux直接与外围设备通信。

这是Xilinx资源。它有一个将i2c设备添加到设备树以使用Cadence i2c驱动程序进行访问的示例。Cadence I2C驱动程序在许多平台上使用。您应该检查蜂鸟Pro驱动程序的兼容性

我假设您想要使用Linux I2C设备接口。这是我使用的方法,我认为这是最简单的方法。我建议您看看这个,了解一下软件方面涉及到的内容。

我假设您知道用户空间和内核空间之间的区别,以及如何在用户空间应用程序中使用设备驱动程序。如果没有,我建议您看看这些Xilinx资源,我认为这些资源非常适合嵌入式软件设计师。

您正在使用哪个平台?哪个处理器,哪个操作系统?为什么这很重要?这很重要,因为您使用的术语只与Linux编程相关,但不要在问题的任何地方提到您正在使用Linux。而大多数使用I2C的系统都是使用裸机或RTO的微控制器应用程序。谢谢。。我运行top,它使用10%的cpu。是因为它在用户空间中运行吗?我应该以某种方式在内核空间中移动它吗?