碧波液压网 欢迎你,游客。 登录 注册

S3C2410网卡CS8900A驱动程序的移植及问题解析

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。

  第一部分 网卡CS8900A驱动程序的移植

  一、从网上将Linux内核源代码下载到本机上,并将其解压:

  #tar jxf linux-2.6.11.1.tar.bz2

  二、打开内核顶层目录中的Makefile文件,这个文件中需要修改的内容包括以下两个方面。

  (1)指定目标平台。

  移植前:

  ARCH?= $(SUBARCH)

  移植后:

  ARCH :=arm

  (2)指定交叉编译器。

  移植前:

  CROSS_COMPILE ?=

  移植后:

  CROSS_COMPILE :=/opt/crosstool/arm-s3c2410-linux-gnu/gcc-3.3.4-glibc-2.3.3/bin/arm-s3c2410-linux-gnu-

  注:这里假设编译器就放在本机的那个目录下。

  三、添加驱动程序源代码,这涉及到以下几个方面。

  (1)、从网上下载了cs8900.c和cs8900.h两个针对2.6.7的内核的驱动程序源代码,将其放在drivers/net/arm/目录下面。

  #cp cs8900.c ./drivers/net/arm/

  #cp cs8900.h ./drivers/net/arm/

  并在cs8900_probe()函数中,memset (&priv,0,sizeof (cs8900_t));函数之后添加如下两条语句:

  __raw_writel(0x2211d110,S3C2410_BWSCON);

  __raw_writel(0x1f7c,S3C2410_BANKCON3);

  注:其原因在"第二部分"解释。

  (2)、修改drivers/net/arm/目录下的Kconfig文件,在最后添加如下内容:

  Config ARM_CS8900

  tristate "CS8900 support"

  depends on NET_ETHERNET && ARM && ARCH_SMDK2410

  help

  Support for CS8900A chipset based Ethernet cards. If you have a network (Ethernet) card of this type, say Y and read the Ethernet-HOWTO, available from as well as .

  To compile this driver as a module, choose M here and read

  . The module will be

  called cs8900.o.

  注:内核系统配置文件由2.4版本的config.in变成了2.6版本Kconfig文件,在这个文件里面添加如上内容,则在运行make menuconfig或者make xconfig命令的时候就会出现:

  [ ] CS8900 support

  这一选项。

  (3)、修改drivers/net/arm/目录下的Makefile文件,在最后添加如下内容:

  obj-$(CONFIG_ARM_CS8900) += cs8900.o

  注:2.6版本内核的Makefile文件也与2.4版本的有所不同。添加以上语句,就会使内核在编译的时候根据配置将cs8900A的驱动程序以模块或静态的方式编译到内核当中。

  (4)、在/arch/arm/mach-s3c2410/mach-smdk2410.c文件中,找到smdk2410_iodesc[]结构数组,添加如下如下内容:{vSMDK2410_ETH_IO, 0x19000000, SZ_1M, MT_DEVICE}

  修改之后变成了:

  static struct map_desc smdk2410_iodesc[] __initdata = {

  /* nothing here yet */

  /* Map the ethernet controller CS8900A */ {vSMDK2410_ETH_IO, 0x19000000, SZ_1M, MT_DEVICE}

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论