漫游纯白技能补丁:LINUX2.6.14下CS8900的移植(Fs2410)
来源:百度文库 编辑:偶看新闻 时间:2024/04/27 14:20:46
from:http://www.ezconnect.cn/viewthread.php?tid=137
LINUX2.6.14下CS8900的移植(Fs2410)
来自wangy0919的Baidu空间。
我在网上找了很久才找到CS8900的原码,现在把它上传,见附件,方便大家使用。我在实验板上试过,CS8900在linux-2.6.14上的移植,很简单,按下面的方法,如果硬件没问题的话,很容易就成功。
1. 拷贝文件cs8900.c cs8900.h到 linux2.6.14.1/drivers/net/
进入目录cs8900
cp cs8900.c ../linux-2.6.14.1/drivers/net/
cp cs8900.h ../linux-2.6.14.1/drivers/net/
2. 修改Kconfig
vi ../linux-2.6.14.1/drivers/net/Kconfig
找到
config NET_ETHERNET
bool "Ethernet (10 or 100Mbit)"
加入以下内容
config ARM_CS8900
tristate "CS8900 support"
depends on NET_ETHERNET && ARM && ARCH_SMDK2410
help
3. 修改Makefile文件
vi ../linux-2.6.14.1/drivers/net/Makefile
找到 obj-$(CONFIG_CS89x0) += cs89x0.o
加入以下内容
obj-$(CONFIG_ARM_CS8900) +=cs8900.o
4.加入cs8900在内存中的位置
在 linux-2.6.14.1/include/asm-arm/arch-s3c2410 中创建regs-cs8900.h ,其内容如下
#ifndef _INCLUDE_REGS_CS8900_H
#define _INCLUDE_REGS_CS8900_H
#i nclude
#define pSMDK2410_ETH_IO 0x19000000
#define vSMDK2410_ETH_IO 0xE0000000 #define SMDK2410_ETH_IRQ IRQ_EINT9 #endif // _INCLUDE_REGS_CS8900_H pSMDK2410_ETH_IO 的具体地址要参考你的实验板,我的试验板是由nGCS3和A24口组合控制芯片的IO读写或内存读写,在我的开发板上是IO读写。虚拟地址参考了系统板自 带内核中设定的地址,没有改动。看网上有人说虚拟地址可以随便设只要不冲突就行,具体是否可行,没有试过,如果有人试过,告述我一声,大家一块学习。呵 呵...中断源也要看你的试验板连了哪跟中断口。5 加入cs8900虚拟地址到物理地址的转换
vi linux-2.6.14.1/arch/arm/mach-s3c2410/mach-smdk2410.c
加入头文件
#i nclude
加入地址转换信息, 找到smdk2410_iodesc[]结构数组,加入
{vSMDK2410_ETH_IO, 0x19000000, SZ_1M, MT_DEVICE},到这里,cs8900的移植就完工了。修改内核选中cs8900,make就可以了。
注意在make zImage后
如果出现在cs8900.c中找不到*/*/smdk2410.h
将其替换成#include
会出进提示vSMDK2410_ETH_IO 没有定义.在cs8900.c中加入以下代码.
///////////////////////////////////////////////
#ifndef _INCLUDE_REGS_CS8900_H
#define _INCLUDE_REGS_CS8900_H
////#include
#define pSMDK2410_ETH_IO 0x19000000
#define vSMDK2410_ETH_IO 0xE0000000
#define SMDK2410_ETH_IRQ IRQ_EINT9
#endif
/////////////////////////////////////////////
保存