您的位置:首页 > 运维架构 > Linux

linux-2.6.22 移植DM9000 micro2440 s3c2440 :NETDEV WATCHDOG: eth0: transmit timed out

2017-03-28 15:28 465 查看
linux-2.6.22

micro2440

大体上依据相关博客文章移植

mach-micro2440.c

#include <linux/dm9000.h>

/* DM9000AEP 10/100 ethernet controller */  //定义DM9000 网卡设备的物理基地址,以便后面用到

#define MACH_MICRO2440_DM9000_BASE (S3C2410_CS4 + 0x300)

static struct resource micro2440_dm9000_resource[] = {

        [0] = {

                .start = MACH_MICRO2440_DM9000_BASE,

                .end   = MACH_MICRO2440_DM9000_BASE + 3,

                .flags = IORESOURCE_MEM

        },

        [1] = {

                .start = MACH_MICRO2440_DM9000_BASE + 4,

                .end   = MACH_MICRO2440_DM9000_BASE + 7,

                .flags = IORESOURCE_MEM

        },

        [2] = {

                .start = IRQ_EINT7,

                .end   = IRQ_EINT7,

                .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,

        }

};

/*

 * The DM9000 has no eeprom, and it's MAC address is set by

 *  the bootloader before starting the kernel.

 */

static struct dm9000_plat_data micro2440_dm9000_pdata = {

    .flags          = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),

};

static struct platform_device micro2440_device_eth = {

    .name           = "dm9000",

    .id             = -1,

    .num_resources  = ARRAY_SIZE(micro2440_dm9000_resource),

    .resource       = micro2440_dm9000_resource,

    .dev            = {

        .platform_data  = µ2440_dm9000_pdata,

    },

};

static struct platform_device *micro2440_devices[] __initdata = {
&s3c_device_usb,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c,
&s3c_device_iis,
&s3c_device_nand,
µ2440_device_eth,

};

dm9000.c

static int __init

dm9000_init(void)

{
#if defined(CONFIG_ARCH_S3C2410)
unsigned int oldval_bwscon = *(volatile unsigned int *)S3C2410_BWSCON;
unsigned int oldval_bankcon4 = *(volatile unsigned int *)S3C2410_BANKCON4;
*((volatile unsigned int *)S3C2410_BWSCON) =
(oldval_bwscon & ~(3<<16)) | S3C2410_BWSCON_DW4_16 | S3C2410_BWSCON_WS4 | S3C2410_BWSCON_ST4;
*((volatile unsigned int *)S3C2410_BANKCON4) = 0x1f7c;

#endif 

printk(KERN_INFO "%s Ethernet Driver\n", CARDNAME);

return platform_driver_register(&dm9000_driver);
/* search board and register */

}

生成镜像出现问题:NETDEV WATCHDOG: eth0: transmit timed out

[    2.775000] eth0: link down

[    2.775000] ADDRCONF(NETDEV_UP): eth0: link is not ready

[    3.780000] IP-Config: Complete:

[    3.780000]       device=eth0, addr=192.168.0.200, mask=255.255.255.0, gw=192.168.0.1,

[    3.785000]      host=MICRO2440, domain=, nis-domain=(none),

[    3.790000]      bootserver=192.168.0.104, rootserver=192.168.0.104, rootpath=

[    3.795000] md: Autodetecting RAID arrays.

[    3.800000] md: autorun ...

[    3.805000] md: ... autorun DONE.

[    3.805000] Looking up port of RPC 100003/2 on 192.168.0.104

[    4.775000] eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1

[    4.775000] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

[   10.520000] NETDEV WATCHDOG: eth0: transmit timed out

[   20.520000] NETDEV WATCHDOG: eth0: transmit timed out

[   30.520000] NETDEV WATCHDOG: eth0: transmit timed out

[   38.815000] rpcbind: server 192.168.0.104 not responding, timed out

[   38.815000] Root-NFS: Unable to get nfsd port number from server, using default

