chh123

chh123

1个粉丝

20

问答

0

专栏

1

资料

chh123  发布于  2016-06-03 20:16:27
采纳率 0%
20个问答
9599

Hi3518eV100 uboot警告

 

hi3518eV100 挂的是W25Q128B flash,跑uboot时报如下警告:

U-Boot 2010.06 (Mar 11 2014 - 17:35:45)

Check spi flash controller v350... Found
Spi(cs1) ID: 0xEF 0x40 0x18 0x00 0x00 0x00
Spi(cs1): Block:64KB Chip:16MB Name:"W25Q128B"
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0


这个问题怎么解决?求大神指点:handshake
我来回答
回答23个
时间排序
认可量排序

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-06-03 20:36:34
认可0
本帖最后由 ngswfx 于 2016-6-3 20:38 编辑

输入sa,保存后,reset,如果还有,注意看sa实际写入的地址,是不是写到uboot的内容里面去了,例如Uboot实际大小256K,sa保存环境变量的时候,应该写到0x40000后面,如果写到前面了,修改Uboot源文件。

chh123

1个粉丝

20

问答

0

专栏

1

资料

chh123 2016-06-03 20:49:25
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31131&ptid=11512]ngswfx 发表于 2016-6-3 20:36[/url]
输入sa,保存后,reset,如果还有,注意看sa实际写入的地址,是不是写到uboot的内容里面去了,例如Uboot实 ...[/quote]

输入sa之后 打印如下:

hisilicon # sa
Saving Environment to SPI Flash...
Erasing SPI flash, offset 0x00080000 size 256K ...done
Writing to SPI flash, offset 0x00080000 size 256K ...done
hisilicon # reset
resetting ...


U-Boot 2010.06 (Mar 11 2014 - 17:35:45)

Check spi flash controller v350... Found
Spi(cs1) ID: 0xEF 0x40 0x18 0x00 0x00 0x00
Spi(cs1): Block:64KB Chip:16MB Name:"W25Q128B"
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0
Wrong Image Format for bootm command

需要修改uboot的什么文件?

rafael_wl

0个粉丝

12

问答

0

专栏

7

资料

rafael_wl 2016-06-03 20:57:20
认可0
env 要重新配置和保存下就好了

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-06-03 21:04:43
认可0
本帖最后由 ngswfx 于 2016-6-3 21:42 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=31133&ptid=11512]chh123 发表于 2016-6-3 20:49[/url]
输入sa之后 打印如下:

hisilicon # sa
[/quote]

你的Uboot实际烧写的大小是多少,sa后的信息,显示你的Uboot文件不能大于512K,通常应该不会超过这个数值的。


/home/ngs/Hi3518E_SDK_V1.0.0.1/u-boot-2010.06/include/configs/hi3518e.h

/////////////////////////////////////////
#define CONFIG_ENV_OFFSET                0x80000 /* environment starts here */             //环境变量,从哪里开始写,前面就是uboot最大的范围,如果uboot小于256K,可以设置为0x40000
#define CONFIG_ENV_SPI_ADDR                (CONFIG_ENV_OFFSET)
#define CONFIG_CMD_SAVEENV

#define CONFIG_STACKSIZE                (128 * 1024)
#define CONFIG_ENV_SIZE                        0x40000 /* include ENV_HEADER_SIZE */   //最大写多大   SPI最小块64K,可以设置为0x10000
#define CONFIG_ENV_SECT_SIZE                CONFIG_ENV_SIZE




/////////////修改配置一下env的setenv bootargs    以及setenv bootcmd ,再试

chh123

1个粉丝

20

问答

0

专栏

1

资料

chh123 2016-06-03 21:05:38
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31134&ptid=11512]rafael_wl 发表于 2016-6-3 20:57[/url]
env 要重新配置和保存下就好了[/quote]

我的问题是*** Warning - bad CRC, using default environment这个警告,导致后面写内核和文件系统到flash的时候出问题

chh123

1个粉丝

20

问答

0

专栏

1

资料

chh123 2016-06-03 21:15:38
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31136&ptid=11512]ngswfx 发表于 2016-6-3 21:04[/url]
你的Uboot实际烧写的大小是多少[/quote]

uboot文件的大小是158k

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-06-03 21:18:43
认可0
本帖最后由 ngswfx 于 2016-6-3 21:23 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=31137&ptid=11512]chh123 发表于 2016-6-3 21:05[/url]
我的问题是*** Warning - bad CRC, using default environment这个警告,导致后面写内核和文件系统到flas ...[/quote]

