打印uboot环境变量:
fw_printenv [[ -n name ] | [ name ... ]]
# ./fw_printenv -n baudrate
如果不指定name,fw_printenv会打印出ENV区中的所有环境变
设置uboot环境变量:
fw_setenv name [ value ... ]
如果不指定value,表示要删除这个name的环境变量。
# ./fw_setenv temp tekkaman
# ./fw_printenv -n temp
# ./fw_setenv temp
# ./fw_printenv -n temp
问题:
1 解决uboot命令行中 不能设置ethaddr的问题(Can't overwrite "ethaddr"),修改Fw_env.c 中的fw_setenv函数代码改为如下。
if(oldval) {
/*
* Ethernet Address and serial# can be set only once
*/
if((strcmp (name,"ethaddr") == 1) ||
(strcmp (name, "serial#") == 0)) {
fprintf (stderr, "Can't overwrite \"%s\"\n", name);
2 解决fw_setenv 时提示Warning: Bad CRC, using default environment
设置Fw_env.h 为实际使用值,并配置好fw_env.config
#define DEVICE1_NAME "/dev/mtd1"
#define DEVICE2_NAME "/dev/mtd2"
#define DEVICE1_OFFSET 0x0000
#define ENV1_SIZE 0x10000
#define DEVICE1_ESIZE 0x4000