我应该如何构建一个在一个设备中使用多个芯片的Linux驱动程序?

时间:2013-11-24 00:06:06

标签: linux kernel driver

我有一个硬件设备,由I2C总线上的3个独立芯片组成。我想将它们组合在一起,并将它们作为一个逻辑设备公开给用户。用户可以在/sys中的某个位置看到由单个目录表示的逻辑设备,以及/sys/class/i2c-adapter/i2c-?/*下的I2C芯片所期望的节点。

其中一个芯片是MCP23017,据我所知已经有一个驱动程序(drivers/gpio/gpio-mcp23s08.c),我想重复使用它。另一个芯片是PCA9685,我想为这个使用include/linux/pwm.h中的PWM系统的芯片提供驱动程序。第三个芯片是运行自定义固件的MCU。

我应该如何构建驱动程序集?我的一个想法是注册一个平台驱动程序来呈现逻辑设备,并使用其中的I2C驱动程序。这是一个好方法吗?还有更好的方法吗?

逻辑设备是电机驱动板和IR接收器。我有simple diagram of its structure

我正在寻找创建两个接口。第一个类似于/sys/class/gpio,其中电机可以“导出”,然后通过读写属性访问。这对于s​​hell脚本访问和连接到电机的系统的机械部件的快速调试是有用的。第二个是/dev中的字符设备节点,其中数据可以以二进制格式读取或写入,对应用程序控制更有用。

1 个答案:

答案 0 :(得分:1)

似乎不是通常的设计,你确定你可以访问所有芯片的I2C总线吗?

我认为您应该只能与MCU通信,MCU应该管理其他设备。 否则,为什么MCU在那里? 但是,我看不到你的图表,也许链接是错误的。