免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2134 | 回复: 6

[硬件及驱动] 为什么设备驱动要实现在内核空间中? [复制链接]

论坛徽章:
0
发表于 2014-12-20 00:13 |显示全部楼层
我以前做过一个项目,Linux平台,需要对板子上的i2c设备进行读写,最后都是通过用户空间的i2c读写搞定的,感觉没必要把这部分放到内核中...
那么为什么很多人写驱动需要在内核中实现呢?
我的理解是内核中只要实现总线驱动就可以了,至于设备,它的那些寄存器的设置,只要我们能操作总线,比如i2c, spi, uart,完全可以在用户空间中实现嘛
谁能给解释下?多谢先!

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
发表于 2014-12-20 17:29 |显示全部楼层
放在用户空间中,并发怎么处理?中断怎么处理?

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
发表于 2014-12-20 18:57 |显示全部楼层
回复 1# tomxue0126

你可以看看UIO的方案,已经合入主线了,用户态驱动的实现。
http://lwn.net/Articles/232575/

在用户态实现驱动不是不行,但效率太慢。你想想,一个中断来了,还是**一个进程去处理,怎么也得用毫秒来算吧。


   

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
发表于 2014-12-20 19:01 |显示全部楼层
我觉得最大的问题性能问题。这不,微软把图形库都放内核态去实现了。
但某些特殊情况会有相反的结果,如果我想轮训一个设备,把设备的地址MAP到用户态,直接操作设备,速度反倒是最快的。
因此,一个技术有没优越对比,只有那个更合适具体的场景。

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
发表于 2014-12-21 00:15 |显示全部楼层
还有权限问题。

论坛徽章:
0
发表于 2014-12-21 18:42 |显示全部楼层
DPDK就是基于用户态的驱动,对于要处理大流量的设备,可以用轮询来处理报文的收发。
但是像2楼说的,大部分驱动还得靠中断通知系统。

论坛徽章:
0
发表于 2014-12-22 09:50 来自手机 |显示全部楼层
多谢各位!收获很多。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP