This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM6467T内核停顿于“Sending DHCP requests”

Other Parts Discussed in Thread: THS7303, THS7353

各位TI的专家,最近小弟在DM6467T上开发,启动内核的过程中总是出现“Sending DHCP requests.....”,并且总是停顿在这个地方,不知道大家有没有遇见过类似的问题,希望有人能帮小弟解决这个问题。具体是这样的:

1.UBL,UBOOT和内核都是从TI的官网上下载的(PSP 03.02和6467T相关的下载)

2.UBL烧写的是1GHZ的那个UBL

3.内核编译之前的make xxx_config,执行的是make davinci_dm646x_1ghz_defconfig

     除了停顿于“Sending DHCP requests”,我还发现,内核虽读取了uboot的参数(即bootarg那堆参数),但是没有按照bootarg里面的参数进行IP和MAC的配置,而且我可以确定MAC地址从eeprom里读取了。不知道有没有办法让内核不要从eeprom里面读取MAC地址,有没有直接按照bootarg进行配置的方法?

  • 你好,出现这种问题,你可以在uboot的bootarg参数里设置静态IP地址,配合UBOOT环境变量设置:setenv ethaddr  setenv ipaddr setenv serverip setenv netmask setenv gatewayip等等。

  • 非常感谢您的回复,目前的情况是这样的:

    1.目前的bootargs是这样设定的:console=ttyS0,115200n8 noinitrd rw ip=192.168.1.249:192.168.1.223:192.168.1.1:255.255.255.0:192.168.1.223::off root=/dev/mtdblock3 mem=120M eth=00:51:c2:5b:b4:2b,这个里面已经指定了您提到的那些

    2.如果我执行setenv ethaddr 00:51:c2:5b:b4:2b,会提示我Can't overwrite "ethaddr",不知道有没有什么办法能顺利设定?

    3.我现在把bootargs改成了bootargs=console=ttyS0,115200n8 noinitrd rw ip=off root=/dev/mtdblock3 mem=120M

    eth=00:51:c2:5b:b4:2b,已经不会停顿在“Sending DHCP request",但是最后提示找不到文件系统:

    Loading from NAND 128MiB 3,3V 8-bit, offset 0x200000

      Image Name:   Linux-2.6.32-rc2-davinci1

      Image Type:   ARM Linux Kernel Image (uncompressed)

      Data Size:    2087784 Bytes =  2 MB

      Load Address: 80008000

      Entry Point:  80008000

    ## Booting kernel from Legacy Image at 80700000 ...

      Image Name:   Linux-2.6.32-rc2-davinci1

      Image Type:   ARM Linux Kernel Image (uncompressed)

      Data Size:    2087784 Bytes =  2 MB

      Load Address: 80008000

      Entry Point:  80008000

      Verifying Checksum ... OK

      Loading Kernel Image ... OK

    OK

    Starting kernel ...

    Uncompressing Linux.............................................................

    .......................................................................... done,

    booting the kernel.

    Linux version 2.6.32-rc2-davinci1 (root@localhost.localdomain) (gcc version 4.2.

    0 (MontaVista 4.2.0-16.0.32.0801914 2008-08-30)) #9 PREEMPT Tue Aug 14 04:09:47

    CST 2012

    CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177

    CPU: VIVT data cache, VIVT instruction cache

    Machine: DaVinci DM646x EVM

    Memory policy: ECC disabled, Data cache writeback

    DaVinci dm6467_rev3.x variant 0x1

    Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 30480

    Kernel command line: console=ttyS0,115200n8 noinitrd rw ip=off root=/dev/mtdbloc

    k3 mem=120M eth=00:51:c2:5b:b4:2b

    PID hash table entries: 512 (order: -1, 2048 bytes)

    Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)

    Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)

    Memory: 120MB = 120MB total

    Memory: 117176KB available (3908K code, 335K data, 144K init, 0K highmem)

    SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1

    Hierarchical RCU implementation.

    NR_IRQS:245

    Console: colour dummy device 80x30

    Calibrating delay loop... 246.57 BogoMIPS (lpj=1232896)

    Mount-cache hash table entries: 512

    CPU: Testing write buffer coherency: ok

    DaVinci: 43 gpio irqs

    NET: Registered protocol family 16

    MUX: Setting register STSOMUX_DISABLE

              PINMUX0 (0x00000000) = 0x00000000 -> 0x00000000

    MUX: Setting register STSIMUX_DISABLE

              PINMUX0 (0x00000000) = 0x00000000 -> 0x00000000

    MUX: Setting register PTSOMUX_DISABLE

              PINMUX0 (0x00000000) = 0x00000000 -> 0x00000000

    MUX: Setting register PTSIMUX_DISABLE

              PINMUX0 (0x00000000) = 0x00000000 -> 0x00000000

    MUX: initialized CIR_UART2

    MUX: Setting register CIR_UART2

              PINMUX1 (0x00000004) = 0x00000000 -> 0x00000020

    MUX: initialized ATAEN

    MUX: Setting register ATAEN

              PINMUX0 (0x00000000) = 0x00000000 -> 0x00000001

    bio: create slab <bio-0> at 0

    SCSI subsystem initialized

    usbcore: registered new interface driver usbfs

    usbcore: registered new interface driver hub

    usbcore: registered new device driver usb

    pcf857x: probe of 1-0038 failed with error -121

    vpif vpif: vpif probe success

    Switching to clocksource timer0_1

    musb_hdrc: version 6.0, pio, peripheral, debug=0

    musb_hdrc: USB Peripheral mode controller at fec64000 using PIO, IRQ 13

    NET: Registered protocol family 2

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

    TCP established hash table entries: 4096 (order: 3, 32768 bytes)

    TCP bind hash table entries: 4096 (order: 2, 16384 bytes)

    TCP: Hash tables configured (established 4096 bind 4096)

    TCP reno registered

    NET: Registered protocol family 1

    RPC: Registered udp transport module.

    RPC: Registered tcp transport module.

    RPC: Registered tcp NFSv4.1 backchannel transport module.

    JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.

    msgmni has been set to 229

    io scheduler noop registered

    io scheduler anticipatory registered (default)

    CIR device registered successfully                        (Major = 252,  Minor =

    0)

    Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled

    serial8250.0: ttyS0 at MMIO 0x1c20000 (irq = 40) is a ST16654

    console [ttyS0] enabled

    serial8250 serial8250.0: unable to register port at index 1 (IO0 MEM1c20400 IRQ4

    1): -22

    serial8250 serial8250.0: unable to register port at index 2 (IO0 MEM1c20800 IRQ4

    2): -22

    brd: module loaded

    loop: module loaded

    at24 1-0050: 32768 byte 24c256 EEPROM (writable)

    Read MAC addr from EEPROM: ff:ff:ff:ff:ff:ff

    Uniform Multi-Platform E-IDE driver

    ide-gd driver 1.18

       ide0: MMIO-DMA

    ide0 at 0xfec661f0-0xfec661f7,0xfec663f6 on irq 22

    NAND device: Manufacturer ID: 0xec, Chip ID: 0xf1 (Samsung NAND 128MiB 3,3V 8-bi

    t)

    Scanning device for bad blocks

    Creating 4 MTD partitions on "davinci_nand.0":

    0x000000000000-0x000000020000 : "params"

    0x000000020000-0x000000160000 : "bootloader"

    0x000000160000-0x000000560000 : "kernel"

    0x000000560000-0x000008000000 : "filesystem"

    davinci_nand davinci_nand.0: controller rev. 2.2

    spi_davinci spi_davinci.0: DaVinci SPI driver in EDMA mode

    Using RX channel = 17 , TX channel = 16 and event queue = 3

    at25 spi0.0: 32 KByte at25640a eeprom, pagesize 64

    spi_davinci spi_davinci.0: Controller at 0xfec66800

    PPP generic driver version 2.4.2

    PPP Deflate Compression module registered

    tun: Universal TUN/TAP device driver, 1.6

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

    dm9000 Ethernet Driver, V1.31

    console [netcon0] enabled

    netconsole: network logging started

    Initializing USB Mass Storage driver...

    usbcore: registered new interface driver usb-storage

    USB Mass Storage support registered.

    usbcore: registered new interface driver usbtest

    g_ether gadget: using random self ethernet address

    g_ether gadget: using random host ethernet address

    usb0: MAC 8a:85:a3:90:51:6d

    usb0: HOST MAC b2:b1:e1:2f:c6:40

    g_ether gadget: Ethernet Gadget, version: Memorial Day 2008

    g_ether gadget: g_ether ready

    mice: PS/2 mouse device common for all mice

    i2c /dev entries driver

    Linux video capture interface: v2.00

    ths7303 1-002c: chip found @ 0x58 (DaVinci I2C adapter)

    ths7303 1-002c: ths7303 write failed

    ths7303: probe of 1-002c failed with error -121

    vpif_display vpif_display: Error registering v4l2 subdevice

    vpif_display vpif_display: VPIF IRQ request failed

    ths7353 1-002e: chip found @ 0x5c (DaVinci I2C adapter)

    ths7353 1-002e: ths7353 write failed

    ths7353: probe of 1-002e failed with error -121

    vpif_capture vpif_capture: Error registering v4l2 subdevice

    watchdog watchdog: heartbeat 60 sec

    usbcore: registered new interface driver usbhid

    usbhid: v2.6:USB HID core driver

    Advanced Linux Sound Architecture Driver Version 1.0.21.

    No device for DAI tlv320aic3x

    asoc: tlv320aic3x <-> davinci-i2s mapping ok

    asoc: DIT <-> davinci-dit mapping ok

    ALSA device list:

     #0: DaVinci DM6467 EVM (tlv320aic3x)

    TCP cubic registered

    NET: Registered protocol family 17

    Clocks: disable unused uart1

    Clocks: disable unused emac

    Clocks: disable unused timer1

    davinci_emac_probe: using random MAC addr: 3e:09:35:91:fc:21

    emac-mii: probed

    drivers/rtc/hctosys.c: unable to open rtc device (rtc0)

    end_request: I/O error, dev mtdblock3, sector 2

    EXT3-fs: unable to read superblock

    end_request: I/O error, dev mtdblock3, sector 0

    Buffer I/O error on device mtdblock3, logical block 0

    end_request: I/O error, dev mtdblock3, sector 0

    Buffer I/O error on device mtdblock3, logical block 0

    end_request: I/O error, dev mtdblock3, sector 8

    Buffer I/O error on device mtdblock3, logical block 1

    end_request: I/O error, dev mtdblock3, sector 8

    Buffer I/O error on device mtdblock3, logical block 1

    end_request: I/O error, dev mtdblock3, sector 16

    Buffer I/O error on device mtdblock3, logical block 2

    end_request: I/O error, dev mtdblock3, sector 16

    Buffer I/O error on device mtdblock3, logical block 2

    end_request: I/O error, dev mtdblock3, sector 24

    Buffer I/O error on device mtdblock3, logical block 3

    end_request: I/O error, dev mtdblock3, sector 24

    Buffer I/O error on device mtdblock3, logical block 3

    end_request: I/O error, dev mtdblock3, sector 0

    FAT: unable to read boot sector

    FAT: unable to read boot sector

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

    1f00             128 mtdblock0 (driver?)

    1f01            1280 mtdblock1 (driver?)

    1f02            4096 mtdblock2 (driver?)

    1f03          125568 mtdblock3 (driver?)

    Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,3)

    Backtrace:

    [<c00306d0>] (dump_backtrace+0x0/0x110) from [<c0030814>] (dump_stack+0x18/0x1c)

    r6:c0026808 r5:c601301c r4:c04268d0

    [<c00307fc>] (dump_stack+0x0/0x1c) from [<c0042134>] (panic+0x54/0x124)

    [<c00420e0>] (panic+0x0/0x124) from [<c0008fc4>] (mount_block_root+0x1d4/0x214)

    r3:00000001 r2:c6024000 r1:c6025f58 r0:c0399584

    [<c0008df0>] (mount_block_root+0x0/0x214) from [<c00090c8>] (mount_root+0xc4/0xf

    c)

    [<c0009004>] (mount_root+0x0/0xfc) from [<c0009268>] (prepare_namespace+0x168/0x

    1c0)

    r5:c0026808 r4:c04263c0

    [<c0009100>] (prepare_namespace+0x0/0x1c0) from [<c00087c8>] (kernel_init+0xdc/0

    x110)

    r5:c0025ad4 r4:c0426180

    [<c00086ec>] (kernel_init+0x0/0x110) from [<c0045210>] (do_exit+0x0/0x654)

    r5:00000000 r4:00000000

    这部分提示信息有两个问题:

    1)注意红字部分,内核没有从EEPROM里面读到MAC

    2)最后为什么会提示找不到文件系统?

     

  • 你好,内核从EEPROM里面读到MAC地址是

    Read MAC addr from EEPROM: ff:ff:ff:ff:ff:ff

    你可以检查一下手册,是否将MAC地址放在指定的EEPROM地址了。

    第二个问题,挂在不上NAND文件系统,请重新做一下NAND里的文件系统,试试看。

  • 问题是执行setenv ethaddr的时候为什么提示Can't over write呢?

  • 你好,UBOOT mac一般只可以更改一次,所以现在改不了,你可以看一下UBOOT的源码,是否可重复更改取决于系统配置

    u-boot-1.0.0\include\configs\at91rm9200dk.h

    /* #define CONFIG_ENV_OVERWRITE 1 */

    u-boot-1.0.0\common\cmd_nvedit.c

    #ifndef CONFIG_ENV_OVERWRITE

    /*

    * Ethernet Address and serial# can be set only once,

    * ver is readonly.

    */

    if ( (strcmp (name, "serial#") == 0) ||

    ((strcmp (name, "ethaddr") == 0)

    #if defined(CONFIG_OVERWRITE_ETHADDR_ONCE) && defined(CONFIG_ETHADDR)

    && (strcmp (env_get_addr(oldval),MK_STR

    (CONFIG_ETHADDR)) != 0)

    #endif /* CONFIG_OVERWRITE_ETHADDR_ONCE && CONFIG_ETHADDR */

    ) ) {

    printf ("Can't overwrite \"%s\"\n", name);

    return 1;

    }

    #endif

    没有定义CONFIG_ENV_OVERWRITE ,所以不能更改

  • 谢谢您的快速回复

    1.关于这个问题,最优的方法肯定是做关于EEPROM的文章,但是这个EEPROM指的是网卡(或者说PHY芯片)上EEPROM,还是DM6467T上的EEPROM?望不吝赐教。

    2.如果EEPROM的文章作不了,能不能有其他方法?比如通过bootargs,让内核去读bootargs里面的mac,如果有这样的方法那应该怎么改呢?都要改哪些呢?bootargs又应该怎么写?

    3.以前在DM6467上做,内核都是通过bootargs来读取IP和MAC的,也就是我之前写的那段bootargs(console=ttyS0,115200n8 noinitrd rw ip=192.168.1.249:192.168.1.223:192.168.1.1:255.255.255.0:192.168.1.223::off root=/dev/mtdblock3 mem=120M eth=00:51:c2:5b:b4:2b),而且一切都是正常的,现在DM6467T的内核为什么非要通过EEPROM来读MAC呢?

  • 有人能回答么?小弟先谢了