天嵌 ARM开发社区

 找回密码
 注册
查看: 2955|回复: 9

TQ2440无法正常启机了!!!

[复制链接]
hyz123456 发表于 2010-1-22 15:38:16 | 显示全部楼层 |阅读模式
我的实验板是带Nand 和Nor选择开关的那种,Nor启动时可以正常引导u-boot,但是从Nand启动时,无法正常启动。故障现象是,在logo画面时死机,超级终端里提示Nand上有许多坏块且找不到mtdblock2。
    故障现象是突然出现的。刚拿到开发板时,正常启动过四、五次,突然有一天就出现了上述故障。按照手册上的方法,重新下载u-boot、Linux Kernel、yaffs文件系统后,故障依旧。详细阅读手册后,按照手册上讲的方法对Nand进行了格式化(unsafe那种),重新下载上述内容,故障依旧。我的开发板配置的是3.5寸的液晶屏,所以下载的所有文件都有w35之类的字样。
    现在开发板已经瘫痪,不能正常使用。请尽快给出解决办法。开发板是2009年大学采购设备是时购买的,大致时间应该是在九月分。
    下面是启动时,超级终端里的一些提示信息。
//Boot from Nand Flash
DMA channel 3 at c48080c0, irq 36
S3C244X: Clock Support, DVS off
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
s3c2440-i2c s3c2440-i2c: slave address 0x10
s3c2440-i2c s3c2440-i2c: bus frequency set to 97 KHz
s3c2440-i2c s3c2440-i2c: i2c-0: S3C I2C adapter
cfg80211: Calling CRDA to update world regulatory domain
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
NET: Registered protocol family 1
yaffs Aug 11 2009 10:34:09 Installing.
msgmni has been set to 119
alg: No test for stdrng (krng)
io scheduler noop registered (default)
Console: switching to colour frame buffer device 40x15
fb0: s3c2410fb frame buffer device
backlight initialized
GPIO-Control initialized
PWM-Test initialized
adc initialized
s3c2440-uart.0: tq2440_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2440
s3c2440-uart.1: tq2440_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2440
s3c2440-uart.2: tq2440_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2440
loop: module loaded
Driver 'sd' needs updating - please use bus_type methods
dm9000 Ethernet Driver, V1.31
Now use the default MAC address: 10:23:45:67:89:ab
eth0 (dm9000): not using net_device_ops yet
eth0: dm9000e at c4814000,c4818004 IRQ 51 MAC: 10:23:45:67:89:ab (EmbedSky)
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c2440-nand s3c2440-nand: Tacls=3, 30ns Twrph0=7 70ns, Twrph1=3 30ns
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bi
t)
Scanning device for bad blocks
Bad eraseblock 34 at 0x000000440000
Bad eraseblock 35 at 0x000000460000
//中间都是坏块提示,号是连续的
Bad eraseblock 446 at 0x0000037c0000
Bad eraseblock 913 at 0x000007220000
Bad eraseblock 1364 at 0x00000aa80000
Creating 3 MTD partitions on "NAND 256MiB 3,3V 8-bit":
0x000000000000-0x000000040000 : "EmbedSky_Board_uboot"
0x000000200000-0x000000400000 : "EmbedSky_Board_kernel"
0x000000200000-0x000003df8000 : "EmbedSky_Board_yaffs2"
mtd: partition "EmbedSky_Board_yaffs2" doesn't end on an erase block -- force re
ad-only
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
s3c2410-ohci s3c2410-ohci: S3C24XX OHCI
s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1
s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000
usb usb1: New USB device found, idVendor=1d6b, idProduct=0001
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: S3C24XX OHCI
usb usb1: Manufacturer: Linux 2.6.30.4-EmbedSky ohci_hcd
usb usb1: SerialNumber: s3c24xx
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
usbcore: registered new interface driver usbserial
usbserial: USB Serial Driver core
USB Serial support registered for pl2303
usbcore: registered new interface driver pl2303
pl2303: Prolific PL2303 USB to serial adaptor driver
s3c2410_udc: debugfs dir creation failed -19
s3c2440-usbgadget s3c2440-usbgadget: S3C2440: increasing FIFO to 128 bytes
mice: PS/2 mouse device common for all mice
TQ2440 TouchScreen successfully loaded
input: TQ2440 TouchScreen as /devices/virtual/input/input0
S3C24XX RTC, (c) 2004,2006 Simtec Electronics
s3c2410-rtc s3c2410-rtc: rtc disabled, re-enabling
s3c2410-rtc s3c2410-rtc: rtc core: registered s3c as rtc0
i2c /dev entries driver
Linux video capture interface: v2.00
zc0301: V4L2 driver for ZC0301[P] Image Processor and Control Chip v1:1.10
usbcore: registered new interface driver zc0301
gspca: main v2.5.0 registered
usbcore: registered new interface driver zc3xx
zc3xx: registered
usbcore: registered new interface driver uvcvideo
USB Video Class driver (v0.1.0)
S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled
mapped channel 0 to 0
s3c2440-sdi s3c2440-sdi: powered down.
s3c2440-sdi s3c2440-sdi: initialisation done.
s3c2440-sdi s3c2440-sdi: powered down.
usbcore: registered new interface driver usbhid
usbhid: v2.6:USB HID core driver
Advanced Linux Sound Architecture Driver Version 1.0.18a.
No device for DAI UDA134X
No device for DAI s3c24xx-i2s
S3C24XX_UDA134X SoC Audio driver
UDA134X SoC Audio Codec
asoc: UDA134X <-> s3c24xx-i2s mapping ok
ALSA device list:
  #0: S3C24XX_UDA134X (UDA134X)
