首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

OK6410 上linux的移植有关问题

2012-03-25 
OK6410 上linux的移植问题这几天感觉很头痛,本来觉得移植个最小的linux 2.6.32系统在OK6410开发板上也不是

OK6410 上linux的移植问题
这几天感觉很头痛,本来觉得移植个最小的linux 2.6.32系统在OK6410开发板上也不是什么难事,但是有一个问题一直无法解,也查了很多有关的资料,但至今还没有得到答案,希望各位高手帮帮小弟呀
  原本这块板子带的系统是2.6.28的内核 ,我现在想升到2.6.32,于是,我下了一个2.6.32的内核,然后解压,
  再运行
  make smdk6400_defconfig ,
  make menuconfig
  加入启动参数
  root=/dev/mtdblock2 rootfstype=cramfs init=/linuxrc console=ttySSAC0,115200 mem=256M 
  make
  把编好的zimge烧到板子上,出现错误如下:
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
mousedev: PS/2 mouse device common for all mice
S3C24XX RTC, (c) 2004,2006 Simtec Electronics
i2c /dev entries driver
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
VFP support v0.3: implementor 41 architecture 1 part 20 variant b rev 5
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
VFS: Cannot open root device "mtdblock2" or unknown-block(0,0)
Please append a correct "root=" boot option; here are the available partitions:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[<c002f63c>] (unwind_backtrace+0x0/0xf8) from [<c01df4c4>] (panic+0x58/0x19c)
[<c01df4c4>] (panic+0x58/0x19c) from [<c0008e54>] (mount_block_root+0x180/0x2c0

  由此可以看出,内核已经可以启动,串口也配置好了,但是还没有识别出mtdblock2分区,这个是还没有加上nand flash的驱动的原因
  所以我便把飞凌自带的2.8.28内核里的nand驱动直接复制进去
  再把yaffs2文 件系统也加进去了
  #make menuconfig
  Device Drivers --->  
<*> Memory Technology Device (MTD) support --->  

MTD partitioning support  
<*> NAND Device Support --->  
<*> NAND Flash support for S3C/S3C SoC  
  再把这个选项选上  
device drivers ->
Memory Technology Device (MTD) support --->
Caching block device access to MTD devices
  把yaffs2文 件系统也选上了
  <*> YAFFS2 file system support │ │  
  │ │ -*- 512 byte / page devices │ │  
  │ │ [ ] Use older-style on-NAND data format with pageStatus byt│ │  
  │ │ [ ] Lets Yaffs do its own ECC │ │  
  │ │ -*- 2048 byte (or larger) / page devices │ │  
  │ │ [*] Autoselect yaffs2 format │ │  
  │ │ [ ] Disable YAFFS from doing ECC on tags by default │ │  
  │ │ [ ] Disable lazy loading │ │  
  │ │ [*] Turn off wide tnodes │
  再把cramfs也选上了
  <*> Compressed ROM file system support (cramfs) 
  编译通过
  再把zimage烧进去
*************************************************************************************************************
  出现以下别我头痛到现在的问题
NAND device: Manufacturer ID: 0xec, Chip ID: 0xd5 (Samsung NAND 2GiB 3,3V 8-bit)

Creating 4 MTD partitions on "NAND 2GiB 3,3V 8-bit":
0x000000000000-0x000000040000 : "Bootloader"
0x000000040000-0x000000400000 : "Kernel"
0x000000400000-0x000005400000 : "Rootfs"
0x000005400000-0x000080000000 : "User File System"
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver

Buffer I/O error on device mtdblock2, logical block 3
List of all partitions:
1f00 256 mtdblock0 (driver?)
1f01 3840 mtdblock1 (driver?)
1f02 81920 mtdblock2 (driver?)
1f03 2011136 mtdblock3 (driver?)
No filesystem could mount root, tried: cramfs
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)


[<c0024b7c>] (unwind_backtrace+0x0/0xdc) from [<c01d3010>] (panic+0x40/0x114)
[<c01d3010>] (panic+0x40/0x114) from [<c0008fd0>] (mount_block_root+0x25c/0x2ac)

[<c0008fd0>] (mount_block_root+0x25c/0x2ac) from [<c00091e8>] (prepare_namespace
+0x164/0x1bc)
[<c00091e8>] (prepare_namespace+0x164/0x1bc) from [<c00085c0>] (kernel_init+0xd

  下面再分析一下出现这个问题的原因
  显示结果表明,已经能够找到31:3这个节点,nand flash 的驱动也已经移植成功(也不知是不是真的成功了),但是出现了unknown-block(31,2),于是我上网查了,说是文件系统没有加上去,因为我做的根文 件系统是cramfs,但是那个我已经在内核上配置了呀,并且yaffs2文 件系统也加进去了呀,这是为什么呢?
  我以为是我做的那个根文件系统文件有问题,所以我重做了一个,并用飞凌自带的内核测试一下完全可以,但是烧进去板子后,结果还是这样。后来上网也查了很多资料
  如http://topic.csdn.net/u/20110216/12/dae77874-593b-40ed-be7f-83e0610b037d.html
  http://topic.csdn.net/u/20110216/12/dae77874-593b-40ed-be7f-83e0610b037d.html
  其发觉我的操作也是这样呀,怎么他们行,我的就不行呢?
  之后我还拿了飞凌别版本的内核2.6.36下的nand flash的驱动搞进去也是这样,后来发狂的把原来2.6.28下的cramfs全部复制到新内核下编进去也是一样什么方法都试过啦,但是就是不行,

  各位高手,你们有谁知道我的操作到底错在哪里吗?我感觉该做的我都做了呀!
   


[解决办法]
Buffer I/O error on device mtdblock2, logical block 3
List of all partitions:
1f00 256 mtdblock0 (driver?)
1f01 3840 mtdblock1 (driver?)
1f02 81920 mtdblock2 (driver?)
1f03 2011136 mtdblock3 (driver?)
No filesystem could mount root, tried: cramfs

rootfs有刷进去吗?试试用NFS能不能跑起?
[解决办法]

探讨

引用:

我觉得这句话是重点
No filesystem could mount root, tried: cramfs

对于这一点,我也查过很多资料,根据他们的提示来做也不行
http://blog.sciencenet.cn/home.php?mod=space&amp;uid=39626&amp;do=blog&amp;id=332358
大侠……

[解决办法]
Buffer I/O error on device mtdblock2, logical block 3
这句提示不是你的nandflash有问题,就是你nand驱动有问题,或者是分区有问题。导致mtdblock2读取异常,rootfs自然就加不上。
[解决办法]
现在nand没问题了,No filesystem could mount root, tried: cramfs可能的原因
1,你的cramfs工具有没有问题,支持的是大页还是小页的nand。你板上的nand是大页还是小页这要对应
2,uboot有没有问题,是否支持对 cramfs文件系统的烧写
3,内核对 cramfs的支持有没有问题。
从上面三点 看看能不能找到问题所在


热点排行