I find partial answer
/etc/fw_env.conf
/dev/mmcblk0 0x400000 0x1000 and the fw_printenv will damage the boot partition.
if /dev/mmcblk 0x2904000 0x1000 fw_printenv fw_setenv will work well.
fw_printenv should write to absolute address 0x400000 (0x2904000) from sd card 0 sector
I am searching saveenv in uboot command to write where and calculate how to set .h file in uboot source code.
it seem I set define CONFIG_ENV_OFFSET in .h file in uboot code is not work
#define CONFIG_ENV_OFFSET 0x2904000
it still savenev at 0x400000 (that is default setting for imx) (64 * SZ_64K) in sdcard and just damage the boot partition
it seems my setting is not working and can not change the default setting. but I wrote a wrong syntax to compile the code. it displayed error and I made sure it was compiled.
Let me try again.