微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

embedded式Linux:内核驱动程序vs用户空间驱动程序

在Linux中使用内核空间或用户空间驱动程序之间进行select时,是否有最佳方法(或至less有一些优缺点)?

例如,假设我正在开发用于感测Sensirion SHT21传感器上湿度的电路板。 我的应用程序将从传感器中读取样本,然后以JSON格式呈现,以供Web应用程序使用。

为了与SHT21传感器“交谈”,我可以:

使用echo sht21 0x40 > /sys/class/i2c-adapter/i2c-0/new_device实例化I2C设备,并通过hwmon访问湿度读数,parsing输出,然后在我的应用程序中使用它

编写我自己的软件,根据数据表执行对/dev/i2c-0 write()和read()操作,并自己计算湿度,然后在我的应用程序中使用它

第一种方法是使用sht21内核驱动程序,后者完全在用户空间中运行。

Linux设备驱动程序,用于embedded式系统中的RS232设备

具有文件保存和顺序文件命名的Linux shell脚本

在linux内核中的内存障碍的目的

分叉进程的零星堆栈指针分段错误

embedded式Linux上的轻量级debugging

我应该去哪一个? 我应该如何select?

为什么打开调用两个参数(struct inode *,struct file *)?

为什么我不应该在系统内存上使用iomap for ARMv6 +?

纳米X(Microwindow)编程指南?

用于embedded式系统的开源video编码器

在busyBox sh中,不能递增填充8的数字

我的头顶上:

Userland方法优点:

更快的开发/更容易调试

如果越野车和碰撞,不能崩溃整个系统

Userland方法缺点:

“表演” – 我将在这里和今天留下一个非常模糊的概念…

就你的申请而言,从这个角度来看:

因为我们可以放心地说,湿度在短时间内不会显着变化,

和/或你的传感器无论如何都有一些不可忽略的滞后现象(只是因为机械的原因,如果有一滴水落在它上面,它不会在一毫秒内消失),

…你可能不打算每毫秒发送一次湿度测量 – 你呢?

…即使你做了,大部分的延迟(如“性能”)将从那个部分,将使它成为一个JSON,将其发送到服务器(这两个显然是为用户的工作), – 虽然可能与你的业务无关,这仍然是用例的一部分 – 由服务器组成的联网条件和处理时间,

总而言之,我会用200%的用户区的方式去做。

内核空间在技术上可能更“有趣”或“有益”,但工程在“乐趣”之前放置“实用”。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