bian.hu 发表于 2015-8-11 10:24:51

按照ok210软件手册v1.8编译的linux zImage 在OK210上跑不起来


U-Boot 1.3.4 (Jul 30 2015 - 23:08:02) for SMDKV210

CPU:S5PV210@1000MHz(OK)
      APLL = 1000MHz, HclkMsys = 200MHz, PclkMsys = 100MHz
MPLL = 667MHz, EPLL = 80MHz
         HclkDsys = 166MHz, PclkDsys = 83MHz
         HclkPsys = 133MHz, PclkPsys = 66MHz
         SCLKA2M= 200MHz
Serial = CLKUART
Board:   SMDKV210
DRAM:    512 MB
Flash:   0 kB
SD/MMC:Card init fail!
0 MB
NAND:    manufac=ec dev_id=dc
Nandflash:ChipType= SLCChipName=Samsung K9F4G08U0DNandFlash:name=NAND 512MiB 3,3V 8-bit,id=dc, pagesize=2048 ,chipsize=512 MB,erasesize=131072 oobsize=64
NandFlash Size is 512 MB
*** Warning - using default environment
In:      serial
Out:   serial
Err:   serial
checking mode for fastboot ...
Hit any key to stop autoboot:0
NAND read: device 0 offset 0x100000, size 0x500000
Main area read (40 blocks):
5242880 bytes read: OK
Boot with zImage
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
[    0.000000] CPU: ARMv7 Processor revision 2 (ARMv7), cr=10c53c7f
[    0.000000] CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
[    0.000000] Machine: SMDKV210
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] <8>On node 0 totalpages: 131072
[    0.000000] CPU S5PV210/S5PC110 (id 0x43110220)
[    0.000000] <8>s5pv210_setup_clocks: xtal is 24000000
[    0.000000] Console: colour dummy device 80x30
[    0.121096] Mount-cache hash table entries: 512
[    0.135878] et2_pud=4000
[    0.224938] Console: switching to colour frame buffer device 100x30
[    1.500416] ##########rtw_suspend_lock_init ###########
[    3.057329] <8>lib80211_crypt: registered algorithm 'NULL'
[    3.061373] <8>lib80211_crypt: registered algorithm 'WEP'
[    3.066728] <8>lib80211_crypt: registered algorithm 'CCMP'
[    3.072178] <8>lib80211_crypt: registered algorithm 'TKIP'
[    3.083969] DBUG_PORT must not use AFC!
[    3.266268] Kernel panic - not syncing: No init found.Try passing init= option to kernel. See Linux Documentation/init.txt for guidance.
[    3.277228] Backtrace:
[    3.279654] [<c003bfcc>] (dump_backtrace+0x0/0x110) from [<c0592040>] (dump_stack+0x18/0x1c)
[    3.288055]r6:c005f0d4 r5:c00083d4 r4:c07e795c r3:00000002
[    3.293675] [<c0592028>] (dump_stack+0x0/0x1c) from [<c05920bc>] (panic+0x78/0xf8)
[    3.301231] [<c0592044>] (panic+0x0/0xf8) from [<c00375e4>] (init_post+0xb4/0xdc)
[    3.308676]r3:efc34000 r2:efe9c200 r1:efe9c300 r0:c0725912
[    3.314299] [<c0037530>] (init_post+0x0/0xdc) from [<c0008500>] (kernel_init+0x12c/0x170)
[    3.322455]r4:c084d500 r3:ef801090
[    3.326003] [<c00083d4>] (kernel_init+0x0/0x170) from [<c005f0d4>] (do_exit+0x0/0x5f0)
[    3.333894]r4:00000000 r3:00000000
[    3.337431] Rebooting in 5 seconds..
[    8.367991] Restarting Linux version 2.6.35.7 (bianhu@bianhu-virtual-machine) (gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67) ) #1 PREEMPT Sat Aug 8 15:14:50 CST 2015
[    8.368002]
[    8.385058] arch_reset: attempting watchdog reOK

耳东的刀 发表于 2015-8-11 21:00:49

应该是bootargs设置不对

bian.hu 发表于 2015-8-12 10:31:58

耳东的刀 发表于 2015-8-11 21:00 static/image/common/back.gif
应该是bootargs设置不对

我用了同一个u-boot,bootargs配置参数都是一样的,首先我用forlinx提供的镜像能跑起来,而我用forlinx提供的内核源码,ok210p_linux_config的配置,编译的zImage确不能跑起来。

nightwing 发表于 2015-8-12 10:59:53