[   38.820000] Looking up port of RPC 100005/1 on 192.168.0.104

[   40.520000] NETDEV WATCHDOG: eth0: transmit timed out

[   50.520000] NETDEV WATCHDOG: eth0: transmit timed out

[   60.520000] NETDEV WATCHDOG: eth0: transmit timed out

[   70.520000] NETDEV WATCHDOG: eth0: transmit timed out

[   73.825000] rpcbind: server 192.168.0.104 not responding, timed out

[   73.825000] Root-NFS: Unable to get mountd port number from server, using default

[   80.520000] NETDEV WATCHDOG: eth0: transmit timed out

[   90.520000] NETDEV WATCHDOG: eth0: transmit timed out

[  100.520000] NETDEV WATCHDOG: eth0: transmit timed out

[  108.830000] mount: server 192.168.0.104 not responding, timed out

[  108.830000] Root-NFS: Server returned error -5 while mounting /home/nfs/rootfs

[  108.835000] VFS: Unable to mount root fs via NFS, trying floppy.

[  108.845000] VFS: Cannot open root device "nfs" or unknown-block(2,0)

[  108.845000] Please append a correct "root=" boot option; here are the available partitions:

[  108.850000] 1f00        256 mtdblock0 (driver?)

[  108.855000] 1f01        128 mtdblock1 (driver?)

[  108.860000] 1f02       4096 mtdblock2 (driver?)

[  108.865000] 1f03     257664 mtdblock3 (driver?)

[  108.870000] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)

[  110.520000] NETDEV WATCHDOG: eth0: transmit timed out

[  120.520000] NETDEV WATCHDOG: eth0: transmit timed out

[  130.520000] NETDEV WATCHDOG: eth0: transmit timed out

[  140.520000] NETDEV WATCHDOG: eth0: transmit timed out

[  150.520000] NETDEV WATCHDOG: eth0: transmit timed out
[  160.520000] NETDEV WATCHDOG: eth0: transmit timed out

解决办法:

dm9000.c中添加set_irq_type(dev->irq, IRQT_RISING);    

static int

dm9000_open(struct net_device *dev)

{
board_info_t *db = (board_info_t *) dev->priv;

PRINTK2("entering dm9000_open\n");
set_irq_type(dev->irq, IRQT_RISING);     //添加

if (request_irq(dev->irq, &dm9000_interrupt, IRQF_SHARED, dev->name, dev))
return -EAGAIN;

/* Initialize DM9000 board */
dm9000_reset(db);
dm9000_init_dm9000(dev);

/* Init driver variable */
db->dbug_cnt = 0;

/* set and active a timer process */
init_timer(&db->timer);
db->timer.expires  = DM9000_TIMER_WUT;
db->timer.data     = (unsigned long) dev;
db->timer.function = &dm9000_timer;
add_timer(&db->timer);

mii_check_media(&db->mii, netif_msg_link(db), 1);
netif_start_queue(dev);

return 0;

}

nfs网络挂载成功

setenv bootargs "console=ttySAC0,115200 root=/dev/nfs nfsroot=${serverip}:/home/nfs/rootfs_2440 noinitrd rw nfsvers=3 nolock ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:MICRO2440:eth0:off init=/linuxrc mem=64M"

setenv bootcmd 'tftpboot 0x30007fc0 uImage;bootm 0x30007fc0'

Starting kernel ...

Uncompressing Linux......................................................................................................................... done, booting the kernel.

[    0.000000] Linux version 2.6.22 (roger@server) (gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72) ) #6 Tue Mar 28 15:19:43 CST 2017

[    0.000000] CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177

[    0.000000] Machine: MICRO2440

[    0.000000] Memory policy: ECC disabled, Data cache writeback

[    0.000000] CPU S3C2440A (id 0x32440001)

[    0.000000] S3C244X: core 400.000 MHz, memory 100.000 MHz, peripheral 50.000 MHz

