天嵌 ARM开发社区

 找回密码
 注册
查看: 4255|回复: 3

从 NAND FLASH 启动,提示 Warning - bad CRC, using default environment字样

[复制链接]
xiang8000 发表于 2010-10-7 13:17:45 | 显示全部楼层 |阅读模式
bin生成后,下载进NANDFLASH上电启动,终端提示:Warning - bad CRC, using default environment字样

如果此时输入saveenv
终端显示如下:

U-Boot 2009.08 (10月 20 2010 - 11:09:36)

DRAM:  64 MB
Flash:  2 MB
NAND:  NAND_ECC_NONE selected by board driver. This is not recommended !!
64 MiB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
LHX2440 # saveenv
Saving Environment to Flash...
Un-Protected 1 sectors
Erasing Flash...Erasing sector 16 ...

然后停在这里
如果此时把flash开关拨至norflash,立马就可执行保存环境变量工作

include/configs/xxx.h 中我已经把
#define CONFIG_ENV_IS_IN_NAND  1
#define CONFIG_ENV_OFFSET      0x30000 //将环境变量保存到nand中的0x30000位置
#define CONFIG_ENV_SIZE        0x10000 /* Total Size of Environment Sector */
添加上,并且把
//#define        CONFIG_ENV_IS_IN_FLASH        1
//#define CONFIG_ENV_SIZE                0x10000        /* Total Size of Environment Sector */
给注释掉了

并且终端下对NANDFLASH的识别如md、nand info、nand bad、均正常,如下:
LHX2440 # nand device
Device 0: NAND 64MiB 3,3V 8-bit, sector size 16 KiB
**********************************************************
LHX2440 # nand erase
NAND erase: device 0 whole chip
Skipping bad block at  0x00000000
Skipping bad block at  0x00000000
Erasing at 0x4000000 -- 67092480% complete.
OK
**********************************************************
等等……

为什么saveenv不能显示(Saving Environment to NAND...)我已经定义了
#define CONFIG_ENV_IS_IN_NAND  1并且注释掉了//#define        CONFIG_ENV_IS_IN_FLASH        1了呀,即使就算是因为CRC什么的而使用默认的值保存到非NAND的FLASH中,那么也因该是我的NANDFLASH驱动不正常才对啊,(网上查到的信息,说CRC形成的问题好像是FLASH驱动不正确,需要改动u-boot-2009.08\board\samsung\XXX\flash.c文件中的驱动部分)
flash.c应该是对norflash的设定才对啊,我目前是nandflash,norflash一切都正常没有任何问题,nandflash不是刚才已经试过md……命令,读写都正常么?为什么还会出现这个问题,百思不得其解,望高人能够解答,在此小弟先道声谢了~~~
 楼主| xiang8000 发表于 2010-10-7 13:41:06 | 显示全部楼层
还是本人
根据别人的教程,我在u-boot-2009.08\board\samsung\XXX下创建了一个
u-boot-2009.08\board\samsung\XXX\nand_read.c文件来实现的NANDFLASH的
nand_read_ll()函数,
全函数如下:
#include <config.h>
#define NF_BASE   0x4E000000  //Nand Flash配置寄存器基地址
#define __REGb(x) (*(volatile unsigned char *)(x))
#define __REGi(x) (*(volatile unsigned int  *)(x))
#define NFCONF __REGi(NF_BASE + 0x0 )  //通过偏移量还是得到配置寄存器基地址
#define NFCONT __REGi(NF_BASE + 0x4 )  //通过偏移量得到控制寄存器基地址
#define NFCMD  __REGb(NF_BASE + 0x8 )  //通过偏移量得到指令寄存器基地址
#define NFADDR __REGb(NF_BASE + 0xC )  //通过偏移量得到地址寄存器基地址
#define NFDATA __REGb(NF_BASE + 0x10)  //通过偏移量得到数据寄存器基地址
#define NFSTAT __REGb(NF_BASE + 0x20)  //通过偏移量得到状态寄存器基地址
#define NAND_CHIP_ENABLE  (NFCONT &= ~(1<<1))  //Nand片选使能
#define NAND_CHIP_DISABLE (NFCONT |= (1<<1))   //取消Nand片选
#define NAND_CLEAR_RB     (NFSTAT |= (1<<2))
#define NAND_DETECT_RB    { while(! (NFSTAT&(1<<2)) );}
#define NAND_SECTOR_SIZE 512
#define NAND_BLOCK_MASK (NAND_SECTOR_SIZE - 1)
/* low level nand read function */
int nand_read_ll(unsigned char *buf, unsigned long start_addr, int size)
{
    int i, j;
    if ((start_addr & NAND_BLOCK_MASK) || (size & NAND_BLOCK_MASK))
    {
        return -1; //地址或长度不对齐
    }
    NAND_CHIP_ENABLE; //选中Nand片选
    for(i=start_addr; i < (start_addr + size);)
    {
        //发出READ0指令
        NAND_CLEAR_RB;
        NFCMD = 0;
        //对Nand进行寻址
        NFADDR = i & 0xFF;
        NFADDR = (i >> 9) & 0xFF;
        NFADDR = (i >> 17) & 0xFF;
        NFADDR = (i >> 25) & 0xFF;
        NAND_DETECT_RB;
        for(j=0; j < NAND_SECTOR_SIZE; j++, i++)
        {
            *buf = (NFDATA & 0xFF);
            buf++;
        }
    }
    NAND_CHIP_DISABLE; //取消片选信号
    return 0;
}
因为教程上与我是同一款NANDFLASH,K9F1208UOC        64M
所以这里都是没做改动的,而且终端下命令都能正常执行,我想也应该不是这里的问题吧~求大大们能提示一二
ff8zgs 发表于 2010-10-22 23:20:57 | 显示全部楼层
我的问题和你类似 但是也不一样我是烧写了uboot进去以后出现一个开机logo然后就停在这里 等几分钟就自动重启  这是串口也会提出这个警告
maylag 发表于 2010-10-24 12:45:29 | 显示全部楼层
不知您将drivers/mtd/nand/s3c2410_nand.c中修改了哪些?可以贴出来看看吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-5-18 13:43 , Processed in 1.062500 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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