linux-2.6.35内核移植—网卡驱动的添加

时间:2021-01-09 12:22:38
 

【实验目的】

       本实验通过在上个实验结果的linux2.6.22.6内核上移植CS89900A网卡驱动,使其可以通过网络nfs的方式挂载在ubantu主机环境上的文件系统,从而实现linux系统的完全启动。

【实验环境】

1、  Ubuntu 10.10发行版

2、  u-boot-2010.03

3、  FS2410平台

4、  交叉编译器 arm-none-linux-gnueabi-gcc-4.3.2

【实验步骤】

       linux-2.6.35内核中有cs8900的驱动,但是这个驱动需要我们修改,这也是第一种支持我们的网卡的方法.另外我们可以移植一个可以使用的cs8900网卡驱动到我们的内核中.这里我们使用第二种方法

       1、解压内核

       $ tar xvf  linux.2.6.35.tar.bz2

       $ cd linux-2.6.35

       2、修改顶层Makefile

       修改

       ARCH                          ?= $(SUBARCH)

CROSS_COMPILE       ?=

ARCH                          ?= arm

CROSS_COMPILE       ?= arm-none-linux-gnueabi-

       3、拷贝配置文件

       $ cp arch/arm/configs/s3c2410_defconfig .config

       4、将cs8900.c和cs8900.h两个文件拷贝到linux-2.6.35/drivers/net/arm/下

       5、修改Kconfig添加cs8900内核配置项

       修改linux-2.6.35/drivers/net/arm/Kconfig添加如下内容:

       config S3C2410_CS8900

              tristate “CS8900 support”

              depends on NET_ETHERNET && ARM && ARCH_SMDK2410

              ---help---

              support for cs8900 chipset base Ethernet cards, if you have a network card of this type.

       6、修改Makefile添加内核编译配置

       修改driver/net/arm/Makefile添加如下内容:

       obj-$(CONFIG_S3C2410_CS8900) += cs8900.o

       7、添加地址映射定义

       修改arch/arm/mach-s3c2410/include/mach/map.h文件,添加如下内容:

       /* CS8900a */

       #define pSMDK2410_ETH_IO     __phys_to_pfn(0x19000000)

       #define vSMDK2410_ETH_IO     0xE0000000

       #define SMDK2410_ETH_IRQ    IRQ_EINT9

       8、添加平台代码

       修改arch/arm/mach-s3c2410/mach-smdk2410.c文件,添加如下内容:

       static struct map_desc smdk2410_iodesc[] __initdata = {

       /* nothing here yet */

       {vSMDK2410_ETH_IO, pSMDK2410_ETH_IO, SZ_1M, MT_DEVICE} //添加内容

       };

       9、配置内核,使之支持cs8900网卡

       $ make menuconfig

              Kernel Features  --->   //使用EABI工具链这两项是必须选择的

                      [*] Use the ARM EABI to compile the kernel

                     [*]   Allow old ABI binaries to run with this kernel (EXPERIMENTAL) (NEW)

              Device Drivers  --->

                     [*] Network device support  --->

                            [*]   Ethernet (10 or 100Mbit)  --->

                                   <*>   CS8900 support

       10、重新编译内核

       $ make zImage

       11、拷贝zImage到tftpboot目录下并重新启动开发板

       $ cp  arch/arm/boot/zImage  /tftpboot      

 

注意:这是通过在线调试  也可以直接下到目标板上去执行