RNDIS的usb网卡功能调试

很久没有写博客了,前几天完成了rndis的usb网卡的移植和调试,觉得有必要记录下些东西,便在博客上作些记录。

折腾了好几天,终于给高通8250的linux内核加上了rndis的usb网卡功能,并保留了u盘和adb功能。总结几点经验。 
1. 不改动影响面广的控制器驱动,改动只影响该功能的功能驱动,便于调试。 
2. 从别的设备可以用的usb描述符出发,再逐步增加自己对描述符的改动。 
3. 对协议基础体系的掌握是很重要的,尽量多做逻辑推理和判断,尽量不用调试器,usb逻辑分析仪这些高级的玩艺。 
过程中碰到在linux主机上可以正常识别rndis的usb网卡,但在windows上却不行,搞得郁闷了好几天。后来发现是windows的usb8023.sys这个驱动实现的很不好,对rnids的usb网卡只认接口0和接口1,换成其他的接口都不认,AddDevice时不成功。另外windows 7和windows xp对usb设备的IAD功能支持也让人很不爽,一个可以一个不行,而linux则完全不挑食。 
另外,windows下的驱动开发确实是比较痛苦,太不自由了,linux下调试主机驱动则轻松多了,自由自在,可以深入到系统的任何一个角落。这次对软件自由又多了些体会。

你可能感兴趣的:(RNDIS的usb网卡功能调试)