环境:Linux-3.5,雷凌MT7601U模组网卡,tiny4412板子
一、 获得源码。
网卡插开发板上(或者连入虚拟机,这个没有试过,感觉应该可以),在uboot命令行下,lsusb,就会出现WiFi的产品芯片,百度一下产品芯片,应该能知道该芯片用的是哪一个公司的模组,然后到对应模组公司下载Linux下的驱动源码,如本例子里是MT7601U,下完源码,在Linux下解压出来。
二、修改移植
1. 首先在common/rtusb_dev_id.c文件中修改USB_DEVICE_ID rtusb_dev_id[],也就是增加所用产品芯片到module table 中,如果不知道在哪个文件中,可以建立一个source insight工程,然后搜索USB_DEVICE_ID关键字,排除一些文件应该就能够找你到响应的文件。在rtusb_dev_id[]中找到#ifdef MT7601U定义的地方,仿造别人的方法加一个自己的WiFi下信息,如增加{USB_DEVICE(0x148f,0x760b)}, /* MT 6370 */。
2.有时候源码中会忘记关闭debug打印信息,这导致我们安装模块时,会不停的打印出调试信息,阻碍我们输入东西。可能不同的板子会打印出不同的信息,但是可以在source inside下搜索打印语气的地方,然后前后分析一下打印原因,就可以关闭debug。本例子中有一个地方需要关闭。也就是include/os/rt_linux.h中在
1558 后面加上两句话,变成如下:
1558 #include "os/rt_os.h"
1559 #undef DBGPRINT
1560 #define DBGPRINT(aa, arg ...)
1561 #endif /* __RT_LINUX_H__ */
3. 打开REDME文件,或者类似文件,里面有移植介绍。虽然有可能更新跟不上,但是这是我们最好的帮助了。因为READEME文档很有可能更新跟不上产品,所有需要在参考过程中理性的去思考到底要不要去做这一步。这里需要修改:
PLATFORM = PC ,改成自己板子的类型,如果是三星的板子则改成PLATFORM = SMDK;
修改内核源码路径,和编译器类型。编译内核需要依赖源码,同时要交叉编译,这个需要去确认源码中所用的是否与自己实际用的板子一样,一般源码会默认设置成支持x86的。在当前文件中搜索CROSS_COMPI