日期:2014-05-16 浏览次数:20813 次
移植inteli350的LAN driver source code到Linux kernel中
问题:
目前在loongson的平台上要验证PCIe总线的功能,DQA的想法是使用一张PCIe的LAN卡插入到PCIe slot上,并测试LAN的功能是否正常。
使用的LAN卡上有两个Intel i350的chip,在插入PCIe卡之后,进入Linux系统可以用lspci查看到PCIe卡。
但是由于没有网卡驱动,所以无法实现lan功能。
所以,在intel官网上找到i350的网卡驱动,igb-5.0.6.tar.gz。
实现方式:
一般情况下,拿到设备驱动source code之后,可以在当前系统下直接make install(参考对应的readme文件)。即可生成驱动,并通过modprobe指令加载驱动。但是,情况很特殊,该龙芯平台的系统中没有kernel的source code,而且由于中科龙芯一直在调试问题,也一直在更新kernel,而file system还是使用原来的一个package。
所以,只能使用这种方式:将igb驱动source code加入到kernel 的source中去,编译kernel的同时,编译相应的驱动。
实现过程:
1、 在kernel code中建立路径/driver/net/igb506/, 并将igb-5.06.tar.gz中的文件解压缩至igb506/中。
2、 在../igb506/中添加Makefile文件,内容如下,将所有的*.c文件加入obj中。
3、 在上层目录中的配置文件/driver/net/kconfig中添加IGB506的选项,以便使用makeconfig的时候可以出现选项给编译者。
4、 同时在上层目录的makefile文件中添加IGB的路径。编辑/driver/net/Makefile
5、 一般情况,以上步骤即可实现移植。但是由于Kernel中原本就有相关intel lan的驱动,新添加的driver可能有一些函数是和其他驱动文件重复的,那么编译的时候会提示:multple definition xxxx。 重复定义了该函数。那么,就新的驱动中部分函数更改名字即可。