为了能够使u-boot能够把环境变量保存在自己所在的SPI NOR FLASH中,必须要修改相应的宏定义文件。步骤如下:
1、修改mx51_bbg_android.h 文件
在~/MyAndroid/bootable/bootloader/uboot-imx/include/configs/目录下,找到mx51_bbg_android.h 文件。用gedit或者vi打开,修改如下:
???默认是注释掉的,把注释去掉
?#define CONFIG_FSL_ENV_IN_SF
.....
????????????
----把默认这段先注释掉,然后重新复制一下,把CONFIG_FSL_ENV_IN_MMC和CONFIG_FSL_ENV_IN_SF所在的宏定义段,调换一下位置,变成下面这样:
#if defined(CONFIG_FSL_ENV_IN_NAND)
?#define CONFIG_ENV_IS_IN_NAND 1
?#define CONFIG_ENV_OFFSET?0x100000
#elif defined(CONFIG_FSL_ENV_IN_SF)
?#define CONFIG_ENV_IS_IN_SPI_FLASH?1
?#define CONFIG_ENV_SPI_CS??1
?#define CONFIG_ENV_OFFSET???????(768 * 1024)
#elif defined(CONFIG_FSL_ENV_IN_MMC)
?#define CONFIG_ENV_IS_IN_MMC?1
?#define CONFIG_ENV_OFFSET?(768 * 1024)
#else
?#define CONFIG_ENV_IS_NOWHERE?1
#endif
2、保存mx51_bbg_android.h 文件退出
3、重新编译u-boot
(1)make distclean (先清除前面编译得到的文件)
(2)make mx51_bbg_android_config (按照Makefile文件中对应的节点进行配置)
(3)make (开始编译u-boot)
4、把得到的u-boot.bin文件用ATKTool写入到SPI NOR FLASH中。
5、启动I.MX51_EVK,并配置环境变量,显示如下:
U-Boot 2009.08-00082-g4e9cb1c-dirty (May 18 2010 - 01:34:12)
CPU:???Freescale i.MX51 family 3.0V at 800 MHz
mx51 pll1: 800MHz
mx51 pll2: 665MHz
mx51 pll3: 216MHz
ipg clock?????: 66500000Hz
ipg per clock : 665000000Hz
uart clock????: 66500000Hz
cspi clock????: 54000000Hz
Board: MX51 BABBAGE 3.0 [POR]
Boot Device: SPI NOR
DRAM:??512 MB
MMC:???FSL_ESDHC: 0
JEDEC ID: 0x1f:0x27:0x01
Reading SPI NOR flash 0xc0000 [0x20000 bytes] -> ram 0x975e0800
.SUCCESS
*** Warning - bad CRC,using default environment
In:????serial
Out:???serial
Err:???serial
Press home + power to enter recovery mode ...
Net:???FEC0 [PRIME]
Hit any key to stop autoboot:??0
BBG U-Boot > setenv serverip 192.168.1.120
BBG U-Boot > setenv ipaddr 192.168.1.125
BBG U-Boot > setenv ethaddr 00:04:9f:00:ea:d3
BBG U-Boot > saveenv
Saving Environment to SPI Flash...
Erasing SPI flash...Erase is built in program.
Writing to SPI flash...Writing SPI NOR flash 0xc0000 [0x20000 bytes] <- ram 0x975e0800
.....SUCCESS
done
BBG U-Boot >
OK,环境变量实现了在SPI NOR FLASH中的保存。由此可以看出,才版本的u-boot不但支持SPI NOR FLASH,而且支持ATMEL 的AT45DB321D芯片。