免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 11654 | 回复: 4
打印 上一主题 下一主题

[操作系统] Warning: unable to open an initial console [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-09 19:28 |只看该作者 |倒序浏览
环境:linxu2.6.32+yaffs+busybox1.13 移植到 mini2440(64M  flash)

烧录了vivi,kernel,rootfs



| S3C2440A USB Downloader ver R0.03 2004 Jan  |
+---------------------------------------------+
USB: IN_ENDPOINT:1 OUT_ENDPOINT:3
FORMAT: <ADDR(DATA):4>+<SIZE(n+10):4>+<DATA:n>+<CS:2>
NOTE: Power off/on or press the reset button for 1 sec
      in order to get a valid USB device address.

NAND device: Manufacture ID: 0xec, Chip ID: 0x76 (Samsung K9D1208V0M)
Could not found stored vivi parameters. Use default vivi parameters.
Press Return to start the LINUX/Wince now, any other key for vivi
Copy linux kernel from 0x00050000 to 0x30008000, size = 0x00200000 ... done
zImage magic = 0x016f2818
Setup linux parameters at 0x30000100
linux command line is: "noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0"
MACH_TYPE = 782
NOW, Booting Linux......
Uncompressing Linux............................................................................................................................. done, booting the kernel.
Linux version 2.6.32.2 (leo@leo-laptop) (gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72) ) #31 Sun Dec 9 00:33:34 CST 2012
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
CPU: VIVT data cache, VIVT instruction cache
Machine: Leo S3C2440 EVB Board
ATAG_INITRD is deprecated; please update your bootloader.
Memory policy: ECC disabled, Data cache writeback
CPU S3C2440A (id 0x32440001)
S3C24XX Clocks, (c) 2004 Simtec Electronics
S3C244X: core 405.000 MHz, memory 101.250 MHz, peripheral 50.625 MHz
CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16256
Kernel command line: noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0
PID hash table entries: 256 (order: -2, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 60712KB available (3472K code, 415K data, 128K init, 0K highmem)
SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Hierarchical RCU implementation.
NR_IRQS:85
irq: clearing pending status 02000000
irq: clearing subpending status 00000002
Console: colour dummy device 80x30
console [ttySAC0] enabled
Calibrating delay loop... 201.93 BogoMIPS (lpj=504832)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
S3C2440: Initialising architecture
S3C2440: IRQ Support
S3C24XX DMA Driver, (c) 2003-2004,2006 Simtec Electronics
DMA channel 0 at c4808000, irq 33
DMA channel 1 at c4808040, irq 34
DMA channel 2 at c4808080, irq 35
DMA channel 3 at c48080c0, irq 36
S3C244X: Clock Support, DVS off
bio: create slab <bio-0> at 0
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
s3c-i2c s3c2440-i2c: slave address 0x10
s3c-i2c s3c2440-i2c: bus frequency set to 98 KHz
s3c-i2c s3c2440-i2c: i2c-0: S3C I2C adapter
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 204
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.
ROMFS MTD (C) 2007 Red Hat, Inc.
msgmni has been set to 118
alg: No test for stdrng (krng)
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
Console: switching to colour frame buffer device 60x53
fb0: s3c2410fb frame buffer device
s3c2440-uart.0: s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2440
s3c2440-uart.1: s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2440
s3c2440-uart.2: s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2440
brd: module loaded
SSFDC read-only Flash Translation layer
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c24xx-nand s3c2440-nand: Tacls=3, 29ns Twrph0=7 69ns, Twrph1=3 29ns
s3c24xx-nand s3c2440-nand: NAND soft ECC
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit)
NAND_ECC_NONE selected by board driver. This is not recommended !!
Scanning device for bad blocks
Creating 3 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x000000000000-0x000000030000 : "bootloader"
ftl_cs: FTL header not found.
0x000000050000-0x000000250000 : "kernel"
ftl_cs: FTL header not found.
0x000000250000-0x000003ffc000 : "root"
ftl_cs: FTL header not found.
dm9000 Ethernet Driver, V1.31
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: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
usbcore: registered new interface driver libusual
mice: PS/2 mouse device common for all mice
S3C24XX RTC, (c) 2004,2006 Simtec Electronics
i2c /dev entries driver
S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled
cpuidle: using governor ladder
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
usbcore: registered new interface driver hiddev
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 UDA134X
No device for DAI s3c24xx-i2s
ALSA device list:
  No soundcards found.