TCP cubic registered
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
lib80211: common routines for IEEE802.11 drivers
s3c2410-rtc s3c2410-rtc: setting system clock to 2009-03-29 10:00:24 UTC (123832
0824)
uncorrectable error : <3>end_request: I/O error, dev mtdblock2, sector 0
FAT: unable to read boot sector
VFS: Cannot open root device "mtdblock2" or unknown-block(31,2)
Please append a correct "root=" boot option; here are the available partitions:
1f00             256 mtdblock0 (driver?)
1f01            2048 mtdblock1 (driver?)
1f02           61408 mtdblock2 (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)
Backtrace:
[<c0039fd4>] (dump_backtrace+0x0/0x10c) from [<c02b140c>] (dump_stack+0x18/0x1c)

r7:c380a0cb r6:c03bdda0 r5:c380a000 r4:c381df40
[<c02b13f4>] (dump_stack+0x0/0x1c) from [<c02b145c>] (panic+0x4c/0x124)
[<c02b1410>] (panic+0x0/0x124) from [<c0008e30>] (mount_block_root+0x178/0x234)
r3:00000000 r2:c385532c r1:c381df40 r0:c033f198
[<c0008cb8>] (mount_block_root+0x0/0x234) from [<c0008f9c>] (mount_root+0xb0/0xf
4)
[<c0008eec>] (mount_root+0x0/0xf4) from [<c00090d8>] (prepare_namespace+0xf8/0x1
8c)
r7:c03bd784 r6:c001e83c r5:c001e83c r4:c001e84c
[<c0008fe0>] (prepare_namespace+0x0/0x18c) from [<c0008478>] (kernel_init+0xc8/0
xf4)
r7:00000000 r6:c001da14 r5:c001d6b0 r4:c001da14
[<c00083b0>] (kernel_init+0x0/0xf4) from [<c004af30>] (do_exit+0x0/0x620)
r7:00000000 r6:00000000 r5:00000000 r4:00000000
//然后就死在这了。
亚瑟王 发表于 2010-1-22 16:51:11 | 显示全部楼层
1、根据给出来的信息表明Nand Flash是256MB的,而你烧写的zImage却是64MB的。
2、Nand Flash是256MB的,对应的zImage和文件系统都要用256MB的,否则启动时会出现启动不了,并且可能出现非常多的人为坏块。
判断的依据:NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bi
t)
这句话说明Nand是256MB的,
0x000000200000-0x000003df8000 : "EmbedSky_Board_yaffs2"
这个说明zImage是64MB的。
 楼主| hyz123456 发表于 2010-1-23 14:51:41 | 显示全部楼层