配置env的时候,u-boot里面会重新计算CRC保存的,每次启动时,也会读取整个uboot包括环境变量验证CRC。

你的这个报错,就是验证没通过,通常就是保存的位置没对,尤其是写kernel时,把env的内容冲掉了。下次启动,CRC错,保存一次,又成功了,再写kernel ,又完蛋了。


////////////////////////这都是在你没有修改u-boot源码得出的结论,如果你改过,注意源码里面保存env旁边必须要有重新计算CRC过程(先重新计算CRC,再saveEnv),否则,必定每次都CRC失败。



//按照你现在的配置,0xc0000后面才能写kernel

chh123

1个粉丝

20

问答

0

专栏

1

资料

chh123 2016-06-03 21:24:17
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31139&ptid=11512]ngswfx 发表于 2016-6-3 21:18[/url]
配置env的时候,u-boot里面会重新计算CRC保存的,每次启动时,也会读取整个uboot包括环境变量验证CRC。 ...[/quote]

哦  那就是我的flash和uboot里面的flash大小对不上,环境变量保存的地址不对把?  那我应该如何修改uboot里面的哪个文件?

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-06-03 21:32:56
认可0
本帖最后由 ngswfx 于 2016-6-3 21:42 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=31140&ptid=11512]chh123 发表于 2016-6-3 21:24[/url]
哦  那就是我的flash和uboot里面的flash大小对不上,环境变量保存的地址不对把?  那我应该如何修改uboot ...[/quote]

那个大小,也没事,顶多注意,写uboot之前,注意把DDR内存里面清空的范围要足够

sf probe 0
mw.b 0x81000000 ff 0xc0000
//直接清到512K+256K位置,kernel前面。
如果清的不够,写的时候,再把,内存里乱的东西写进去,不知是否影响到CRC。

由于你的U-boot实际占用3个64K,为192K,影响的位置从192K-512K,环境变量部分一样,从512K+64K一直到512K+256K位置,保险的做法就是DDR内存中,都弄成ff。

然后TFTP读数据,然后写flash,保险点。

tftp 0x81000000 mini-boot.bin
sf erase 0x000000 80000
sf write 0x81000000  0x000000 0x80000   //这里的和uboot源文件要一致,如果小了的话,就不好说了。就要看源码怎么处理了。

就不知道写ENV,是不是真的写了256K了,由于ENV很小,首先肯定会写一个块,64K,后面的192K它会不会擦除,就不好说了,或者计算CRC保存的时候,它会不会算这部分,需要看源码了,不过估计验证的时候,它真的是验证了那么多的,你可以改成0x10000试试。


/////////通常,我把这个uboot最大值设置为256K,每次都写0x40000,环境变量0x10000,kernel就从512K以后写。

chh123

1个粉丝

20

问答

0

专栏

1

资料

chh123 2016-06-03 21:55:00
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31136&ptid=11512]ngswfx 发表于 2016-6-3 21:04[/url]
你的Uboot实际烧写的大小是多少,sa后的信息,显示你的Uboot文件不能大于512K,通常应该不会超过这个数 ...[/quote]

还是不行啊


hisilicon # setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),3M(kernel),12M(rootfs)'
hisilicon # setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000'
hisilicon # sa
Saving Environment to SPI Flash...
Erasing SPI flash, offset 0x00080000 size 256K ...done
Writing to SPI flash, offset 0x00080000 size 256K ...done
hisilicon # reset
resetting ...


U-Boot 2010.06 (Mar 11 2014 - 17:35:45)

Check spi flash controller v350... Found
Spi(cs1) ID: 0xEF 0x40 0x18 0x00 0x00 0x00
Spi(cs1): Block:64KB Chip:16MB Name:"W25Q128B"
*** Warning - bad CRC, using default environment

chh123

1个粉丝

20

问答

0

专栏

1

资料

chh123 2016-06-03 21:58:52
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31139&ptid=11512]ngswfx 发表于 2016-6-3 21:18[/url]
配置env的时候,u-boot里面会重新计算CRC保存的,每次启动时,也会读取整个uboot包括环境变量验证CRC。 ...[/quote]

