文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>GEC2410开发板在linux2.6.26内核下CS8900驱动程序..

GEC2410开发板在linux2.6.26内核下CS8900驱动程序..

时间:2009-07-28  来源:yuanfu

一、移植前说明     交叉编译器为arm-linux-gcc-3.4.5,虚拟机上安装的Ubuntu8.04,目标板是GEC2410,网卡芯片是CS8900A—CQ3Z。 二、移植步骤     1、把cs8900.c,cs8900.h拷贝到drivers/net/arm目录下。(其程序附录如下)         
文件: cs8900驱动.rar
大小: 6KB
下载: 下载
    2. 新建文件smdk2410.h
    #vi linux-2.6.26/include/asm-arm/arch-s3c2410/smdk2410.h(此步骤将会在asm/arch/下生成一个smdk2410.h的链接 ,所以当需要该头文件只需#inlcude “asm/arch/smdk2410.h” )

   添加如下代码:
   #ifndef _INCLUDE_SMDK2410_H_
   #define _INCLUDE_SMDK2410_H_
   #define pSMDK2410_ETH_IO        __phys_to_pfn(0x19000000)
   #define vSMDK2410_ETH_IO        0xE0000000
   #define SMDK2410_EHT_IRQ        IRQ_EINT9
   这些宏在cs8900.c中要用到。

  3. 修改mach-smdk2410.c.
  #vi linux-2.6.26/arch/arm/mach-s3c2410/mach-smdk2410.c
  添加刚才建立的头文件smdk2410.h
  #include “asm/arch/smdk2410.h”

  在map_desc smdk2410_iodesc[]结构数组中添加cs8900的对于的io空间的映射,添加内容如下:
{vSMDK2410_ETH_IO,pSMDK2410_ETH_IO, SZ_1M, MT_DEVICE}
修改后内容如下:
static struct map_desc smdk2410_iodesc[] __initdata = {
      /* nothing here yet */
      { vSMDK2410_ETH_IO , pSMDK2410_ETH_IO, SZ_1M, MT_DEVICE },
};

4. 修改drivers/net/arm/目录下的Kconfig文件,增加menuconfig中CS8900的编译选项,
#vi linux-2.6.26/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.

这样,在编译配置菜单”Menuconfig”中的Ethernet网络设备中就可以找到”CS8900 support”的选项了。

5. 在/drivers/net/arm/Makefile中添加
     obj-$(CONFIG_ARM_CS8900)        += cs8900.o


6. 执行make menuconfig。
Device drivers
    ->network device support
         ->Ethernet中选择(*)CS8900 support.

7.编译内核,

  $make

  出现

drivers/net/arm/cs8900.c:558: error: implicit declaration of function `unregister_chrdev',

在cs8900.c的文件中,写入 extern void unregister_chrdev(unsigned int,const char *);即可。

8.将新生成的uImage,下载到开发板,可以看到启动信息如下:

Cirrus Logic CS8900A driver for Linux (Modified for SMDK2410)

eth0: CS8900A rev E at 0xe0000300 irq=53, addr: 00: 0:3E:26:0A: 0

 

设置好nfs启动参数之后,linux系统就起来了。


 

相关阅读 更多 +
排行榜 更多 +
宝宝切水果安卓版

宝宝切水果安卓版

休闲益智 下载
儿童脑筋急转弯

儿童脑筋急转弯

休闲益智 下载
袭击现场2

袭击现场2

飞行射击 下载