首页 / 操作系统 / Linux / Linux 2.6.35内核配置和网卡驱动添加
【环境】1:Ubuntu 10.102:u-boot-2010.033:linux-2.6.354:优龙FS24105:交叉编译器:arm-none-linux-gnueabi-gcc version 4.3.2
1)解压内核tar jxf linux-2.6.35.tar.bz2
2)修改顶层Makefileww.linuxidc.com@linuxidc:~/win/linux-2.6.35$ vim Makefile 修改191和192行(可以先找到编译器的绝对路径)ARCH ?= armCROSS_COMPILE ?= /home/tony/toolchain/bin/arm-none-linux-gnueabi- 3)拷贝配置文件 ww.linuxidc.com@linuxidc:~/win/linux-2.6.35$ cp arch/arm/configs/s3c2410_defconfig .config 4)配置内核ww.linuxidc.com@linuxidc:~/win/linux-2.6.35$ make menuconfig查看类型是否为S3C2410System Type ---> ARM system type (Samsung S3C2410, S3C2412, S3C2413, ……) --->用新交叉编译器需选择EABI Kernel Features ---> [*] Use the ARM EABI to compile the kernel [*] Allow old ABI binariesto run with this kernel (EXPERIMENTAL) (NEW) 5)将cs8900.c和cs8900.h两个文件拷贝到linux-2.6.35/drivers/net/arm/下 6)修改linux-2.6.35/drivers/net/arm/vim Kconfig,添加cs8900内核配置项添加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 networkcard of this type. 7)修改linux-2.6.35/drivers/net/arm/vim Makefile添加:obj-$(CONFIG_S3C2410_CS8900) += cs8900.o 8)添加地址映射定义修改文件:linux-2.6.35/arch/arm/mach-s3c2410/include/mach$vim map.h添加:/* CS8900a */#define pSMDK2410_ETH_IO __phys_to_pfn(0x19000000)#define vSMDK2410_ETH_IO 0xE0000000#define SMDK2410_ETH_IRQ IRQ_EINT9 9)添加平台代码修改文件:linux-2.6.35/arch/arm/mach-s3c2410$vim mach-smdk2410.c在59行添加一句:57 static struct map_desc smdk2410_iodesc[]__initdata = {58 /*nothing here yet */59 {vSMDK2410_ETH_IO, pSMDK2410_ETH_IO, SZ_1M, MT_DEVICE}60};
10)配置内核,使之支持cs8900网卡 ww.linuxidc.com@linuxidc:~/win/linux-2.6.35$ make menuconfigDevice Drivers ---> [*] Network device support ---> [*] Ethernet (10 or 100Mbit) ---> <*> CS8900 support 11)重新编译内核ww.linuxidc.com@linuxidc:~/win/linux-2.6.35$ make zImage********************************************************************** 备注:如果想生成uImage **** cp u-boot-2010.03/tools/mkimge /usr/bin/ **********************************************************************
12)拷贝zImage到tftpboot目录进行测试ww.linuxidc.com@linuxidc:~/win/linux-2.6.35$cp arch/arm/boot/zImage /tftpboot
13)在开发板设置参数setenv serverip 192.168.7.103
setenv ipaddr 192.168.7.163
setenv gatewayip 192.168.7.1
setenv ethaddr 08:00:3e:26:0a:5b
setenv bootcmd tftp 30800000 uImage ; bootm
/*** setenv bootcmd tftp 33000000 zImage ; go 33000000 如果用zImage用这个***/
setenv bootargs console=ttySAC0,115200 init=/linuxrc root=/dev/nfs nfsroot=192.168.7.103:/opt/filesystem ip=192.168.7.163
测试前提:已配置好TFTP、NFS服务注①:/opt/filesystem为自己的已移植好的文件系统目录注②:serverip为Ubuntu的IP,ipaddr为开发板的IP
14)如果想烧写到nand flash,让内核从nand启动,依次设置如下u-boot参数tftp 33000000 uImage
nand erase 40000 300000
nand write 33000000 40000 300000
setenv bootcmd nand read 33000000 40000 300000 ; bootm 33000000