我就是第一次用写uboot时就会有这个警告,都还没有写内核,我的所有文件都是SDK里面的  没有自己修改过,操作步骤也是按SDK里面提供的来的,

  |     1M     |      3M       |      12M              |
        |------------|---------------|-----------------------|
        |    boot    |     kernel    |     rootfs            |


这个时候应该不存在冲掉env的内容

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-06-03 23:40:30
认可0
本帖最后由 ngswfx 于 2016-6-4 00:01 编辑

SDK默认的U-boot文件是156K吗?

你把烧写u-boot处理命令流程发上来看一下

不行就换一个Uboot文件烧。

chh123

1个粉丝

20

问答

0

专栏

1

资料

chh123 2016-06-06 12:44:28
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31144&ptid=11512]ngswfx 发表于 2016-6-3 23:40[/url]
SDK默认的U-boot文件是156K吗?

你把烧写u-boot处理命令流程发上来看一下
[/quote]

3、烧写映像文件到SPI Flash
    以16M SPI Flash为例。
    1)地址空间说明
        |     1M     |      3M       |      12M              |
        |------------|---------------|-----------------------|
        |    boot    |     kernel    |     rootfs            |

        以下的操作均基于图示的地址空间分配,您也可以根据实际情况进行调整。
    2)烧写u-boot
                sf probe 0
                sf erase 0 0x100000
                mw.b 82000000 ff 100000
                tftp 0x82000000 u-boot-200MHZ.bin        #如果是hi3516c,使用u-boot-220MHZ.bin
                sf write 82000000 0 100000
        reset   
    3)烧写内核
                sf probe 0
                sf erase 100000 0x300000
                mw.b 82000000 ff 300000
                tftp 82000000 uImage
                sf write 82000000 100000 300000
    4)烧写文件系统
                sf probe 0
                sf erase 400000 0xc00000
                mw.b 82000000 ff c00000
                tftp 82000000 rootfs_64k.jffs2
                sf write 82000000 400000 0xc00000
    5)设置启动参数
                setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),3M(kernel),12M(rootfs)'
                setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000'
        save

我今天把#define CONFIG_ENV_SIZE                        0x40000 改成0x10000还是不行

hisi3518C

0个粉丝

3

问答

0

专栏

0

资料

hisi3518C 2016-06-07 11:29:53
认可0
换块flash 估计就OK了,还要这么麻烦,这个问题跟内核什么都没一点关系,只烧写了uboot,都没烧写内核,正常情况是第一次出现CRC报警,saveenv以后就没有了,如果还出现,说明flash 不兼容,或者flash 坏了 或者硬件设计出了问题,

chh123

1个粉丝

20

问答

0

专栏

1

资料

chh123 2016-06-12 18:20:20
认可0
问题终于解决了    谢谢各位提供的思路:handshake

Benz

0个粉丝

29

问答

0

专栏

0

资料

Benz 2016-12-03 16:02:35
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=31513&ptid=11512]chh123 发表于 2016-6-12 18:20[/url]
问题终于解决了    谢谢各位提供的思路[/quote]

请问楼主是怎么解决的?   

henman

0个粉丝

7

问答

0

专栏

0

资料

henman 2016-12-03 16:11:00
认可0
肯定是查硬件了。

chh123

1个粉丝

20

问答

0

专栏

1

资料

chh123 2016-12-05 09:13:19
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=42350&ptid=11512]henman 发表于 2016-12-3 16:11[/url]
肯定是查硬件了。[/quote]

只是换个和线路图上一样型号的flash就可以,其他型号都不行。

chh123

1个粉丝

20

问答

0

专栏

1

资料

chh123 2016-12-05 09:21:07
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=42348&ptid=11512]Benz 发表于 2016-12-3 16:02[/url]
请问楼主是怎么解决的?[/quote]

flash 不兼容,只能支持SDK里面线路图上提供的型号,换其它的都是相同问题

Benz

0个粉丝

29

问答

0

专栏

0

资料

Benz 2016-12-05 09:45:36
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=42371&ptid=11512]chh123 发表于 2016-12-5 09:21[/url]
flash 不兼容,只能支持SDK里面线路图上提供的型号,换其它的都是相同问题[/quote]

我注意到楼主用的Winbond 16MBytes的flash ,在SDK的那个表中也没有,但是也能用。   我换了一个32M的 W25X256FV ,结果uboot起来后, 环境变量 kernel rootfs 不能写进去,  不知道为什么
加载中···
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区