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}
相关文章
- 2024-08-02基于干涉原理的高精度直线度误差测量
- 2022-05-24基于现场总线监测系统的PLC控制制造系统
- 2024-04-10极紫外望远镜各通道夹角的测量
- 2024-06-07电流变液减振器在抑制深孔切削颤振上的研究
- 2024-03-20寄生虚反射对外差干涉椭偏测量的影响



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