日期:2014-05-16  浏览次数:20813 次

移植intel的LAN driver source code到Linux kernel中

移植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。 重复定义了该函数。那么,就新的驱动中部分函数更改名字即可。