[    0.000000] S3C24XX Clocks, (c) 2004 Simtec Electronics

[    0.000000] CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on

[    0.000000] CPU0: D VIVT write-back cache

[    0.000000] CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets

[    0.000000
acc6
] CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets

[    0.000000] Built 1 zonelists.  Total pages: 16256

[    0.000000] Kernel command line: console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.0.104:/home/nfs/rootfs_2440 noinitrd rw nfsvers=3 nolock ip=192.168.0.200:192.168.0.104:192.168.0.1:255.255.255.0:MICRO2440:eth0:off init=/linuxrc mem=64M

[    0.000000] irq: clearing pending ext status 00000200

[    0.000000] irq: clearing subpending status 00000002

[    0.000000] PID hash table entries: 256 (order: 8, 1024 bytes)

[    0.000000] timer tcon=00500000, tcnt a2c1, tcfg 00000200,00000000, usec 00001eb8

[    0.005000] Console: colour dummy device 80x30

[    0.010000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)

[    0.015000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)

[    0.030000] Memory: 64MB = 64MB total

[    0.030000] Memory: 60672KB available (3508K code, 547K data, 132K init)

[    0.035000] SLUB: Genslabs=22, HWalign=32, Order=0-1, MinObjects=4, CPUs=1, Nodes=1

[    0.135000] Security Framework v1.0.0 initialized

[    0.135000] SELinux:  Disabled at boot.

[    0.135000] Mount-cache hash table entries: 512

[    0.140000] CPU: Testing write buffer coherency: ok

[    0.145000] NET: Registered protocol family 16

[    0.155000] S3C2410 Power Management, (c) 2004 Simtec Electronics

[    0.155000] S3C2440: Initialising architecture

[    0.160000] S3C2440: IRQ Support

[    0.165000] S3C2440: Clock Support, DVS off

[    0.170000] S3C24XX DMA Driver, (c) 2003-2004,2006 Simtec Electronics

[    0.175000] DMA channel 0 at c4800000, irq 33

[    0.180000] DMA channel 1 at c4800040, irq 34

[    0.185000] DMA channel 2 at c4800080, irq 35

[    0.190000] DMA channel 3 at c48000c0, irq 36

[    0.215000] SCSI subsystem initialized

[    0.215000] usbcore: registered new interface driver usbfs

[    0.220000] usbcore: registered new interface driver hub

[    0.225000] usbcore: registered new device driver usb

[    0.230000] NetLabel: Initializing

[    0.230000] NetLabel:  domain hash size = 128

[    0.235000] NetLabel:  protocols = UNLABELED CIPSOv4

[    0.240000] NetLabel:  unlabeled traffic allowed by default

[    0.255000] NET: Registered protocol family 2

[    0.305000] IP route cache hash table entries: 1024 (order: 0, 4096 bytes)

[    0.305000] TCP established hash table entries: 2048 (order: 2, 16384 bytes)

[    0.310000] TCP bind hash table entries: 2048 (order: 1, 8192 bytes)

[    0.315000] TCP: Hash tables configured (established 2048 bind 2048)

[    0.320000] TCP reno registered

[    0.335000] audit: initializing netlink socket (disabled)

[    0.335000] audit(0.335:1): initialized

[    0.390000] VFS: Disk quotas dquot_6.5.1

[    0.390000] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)

[    0.400000] fuse init (API version 7.8)

[    0.405000] io scheduler noop registered

[    0.405000] io scheduler anticipatory registered

[    0.405000] io scheduler deadline registered (default)

[    0.415000] io scheduler cfq registered

[    1.325000] Serial: 8250/16550 driver $Revision: 1.90 $ 32 ports, IRQ sharing enabled

[    1.375000] s3c2440-uart.0: s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2440

[    1.380000] s3c2440-uart.1: s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2440

[    1.390000] s3c2440-uart.2: s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2440

[    1.410000] RAMDISK driver initialized: 16 RAM disks of 65536K size 1024 blocksize

