【发布时间】:2011-01-18 15:05:14
【问题描述】:
我非常热衷于为微控制器(如 PIC、Atmel 等)编写设备驱动程序。 由于我是这个控制器编码领域的新手,我只想知道为控制器编写设备驱动程序是否与我们为 linux(或任何其他操作系统)编写的相同?
还有人可以推荐一些在线设备驱动程序构建教程吗?
谢谢,
【问题讨论】:
标签: driver device microcontroller
我非常热衷于为微控制器(如 PIC、Atmel 等)编写设备驱动程序。 由于我是这个控制器编码领域的新手,我只想知道为控制器编写设备驱动程序是否与我们为 linux(或任何其他操作系统)编写的相同?
还有人可以推荐一些在线设备驱动程序构建教程吗?
谢谢,
【问题讨论】:
标签: driver device microcontroller
如果您使用的是像 atmega 这样的 AVR MCU,那么您可以将 vusb (https://www.obdev.at/products/vusb/index.html) 用于那些没有任何 HID 的 MCU,并通过将 USB 的 D+ 和 D- 引脚连接到数字 I/O 来处理中断MCU的端口。 atmegaU2 软件包有自己的 USB 通信端口和 HID。
【讨论】:
如果您正在考虑开发设备驱动程序以将您的设备与主机连接(可能使用 USB),那么现在大多数微控制器都会实现依赖本机驱动程序的默认类。
一个具体的例子:
如果您使用 PIC18F4555,您可以使用常规的 HID(人机界面设备)Windows 驱动程序与您的微控制器通信(假设您正确实现了它)。无需开发任何驱动程序。
【讨论】:
为 MCU 编写设备驱动程序与为操作系统编写设备驱动程序相去甚远。大多数 MCU 根本不会运行操作系统。您通常最终会编写一些低级别的中断服务例程 (ISR) 并填充缓冲区,您的应用程序软件最终会清空。您不必适应操作系统定义的任何设备驱动程序范例。您基本上必须阅读您想要与之交互的设备的数据表,并通过它可能使用的任何接口(例如 SPI、I2C、UART 等)读取和写入其内存。最终,设备驱动程序应该为应用软件提供直观的函数调用。
【讨论】: