xujiangyu0619 发表于 2012-10-8 16:37:38

求助!!u-boot出问题了!!

我移植的u-boot-2010-06,通过tftp命令下载内核和文件系统都OK,但是通过菜单下载时,文件系统正常,但是内核就出问题了!如下面所示

好像是说地址没有对齐,我的默认分区如下:
#define MTDPARTS_DEFAULT                "mtdparts=nandflash0:256k@0(bios)," \
                                          "128k(params)," \
                                          "128k(toc)," \
                                          "512k(eboot)," \
                                          "1024k(logo)," \
                                          "3m(kernel)," \
                                          "-(root)"

和天嵌光盘的u-boot一样,查了好几天还是没搞定,请问怎么解决啊?

亚瑟王 发表于 2012-10-9 14:38:22

你用什么命令写数据到nand的?错误信息提示和你的nand写命令有关哦。

xujiangyu0619 发表于 2012-10-10 11:28:04

亚瑟王 发表于 2012-10-9 14:38 static/image/common/back.gif
你用什么命令写数据到nand的?错误信息提示和你的nand写命令有关哦。

下载菜单里用的这句,strcpy(cmd_buf, "tftp 0x30000000 zImage.bin; nand erase kernel; nand write.jffs2 0x30000000 kernel $(filesize)"); 和天嵌光盘里的u-boot-1.1.6源码一样的,我移植的u-boot-1.1.6也是这样写的,完全正确。但是不用菜单,单独用tftp命令(tftp 0x30000000 zImage.bin)下载就没问题,单独用tftp命令如下三步(1)tftp 0x30000000 zImage.bin        (2)nand erase 0x200000 0x300000(3)nand write 0x30000000 0x200000 0x300000
希望能得到你的帮助!谢谢~~~

xujiangyu0619 发表于 2012-10-10 11:33:12

亚瑟王 发表于 2012-10-9 14:38 static/image/common/back.gif
你用什么命令写数据到nand的?错误信息提示和你的nand写命令有关哦。

突然想到这样改不知道行不行,把strcpy(cmd_buf, "tftp 0x30000000 zImage.bin; nand erase kernel; nand write 0x30000000 kernel $(filesize)");就是把write.jffs2改成write,不知道这样行不行,先去试试!!

亚瑟王 发表于 2012-10-10 14:29:05

xujiangyu0619 发表于 2012-10-10 11:33 static/image/common/back.gif
突然想到这样改不知道行不行,把strcpy(cmd_buf, "tftp 0x30000000 zImage.bin; nand erase kernel; nand ...

可以的。反正写kernel是不需要ecc和oob的。

xujiangyu0619 发表于 2012-10-10 20:05:17

亚瑟王 发表于 2012-10-10 14:29 static/image/common/back.gif
可以的。反正写kernel是不需要ecc和oob的。

nand write不行! 也一样出错,下载失败!!!
现在真知道从哪儿下手解决了~~~请帮忙解决下!!

亚瑟王 发表于 2012-10-10 21:33:19

xujiangyu0619 发表于 2012-10-10 20:05 static/image/common/back.gif
nand write不行! 也一样出错,下载失败!!!
现在真知道从哪儿下手解决了~~~请帮忙解决下!!
你用的驱动从哪里来的?我移植过u-boot-2011版本的,没有发现你说的这个问题。根据你的错误信息去找具体代码,看是什么条件引起错误的,然后解决。

xujiangyu0619 发表于 2012-10-11 19:13:39

本帖最后由 xujiangyu0619 于 2012-10-11 19:14 编辑

亚瑟王 发表于 2012-10-10 21:33 static/image/common/back.gif
你用的驱动从哪里来的?我移植过u-boot-2011版本的,没有发现你说的这个问题。根据你的错误信息去找具体代 ...
驱动是在网上找的,能把你移植的2011源码给我参考下么? 或者我给你我移植的源码!你帮我看看!
问题出在drivers/mtd/nand/nand_util.c文件中
/* Reject writes, which are not page aligned */
      if ((offset & (nand->writesize - 1)) != 0 ||
            (*length & (nand->writesize - 1)) != 0) {
                printf ("Attempt to write non page aligned data\n");
                return -EINVAL;
      }

我注释掉这段代码还是不行!然后就不知道去哪儿找了!

亚瑟王 发表于 2012-10-12 16:34:24

xujiangyu0619 发表于 2012-10-11 19:13 static/image/common/back.gif
驱动是在网上找的,能把你移植的2011源码给我参考下么? 或者我给你我移植的源码!你帮我看看!
问题出在 ...

分别把offset,length,writesize的值打印出来看一下。

xujiangyu0619 发表于 2012-10-12 18:46:38

本帖最后由 xujiangyu0619 于 2012-10-12 18:47 编辑

亚瑟王 发表于 2012-10-12 16:34 static/image/common/back.gif
分别把offset,length,writesize的值打印出来看一下。
好的,我试试!!
write.jffs2命令是不需要页对齐的!

亚瑟王 发表于 2012-10-13 09:17:55

xujiangyu0619 发表于 2012-10-12 18:46 static/image/common/back.gif
好的,我试试!!
write.jffs2命令是不需要页对齐的!

理论上所有对nand操作的命令都要页对齐的。
页: [1]
查看完整版本: 求助!!u-boot出问题了!!