[    1.415000] loop: module loaded

[    1.420000] PPP generic driver version 2.4.2

[    1.420000] tun: Universal TUN/TAP device driver, 1.6

[    1.425000] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>

[    1.430000] dm9000 Ethernet Driver

[    1.945000] eth0: dm9000 at c4802300,c4804304 IRQ 51 MAC: 08:90:90:90:90:90

[    1.950000] S3C24XX NAND Driver, (c) 2004 Simtec Electronics

[    1.955000] s3c2440-nand s3c2440-nand: Tacls=3, 30ns Twrph0=7 70ns, Twrph1=3 30ns

[    1.960000] NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit)

[    1.965000] Scanning device for bad blocks

[    1.995000] Bad eraseblock 758 at 0x05ec0000

[    2.000000] Bad eraseblock 933 at 0x074a0000

[    2.035000] Creating 4 MTD partitions on "NAND 256MiB 3,3V 8-bit":

[    2.035000] 0x00000000-0x00040000 : "bootloader"

[    2.040000] 0x00040000-0x00060000 : "params"

[    2.045000] 0x00060000-0x00460000 : "kernel"

[    2.050000] 0x00460000-0x10000000 : "rootfs"

[    2.060000] s3c2410-ohci s3c2410-ohci: S3C24XX OHCI

[    2.060000] s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1

[    2.065000] s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000

[    2.130000] usb usb1: configuration #1 chosen from 1 choice

[    2.130000] hub 1-0:1.0: USB hub found

[    2.135000] hub 1-0:1.0: 2 ports detected

[    2.240000] mice: PS/2 mouse device common for all mice

[    2.245000] i2c /dev entries driver

[    2.245000] device-mapper: ioctl: 4.11.0-ioctl (2006-10-12) initialised: dm-devel@redhat.com

[    2.250000] TCP cubic registered

[    2.250000] NET: Registered protocol family 1

[    2.260000] NET: Registered protocol family 10

[    2.265000] NET: Registered protocol family 17

[    2.485000] usb 1-1: new full speed USB device using s3c2410-ohci and address 2

[    2.640000] usb 1-1: configuration #1 chosen from 1 choice

[    2.645000] hub 1-1:1.0: USB hub found

[    2.645000] hub 1-1:1.0: 4 ports detected

[    2.775000] eth0: link down

[    2.775000] ADDRCONF(NETDEV_UP): eth0: link is not ready

[    3.780000] IP-Config: Complete:

[    3.780000]       device=eth0, addr=192.168.0.200, mask=255.255.255.0, gw=192.168.0.1,

[    3.785000]      host=MICRO2440, domain=, nis-domain=(none),

[    3.790000]      bootserver=192.168.0.104, rootserver=192.168.0.104, rootpath=

[    3.795000] md: Autodetecting RAID arrays.

[    3.800000] md: autorun ...

[    3.805000] md: ... autorun DONE.

[    3.805000] Looking up port of RPC 100003/2 on 192.168.0.104

[    4.775000] eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1

[    4.775000] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

[    4.820000] Looking up port of RPC 100005/1 on 192.168.0.104

[    4.830000] VFS: Mounted root (nfs filesystem).

[    4.830000] Freeing init memory: 132K

init started: BusyBox v1.7.0 (2017-03-28 09:28:05 CST)

starting pid 821, tty '': '/etc/init.d/rcS'

mount: mounting tmpfs on /dev/shm failed: No such file or directo[    5.555000] devpts: called with bogus options

ry

mount: mounting sysfs on /sys failed: No such file or directory

mkdir: cannot create directory '/dev/pts': File exists

mount: mounting devpts on /dev/pts failed: No such device

mdev: /sys/block: No such file or directory

mdev: /sys/class: No such file or directory

Please press Enter to activate this console. 

starting pid 829, tty '/dev/console': '/bin/sh'

/bin/sh: can't access tty; job control turned off





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: