gpt4 book ai didi

linux - 嵌入式 Linux : kernel drivers vs user space drivers?

转载 作者:太空狗 更新时间:2023-10-29 11:12:48 25 4
gpt4 key购买 nike

在 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 内核驱动程序,后者完全在用户空间中工作。

我应该去哪一个?我该如何选择?

最佳答案

我的头顶:

Userland 方法的优点:

  • 开发速度更快/调试更容易
  • 如果出现错误和崩溃,不会导致整个系统崩溃

Userland 方法的缺点:

  • “表演”——我将把它作为一个非常模糊的概念留在这里,今天……

对于您的应用程序,请正确看待:

  • 因为我们可以放心地打赌湿度在时间短,
  • 和/或你的传感器无论如何都有一些不可忽略的滞后(会它只是出于机械原因,例如一滴水落在它上面,它不会在一毫秒内消失),
  • ...而且您可能不打算每次都发送湿度测量值毫秒 - 你呢?
  • ...即使你这样做了,大部分的延迟(作为“与性能”)将来自使其成为 JSON 的部分,将其发送到服务器(两者显然都是用户空间的工作),以及 - 尽管这可能不关你的事,这仍然是用例的一部分 -服务器的网络条件和处理时间,

...总而言之,我 200% 会采用用户态方法。

内核空间在技术上可能更“有趣”或“有益”,但工程将“务实”放在“有趣”之前。 :-)

关于linux - 嵌入式 Linux : kernel drivers vs user space drivers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37081874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com