为了能够使u-boot能够把环境变量保存在自己所在的SPI NOR FLASH中,必须要修改相应的宏定义文件。步骤如下:
1、修改mx51_bbg_android.h 文件
在~/MyAndroid/bootable/bootloader/uboot-imx/include/configs/目录下,找到mx51_bbg_android.h 文件。用gedit或者vi打开,修改如下:
.....
----把默认这段先注释掉,然后重新复制一下,把CONFIG_FSL_ENV_IN_MMC和CONFIG_FSL_ENV_IN_SF所在的宏定义段,调换一下位置,变成下面这样:
#if defined(CONFIG_FSL_ENV_IN_NAND)
#elif defined(CONFIG_FSL_ENV_IN_SF)
#elif defined(CONFIG_FSL_ENV_IN_MMC)
#else
#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:
mx51 pll1: 800MHz
mx51 pll2: 665MHz
mx51 pll3: 216MHz
ipg clock
ipg per clock : 665000000Hz
uart clock
cspi clock
Board: MX51 BABBAGE 3.0 [POR]
Boot Device: SPI NOR
DRAM:
MMC:
JEDEC ID: 0x1f:0x27:0x01
Reading SPI NOR flash 0xc0000 [0x20000 bytes] -> ram 0x975e0800
.SUCCESS
*** Warning - bad CRC, using default environment
In:
Out:
Err:
Press home + power to enter recovery mode ...
Net:
Hit any key to stop autoboot:
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芯片。