I know I am little late to the discussion but this is how i was able to fetch and set the u-boot environment variables from Userspace. Firstly install u-boot-fw-utils package from which you can get the fw_printenv and fw_setenv binaries in /sbin.
Also it will create the fw_env.config file in the path /etc. And the format of the file is as follows
# Device name Offset Size
/dev/mmcblk0p1 0xE0000 0x20000
There are some other parameters too like number of sectors and etc but all those are optional. Only the Offset and Size are mandatory params. These values you can get from the u-boot config file which is located in the path include/config inside your u-boot-source. If you can't find the u-boot source you need to patch it using the command bitbake -c patch virtual/bootloader . Search for the values CONFIG_ENV_OFFSET and CONFIG_ENV_SIZE in your board specific header file (as long as you use the default bootloader config). Mention these 2 values in the fw_env.config.
If the values are correct then you can get all the u-boot env params from linux userspace without any Bad CRC errors.
Thanks and Regards
PVSN Subhash