天嵌 ARM开发社区

 找回密码
 注册
查看: 3591|回复: 5

U-BOOT下载错误!

[复制链接]
dunken 发表于 2012-12-8 01:29:44 | 显示全部楼层 |阅读模式
1
本帖最后由 dunken 于 2012-12-8 01:30 编辑

关于TQ提供的U-BOOT的BUG问题
当U-BOOT的大小超过25KB时,会发生启动代码下载不完全的问题。
#define MTDIDS_DEFAULT "nand0=nandflash0"
#define MTDPARTS_DEFAULT "mtdparts=nandflash0:256k(bios)," ...


希望能把它调大点,不然对于下载大于256KB的启动代码就不好搞!
问题一:
ARM2440 > usbslave
USB host is connected. Waiting a download.
get downloadFileSize = 193282 !!
Now, Downloading [ADDRESS:30000000h,TOTAL:193282]
RECEIVED FILE SIZE:  193282 (188KB/S, 1S)
ARM2440 > nand erase 0x0 0x40000
NAND erase: device 0 offset 0x0, size 0x40000
Erasing at 0x20000 -- 100% complete.
OK
当使用命令“nand write.jffs2 0x30000000 bios $(filesize)”出现错误如下:
ARM2440 > nand write.jffs2 0x30000000 bios $(filesize)
NAND write: device 0 offset 0x0, size 0x2f2f8
Attempt to write non page aligned data
193272 bytes written: ERROR
当使用命令“nand write.jffs2 0x30000000 bios”则正常下载!
ARM2440 > nand write.jffs2 0x30000000 bios
NAND write: device 0 offset 0x0, size 0x60000
393216 bytes written: OK
ARM2440 >
命令“nand write.jffs2 0x30000000 bios $(filesize)”在我原来的U-BOOT-1.3.4中没有问题!希望高手能解决下!
关于这个“filesize”还真不知道怎么弄!

问题二:
怎样将U-BOOT-2010.06版本中的dm9000网卡驱动移植到U-BOOT-2010.09?
U-BOOT-2010.09的网卡驱动好像有问题,而2010.06没问题!
在使用“tftpboot ”下载时,等待不到2秒钟,就自动重启了!



附件: 您需要 登录 才可以下载或查看,没有帐号?注册
embedsky_lhh 发表于 2012-12-8 09:22:31 | 显示全部楼层
$(filesize) 这个你要在USB下载完成之后根据接收的数据包总长度,设置下这个环境变量,第二个问题,你修改下tftp超时时间试试。如果还是不行,可以对比下bank初始化和他们的地址配置对了么?
回复

使用道具 举报

Linux_Cult 发表于 2012-12-8 10:50:36 | 显示全部楼层
$(filesize)这个你要在USB下载完成之后根据接收的数据包总长度,也就是你要烧写的uboot镜像的实际大小!
出错是因为你的uboot镜像的实际大小不是NAND页大小的整数倍造成的,你可以在NAND 的写函数中处理一下传入的size参数,使之是NAND页大小的整数倍。
回复

使用道具 举报

 楼主| dunken 发表于 2012-12-8 22:10:04 | 显示全部楼层
Linux_Cult 发表于 2012-12-8 10:50
$(filesize)这个你要在USB下载完成之后根据接收的数据包总长度,也就是你要烧写的uboot镜像的实际大小!
出 ...

嗯  谢谢提示   我再去整改下 试一试   
回复

使用道具 举报

 楼主| dunken 发表于 2012-12-8 22:13:21 | 显示全部楼层
embedsky_lhh 发表于 2012-12-8 09:22
$(filesize) 这个你要在USB下载完成之后根据接收的数据包总长度,设置下这个环境变量,第二个问题,你修改 ...

dm9000_halt函数已经屏蔽了
还有
注释了dm9000_init函数中的
#if 0
i = 0;
while (!(phy_read(1) & 0x20)) { /* autonegation complete bit */
  udelay(1000);
  i++;
  if (i == 10000) {
   printf("could not establish link\n");
   return 0;
  }
}
#endif


不知道这样修改对不对,BANK4设置的一样的
回复

使用道具 举报

Linux_Cult 发表于 2012-12-10 10:41:17 | 显示全部楼层
你不是USB烧写么,你怎么改DM9000了呢?其实你只要改common/cmd_nand.c
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-6-3 05:55 , Processed in 1.062500 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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