【发布时间】:2016-05-06 21:44:56
【问题描述】:
在 Linux 中选择使用内核空间或用户空间驱动程序时,是否有最佳方法(或至少有一些优点和缺点)?
例如,假设我正在开发一个基于 Sensirion SHT21 传感器的湿度感应板。我的应用程序将从传感器读取样本,然后以 JSON 形式呈现给 Web 应用程序使用。
为了与 SHT21 传感器“交谈”,我可以:
- 使用
echo sht21 0x40 > /sys/class/i2c-adapter/i2c-0/new_device实例化I2C 设备并通过hwmon访问湿度读数,解析输出,然后在我的应用程序中使用它 - 编写我自己的软件来执行所需的(根据数据表)
write()和read()对/dev/i2c-0的操作并自己计算湿度,然后在我的应用程序中使用它
第一种方法使用sht21 内核驱动程序,后者完全在用户空间中工作。
我应该选择哪一个?我该如何选择?
【问题讨论】:
标签: linux linux-kernel embedded-linux