对于腾达的这款无线网卡 不仅需要.KO的驱动程序 还需要一个叫firemware固件的二进制文件 驱动程序加载时会将它传给无线网卡 然后才能实现驱动
我的理解是:
.KO驱动是linux操作系统软件层次的驱动 而firmware则是无线网卡本身硬件层次的驱动 这两个接口配套的驱动联合起来才能实现设备的驱动
这种驱动模式不同于简单的驱动:
简单的字符和块设备的驱动方法是 linux软件层次的.KO程序直接对设备的硬件进行操作 硬件可以直接响应.KO程序发来的指令 比如:用.KO程序来控制流水灯 可以直接操作流水灯所在的I/O 而那些流水灯也能直接接受.KO程序的操作 因为LED的亮灭很简单 就是高低电平
而像无线网卡这样的USB设备 .KO程序是无法和硬件直接进行沟通的 因为所有的指令都是通过USB协议传输的 必然需要一个中间层 专门用来将.KO程序的操作转换成真正硬件电路所能接受的高低电平(以及对应的时序)
另一方面 无线网卡这样的设备 它的电路往往较为复杂 不可能仅仅通过USB的两根信号线就能控制了 必然要求这样一个中间层
这个中间层就是固件(firmware) 它运行在无线网卡的控制器里 连接了上位PC机和设备
以上所述 均为我的个人理解 并未广泛验证 我只是从一个硬件设计的角度来看待这种驱动模式 肯定有不正确的地方