【发布时间】:2013-02-23 13:42:25
【问题描述】:
我正在寻找编写一个 PWM 驱动程序。我知道有两种方法可以控制硬件驱动程序:
- 用户空间驱动程序。
- 内核空间驱动程序
如果一般情况下(不考虑 PWM 驱动程序的情况),我们必须决定是使用用户空间驱动程序还是内核空间驱动程序。那么除了这些,我们还需要考虑哪些因素呢?
- 用户空间驱动程序可以直接将 /dev/mem 内存映射到其虚拟地址空间,无需上下文切换。
- 用户空间驱动程序不能实现中断处理程序(它们必须轮询中断)。
- 用户空间驱动程序无法执行 DMA(因为可以从内核空间分配支持 DMA 的内存)。
【问题讨论】:
-
安全性:设备节点的文件权限控制用户可以打开/读取/写入设备。文件操作拒绝或允许并发操作。
-
这个决定可能在很大程度上取决于您正在使用什么 PWM 以及使用什么硬件。
-
还要注意你的内核代码必须放在 GPL 下。
标签: linux linux-kernel linux-device-driver embedded-linux