分类: 嵌入式
2010-01-10 17:29:40
文件:
cs8900-linux2.6.24-kevin.tar.bz2
大小:
6KB
下载:
下载
Linux
【平台信息】
目标板(Nano2410)------------------------
CPU: S
SDRAM: HY57V561620(32MB)
FLASH: K
NET: CS8900
HOST---------------------------------------
Linux Realse Version: Fecora Cor 8 (FC8)
CrossCompiler: gcc-
在之前的内核移植基础上,
继续进行CS8900网卡驱动移植。
【移植步骤】
1. 将准备好的cs8900.c, cs8900.h复制到drivers/net/arm文件夹下。(注意,网上大部分cs8900驱动都是针对
2. 新建文件smdk2410.h
[kevin@localhost arch-s
/kevin/linux-
[kevin@localhost arch-s
添加如下代码:
#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.
[kevin@localhost mach-s
/kevin/linux-
[kevin@localhost mach-s
include刚才建立的头文件smdk2410.h
#include
在map_desc smdk2410_iodesc[]
中添加cs8900的对于的io空间映射
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中增加menu config中CS8900编译选项
[kevin@localhost arm]$ pwd
/kevin/linux-
[kevin@localhost arm]$ vim 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.
这样,在编译配置菜单”Menu config”中的Ethernet网络设备中就可以找到”CS8900 support”的选项了。
5. 在/drivers/net/arm/Makefile中添加
obj-$(CONFIG_ARM_CS8900) += cs8900.o
6. 执行menu config。 Device drivers->network device support->Ethernet中选择(*)CS8900 support.
7. 编译内核 make zImage
8. 将生成的uImage重新download到开办板SDRAM中再来看看启动信息。
Uncompressing Linux................................................................................................... done, booting the kernel.
Linux version
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=00007177
Machine: SMDK2410
Memory policy: ECC disabled, Data cache writeback
CPU S
S
S
CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128
Kernel command line: console=ttySAC0,115200 root=/dev/nfs init=/linuxrc nfsroot=192.168.0.104:/nano2410/root ip=192.168.0.69:192.168.0.104:192.168.0.1:255.255.255.0:
irq: clearing pending ext status 00000200
irq: clearing subpending status 00000002
PID hash table entries: 128 (order: 7, 512 bytes)
timer tcon=00500000, tcnt a509, tcfg 00000200,00000000, usec 00001e
Console: colour dummy device 80x30
console [ttySAC0] enabled
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 32MB = 32MB total
Memory: 29196KB available (2836K code, 296K data, 116K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 64 bytes
NET: Registered protocol family 16
S
S
S
DMA channel 0 at c2800000, irq 33
DMA channel 1 at c2800040, irq 34
DMA channel 2 at c2800080, irq 35
DMA channel 3 at c
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 1024 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
TCP
NetWinder Floating Point Emulator V0.97 (double precision)
JFFS2 version 2.2. (NAND) 漏 2001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
s
s
lp: driver loaded but no devices found
ppdev: user-space parallel port driver
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
s
s
s
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
loop: module loaded
Cirrus Logic CS
eth0: CS
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
S
s
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit)
Scanning device for bad blocks
Creating 4 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00100000 : "U-Boot"
0x00100000-0x00400000 : "Linux Kernel"
0x00400000-0x
0x
usbmon: debugfs is not available
s
s
s
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
mice: PS/2 mouse device common for all mice
S
s
s
s
S
s
TCP cubic registered
NET: Registered protocol family 1
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
IP-Config: Complete:
device=eth0, addr=192.168.0.69, mask=255.255.255.0, gw=192.168.0.1,
host=www, domain=, nis-domain=kevin.com,
bootserver=192.168.0.104, rootserver=192.168.0.104, rootpath=
Looking up
Root-NFS: Unable to get nfsd port number from server, using default
Looking up
Root-NFS: Unable to get mountd port number from server, using default
Ok, 在linux host系统日志中/var/log/messages中我们可以看到来自target board的网络连接请求信息:
Mar 29 17:35:38 localhost mountd[12381]: authenticated mount request from 192.168.0.69:736 for /nano2410/root (/nano2410/root)
网卡驱动移植成功!
下一步工作:制作rootfs!