TCP cubic registered
NET: Registered protocol family 17
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
yaffs: dev is 32505858 name is "mtdblock2" rw
yaffs: passed flags ""
VFS: Mounted root (yaffs filesystem) on device 31:2.
Freeing init memory: 128K
Warning: unable to open an initial console.
Failed to execute /linuxrc.  Attempting defaults...
Kernel panic - not syncing: No init found.  Try passing init= option to kernel.
[<c002ed34>] (unwind_backtrace+0x0/0xdc) from [<c02b7a50>] (panic+0x40/0x120)
[<c02b7a50>] (panic+0x40/0x120) from [<c00285b4>] (init_post+0xcc/0xf4)
[<c00285b4>] (init_post+0xcc/0xf4) from [<c0008440>] (kernel_init+0xdc/0x10c)
[<c0008440>] (kernel_init+0xdc/0x10c) from [<c0029e54>] (kernel_thread_exit+0x0/0x



从log分析, Warning: unable to open an initial console.-->是问题的关键,根文件系统出了问题,应该是不能打开/dev/consol。
可是制作的rootfs    在/dev/下:
mknod -m 660 null c 1 3
mknod -m 660 console c 5 1  

请大侠帮忙分析下是什么原因? 怎么解决呢??

论坛徽章:
0
2 [报告]
发表于 2012-12-12 19:26 |只看该作者
传参数的问题吧

论坛徽章:
0
3 [报告]
发表于 2012-12-13 09:55 |只看该作者
回复 2# noiplee

把yaffs log全部打开,发现很多block被标记为bad block.  在网络上搜索了一些信息,出现问题的一个可能的方向是mkyaffsimage tool烧录到flash 的数据和kernel oob结构不匹配,导致了不能访问到rootfs. 现在尝试修改mkyaffs2image源码来解决这个问题


   

论坛徽章:
0
4 [报告]
发表于 2012-12-30 23:26 |只看该作者
来结贴:
把yaffs log全部打开,发现很多block被标记为bad block, 把焦点就转到了mkyaffs2image, 试图修改mkyaffs2image源码,增加oob的数据,适配kernel. 仔细读读源代码,也很容易知道mkyaffs2image tool原理,这里分享两个链接:
1. 如何修改mkyaffs2image, 虽然我最终没用到,我查看了code,具有参考价值
http://www.unixresources.net/lin ... 0/68/60/686030.html
2. oob区数据格式(较旧),新的kernel版本 格式略有变化,但只是一些数据的位置变了,万变不离其中
http://blog.csdn.net/colorant/article/details/1561830

后来做了一个交叉实验,确定自己手上的yaffs2image工具是ok的,问题回到了kernel, 最终原因是kernel使用nand ecc, 而yaffs使用自带的ecc, 所以yaffs认为block  bad. 修改方法:
vi drivers/mtd/nand/s3c2410.c
找到s3c2410_nand_init_chip()函数,在该函数体最后加上一条语句:
chip->eccmode = NAND_ECC_NONE;//give up nand ecc

yaffs 文件系统选项
  •      Lets Yaffs do its own ECC 要选上,表示采用yaffs提供的 ecc

    这里,也把自己用的yaffs2image工具分享给大家,碰到类似问题,可以排除工具干扰:
  • mkyaffs2image.rar

    9.61 KB, 下载次数: 127

    论坛徽章:
    1
    2015年迎新春徽章
日期:2015-03-04 09:58:11
    5 [报告]
    发表于 2013-02-08 22:20 |只看该作者
    本帖最后由 arm-linux-gcc 于 2013-02-08 22:23 编辑

    不建议设置为NAND_ECC_NONE,nand flash出现位反转是很常见的事情,如果不做ecc校验,那么就不可靠
    yaffs用的oob和kernel mtd用的oob,两者对oob的规划不一致,并且ecc算法也不一致,所以会造成上述问题

    需要修改yaffs的制作image工具的源码,把ecc算法改为kernel里面的那种,此外还要按照kernel mtd oob的规划来修改制作工具(让制作工具按照kernel mtd oob的规划来填充oob),另外yaffs还要配置成使用mtd oob(make menuconfig里面配置)

    不建议使用yaffs/yaffs2,flash的话建议使用ubifs,这个是目前最优秀的flash文件系统,各方面都比yaffs好,支持nor和nand





    另外如果要使用硬件ecc的话,yaffs制作工具的ecc算法也需要按照硬件ecc的算法来修改


    另外如果大规模生产时,一般都是使用烧录器来烧flash,而烧录器自带的ecc算法也可能和硬/软件ecc算法不一致
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP