
My SoC flash memory logic is poor. (poor hardware) It only supports 32bit read. That is, 16-bit read and 8-bit read returns wrong values. (I wrote a simple bootloader to copy u-boot to RAM for execution at first.) I found that some hardware-independent fuctions read flash via 8-bit access. (for example, crc32() and env_relocate_spec()).
Hence, even I really upgrade the environment into dedicated flash sector, u-boot shows the warning message while booting.
It seems unavoidable to hardcode u-boot. :)
Thanks. Wayne
-----Original Message----- From: wd@denx.de [mailto:wd@denx.de] Sent: Monday, May 02, 2005 4:38 PM To: Wayne Lee Cc: u-boot-users@lists.sourceforge.net Subject: Re: [U-Boot-Users] still got "*** Warning - bad CRC, using default environment" after saveenv is sucessfully done
In message 200505020725.j427P98R014633@ismp.csie.ncku.edu.tw you wrote:
I have written hardware-dependent flash functions for my EVB u-boot
support.
Hence, "saveenv" works and I can see the env data in the configured env sector by "md" command.
However, I still get the warning messages, "*** Warning - bad CRC, using default environment", after press reset button.
This means that U-Boot does not find a valid environment in flash.
Should any CONFIG/CFG need to be added in board configuration file?
Added or fixed - how should we know? We don't know your hardware...
I use u-boot 1.1.2 and the followings are part of board configurations.
/*-----------------------------------------------------------------------
- Physical Memory Map
*/ #define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */ #define PHYS_SDRAM_1 0x00000000 /* SDRAM Bank #1 */ #define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
You shouldn't do that., You should use auto-sizing instead.
#define CFG_ENV_IS_IN_FLASH 1 #define CFG_ENV_SIZE 0x2000 /* Total Size of Environment Sector */ #define CFG_ENV_SECT_SIZE 0x2000 #define CFG_ENV_OFFSET 0x3F8000 /* environment
starts here
*/ #define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
This looks ok to me. I just wonder why you provide redundant definitions - one of either CFG_ENV_OFFSET or CFG_ENV_ADDR is sufficient.
Best regards,
Wolfgang Denk