linux下读写u-boot环境变量

来源:互联网 发布:淘宝买美素佳儿靠谱吗 编辑:程序博客网 时间:2024/06/03 16:29

uboot下可以通过命令访问和修改环境变量,但有时候我们也需要在Linux系统下访问这些数据。为此u-boot为我们实现了一套工具fw_printenv。其源码在u-boot的u-boot/tools/env下。下面就来叙述一下这套工具的使用

 

 1、编译fw_printenv工具
    在你使用的uboot代码中用以下编译指令:
    make env
    这样就可以编译tools/env下的代码,编译出的fw_printenv工具有读写uboot环境变量区的能力。这个工具是针对目标机的,也就是说如果你的uboot代码之前是针对ARM编译的话,fw_printenv也是交叉编译给ARM芯片的。

    2、安装fw_printenv工具
    到/tools/env目录中,将编译好的fw_printenv拷贝到目标机的文件系统中,并通过"ln -s fw_printenv fw_setenv",创建一个fw_setenv到fw_printenv的软链。
    这个工具还需要一个配置文件,以获取uboot的ENV区域的位置信息。默认状态下,请将fw_env.config文件拷贝到目标机的文件系统的/etc目录下。然后结合uboot配置中定义的ENV区和Linux下mtd分区的情况修改配置文件。具体的修改方法见fw_env.config文件中的说明及/tools/env/README文件。

   3、fw_printenv工具的使用
    其实fw_printenv使用起来和uboot下的printenv和setenv指令是一模一样的。
    打印uboot环境变量:
    fw_printenv [[ -n name ] | [ name ... ]]
    # ./fw_printenv -n baudrate
    115200
    # ./fw_printenv baudrate
    baudrate=115200
    如果不指定name,fw_printenv会打印出ENV区中的所有环境变量
    设置uboot环境变量:
    fw_setenv name [ value ... ]
    如果不指定value,表示要删除这个name的环境变量。
    # ./fw_setenv temp tekkaman
    # ./fw_printenv -n temp
    tekkaman
    # ./fw_setenv temp
    # ./fw_printenv -n temp

 

对于使用这个工具,会用到一个很关键的文件fw_env.config。

# Configuration file for fw_(printenv/saveenv) utility.
# Up to two entries are valid, in this case the redundant
# environment sector is assumed present.
# Notice, that the "Number of sectors" is ignored on NOR.

# MTD device name      Device offset       Env. size        Flash sector size         Number of sectors
/dev/mtd1                       0x0000               0x4000           0x4000
/dev/mtd2                       0x0000              0x4000            0x4000

# NAND example
#/dev/mtd0                     0x4000               0x4000           0x20000                        2

  这个文件需要根据你自己的开发板配置而修改。

原创粉丝点击