TI中文支持网
TI专业的中文技术问题搜集分享网站

DM6467T内核停顿于“Sending DHCP requests”

各位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进行配置的方法?

noaming:

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

Shaquille Wu:

回复 noaming:

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

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 80×30

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)最后为什么会提示找不到文件系统?

 

noaming:

回复 Shaquille Wu:

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

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

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

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

Shaquille Wu:

回复 noaming:

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

noaming:

回复 Shaquille Wu:

你好,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 ,所以不能更改

Shaquille Wu:

回复 noaming:

谢谢您的快速回复

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呢?

Shaquille Wu:

回复 Shaquille Wu:

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

赞(0)
未经允许不得转载:TI中文支持网 » DM6467T内核停顿于“Sending DHCP requests”
分享到: 更多 (0)