哦,我也遇到了。不过我是编译Android 的核心。后来倒是解决了。不过解决的过程有点哭笑不得。楼主可以参考一下。
具体过程是这样的:我的开发板是OK210 1GSAMSUNG NAND的板子,按照官方手册编译 Android 2.3 的内核(其实也就和LINUX共用一样的内核) make distclean,make clean,cp ok210p_android_config.config, make zImage 。 本来预想百度官网下载的东西不会有错,不过最后链接时却给我来了个 __might_sleep函数找不到(该函数是由s3c_nand.module中要求的)。晕死,官方的居然会有错!。 然后我就打电话,官方客服倒是非常客气,但回应说LINUX工程师不在…………我等了两周,没有办法,没有人回应。好吧,自己想办法解决去。我尝试从所谓的三星原厂资料中将 s3c_nand.c 移植过去,但总遇到ECC的问题,搜网络,按网上办法关闭ECC 硬件自检测 但启动到最后一步,就是 在yaffs 一步出现问题,是yaffs2 无法找到 /linuxrc …………查了网络,说是由于yaffs 的OOB数据ECC校验格式与NAND不一致,解决方式对于我等新人来说太复杂。放弃………
后来在官网查资料时发现了2014年的镁光的网盘。我报着试一试的态度下载了2014年的光盘包(还是镁光的),发现该资料包中也是相同的配置,但s3c_nand 是提供了源码的,不像现在中只包含个s3c_nand.module。 我成功地编译其源码,将其下载进去,但还是出现 yaffs 无法找到/linuxrc。 最后我怒了,使用 官方镜像中的 uboot, rootfs, 加上自己编译的2014年的zImage,用 sdfuse flashall 全部更新一次,就成功了。

总结一下:
1. 现在2015年的官网包,默认编译andorid 2.3 的内核( linux 2.6 ) , 会失败
2. 自己添加 __migh_sleep 的空调用文件,强制编译 android 2.3 的内核,可以成功,但在启动时会出现 s3c probe 函数中失败
3. 自己移植 s3c_nand.c 可以成功编译,nand 成功挂载,但是yaffs2 找不到 /linuxrc(不知道原因)
4. 使用2014年的官网包(镁光的),默认核心编译是OK的。 2015年的 uboot, rootfs, 2014年的zImage下载进去 OK了。其他的没时间试了。
总结一句话,官网的资料包似乎出了问题,但他们却没有在意!

bian.hu 发表于 2015-8-12 11:36:26

sdfuse flashall是uboot下的命令?

bian.hu 发表于 2015-8-12 11:37:50

nightwing 发表于 2015-8-12 10:59 static/image/common/back.gif
哦,我也遇到了。不过我是编译Android 的核心。后来倒是解决了。不过解决的过程有点哭笑不得。楼主可以参考 ...

sdfuse flashall他是一个命令,是uboot下的命令吗?

nightwing 发表于 2015-8-12 16:24:46

bian.hu 发表于 2015-8-12 11:37 static/image/common/back.gif
sdfuse flashall他是一个命令,是uboot下的命令吗?

这是将 uboot, rootfs, zImage 复制到 SD卡的sdfuse目录(创建一个普通的FAT32的U盘(使用飞凌提供的格式化工具格式化,不要用WINDOWS自带的格式化。因为分区原因,UBOOT似乎只能认带有MBR记录的SD卡(也就是需要将SD卡分为至少两个分区))。 然后进入UBOOT, 在UBOOT下使用SDFUSE就可以进行烧写了。我使用的sdfuse flashall 意思就是重新烧写那三大文件。你应该用过的,因为你不是烧了KERNEL了么?

bian.hu 发表于 2015-8-12 22:45:48

nightwing 发表于 2015-8-12 16:24 static/image/common/back.gif
这是将 uboot, rootfs, zImage 复制到 SD卡的sdfuse目录(创建一个普通的FAT32的U盘(使用飞凌提供的格式 ...

谢谢!试过了还是报一样的错

nightwing 发表于 2015-8-17 10:53:19

bian.hu 发表于 2015-8-12 22:45 static/image/common/back.gif
谢谢!试过了还是报一样的错

哦,真是遗憾。不过看上去你的启动信息好像不是很详细,也许你可设置一下启动 bootarg 设置
loglevel=7 将所有的信息打印出来,看看到底哪儿出了问题。我虽然是在 /linuxrc 那一步出有问题,但最终也是 出错提示在
Kernel panic - not syncing: No init found.   说不定你也是在那儿,可以考虑像我一样换换内核源代码。

zxqnm 发表于 2015-8-26 22:24:04

nightwing 发表于 2015-8-12 10:59 static/image/common/back.gif
哦,我也遇到了。不过我是编译Android 的核心。后来倒是解决了。不过解决的过程有点哭笑不得。楼主可以参考 ...

你好,请问一下你说的 2015年的 uboot, 是指的原版的没有修改过的uboot吗?
页: [1]
查看完整版本: 按照ok210软件手册v1.8编译的linux zImage 在OK210上跑不起来