1、“人为坏块”是不是可以通过格式化修复?
2、在我没有做任何操作之前,开发板突然无法启动(即死机)是什么原因?
3、建议我用什么方法和步骤恢复开发板到正常?(是不是格式化一次,重新下载w35的u-boot、256M kernel、256M Yaffs,就可以了?)
embedsky Team 发表于 2010-1-23 17:15:55 | 显示全部楼层
1、“人为坏块”是不是可以通过格式化修复?
2、在我没有做任何操作之前,开发板突然无法启动(即死机)是什么原因?
3、建议我用什么方法和步骤恢复开发板到正常?(是不是格式化一次,重新下载w35的u-boot、256M ...
hyz123456 发表于 2010-1-23 14:51



是的 、“人为坏块”可以认为是被软件 标志 为坏块,
1 从nor flash 启动 在uboot下载模式下 选择“9”---“1”----“y” 格式化
2 然后重启开发板 再按照说明书 烧写linux系统
 楼主| hyz123456 发表于 2010-1-23 18:46:43 | 显示全部楼层
谢谢,我的问题已经解决了。开发板现在可以正常启动了!(但是还有个别坏块提示)
另一个问题:开发板上的Qtopia里,没有“关机”功能吗?关机是不是必须用“断电”的方式?
在“工具”分类里倒是有一个关机的程序,我试过,不好使。/bin下的poweroff命令,也只是halt,不是断电关机。(我怀疑上次文件系统损坏,可能与断电关机有关)

关于Nand Flash我还有问题要请教,希望能给予指教。通过学习其它资料和贵公司的核心板原理图可知,Nor Flash、SDRAM在扩展时,都分别提供地址线、数据数和nGCSx信号,这是正常的。但是,Nand Flash在扩展时却只有DATA0~DATAx与Nand的I/O线相连,且控制信号中没有类似nGCSx,这使我有点困惑:
1、S3C2440怎么知道Nand Flash到底接到8个BANK的哪一个上?
2、对Nand Flash内部的寻址及操作是怎么通过DATA0~DATAx完成的?(这个问题可能有点幼稚:》)
3、S3C2440在工作时,是不是通过地址就能判断出被访问的单元在哪一个BANK中,进而自动配合产生nGCSx信号?
4、对于Nor Flash及Nand Flash,是不是可以接到任何一个BANK上,还是说有什么约定?

热切期盼贵公司的详细的U-boot移植教程!!!(最好是从零起步的,这样有些步骤我们可以参照着去揣摩)
亚瑟王 发表于 2010-1-26 15:04:05 | 显示全部楼层
是的,qtopia中的关机功能是没有用的。
1、Nand flash不在任意块上,而是接在nand flash控制器上面。
2、nand flash有个命令集,在它的datasheet上面有讲解的。
3、对地址操作你可以看一下s3c2440的datasheet的memory章节。
4、nor只能是接到0块上,nand还是那句话:接在nand flash控制器上面的。
亚瑟王 发表于 2010-1-26 15:04:25 | 显示全部楼层
uboot教程不打算写了,可以百度到很多类似的uboot教程的。
 楼主| hyz123456 发表于 2010-1-26 17:06:46 | 显示全部楼层
也就是说,S3C2440为Nand Flash提供了单独的接口,这个接口电路与8个Bank的接口电路无关,对吗?
如果是这样,那么:
1、Nand Flash的地址空间(由芯片容量决定)与8个BANK组成的地址空间(在S3C2440中为1GB)是相互独立的,还是Nand 占1GB的一部分?
2、如果是后者,那么Nand地址空间是怎么插到1GB中的?Nand空间的起始地址是怎么定的?(在S3C2440的datasheet中,关于Nand Flash有一个ADDRESS REGISTER——NFADDR,其中的0~7位用于反映“Nand Flash memory address value”的,但是,解释太少,没看明白!)
3、如果是前者,那么这部分Nand空间是从地址0开始的,还是从某个固定地址开始的?

关于Nor Flash部分,通过你的解释,我明白了。除了Nand Flash外,系统中外扩的其它并口存储器都应该接到8个BANK中的某一个上,对吗?

其实关于u-boot,我的心中已经有了一个大致的移植过程,但不知缺了哪,少了哪。方便的话,能给出一个相对详细一点的移植步骤吗?——对移植过程中需要修改的文件或添加的内容给出重点解释。
亚瑟王 发表于 2010-1-28 21:25:01 | 显示全部楼层
1、nand flash控制器和地址总线无关,独立的一个东西。
2、请参考第一条。
3、还是请参考第一条。
 楼主| hyz123456 发表于 2010-1-28 23:21:20 | 显示全部楼层
谢谢了!!!
明白了!
其实Nand Flash对于S3C2440来说,就好像I2C存储器对8031一样,与其说Nand Flash是S3C2440外扩的存储器,还不如说它是S3C2440众多外围部件中的一个,只不过这个部件内部具有存储空间,而这部分存储空间与S3C2440的存储系统或空间是没有什么必然联系的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-10-6 18:27 , Processed in 1.026407 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表