uboot环境变量分析

uboot的环境变量在程序的运行和调试过程中都发挥着比较重要的作用。

一、环境变量

可以理解为全局变量,但是他的生命周期比全局变量要长,当程序已经结束运行时,全局变量就会消亡,但是环境变量在下次上电运行时,依旧可以保持为上设置的值。

二、代码分析

1、分析uboot命令setenv

举例:输入命令"setenv bootdelay 5"即可完成环境变量修改

代码位置:在uboot/common/cmd_nvedit.c中的do_setenv函数。

在do_setenv函数中又调用了_do_setenv函数,关于这个函数的源代码就不附了,关于程序里面的核心框架我整理了一下,具体如下:

  输入了命令后,首先进行一些的命令提取和判断,这里就直接跳过。然后在DDR中遍历环境变量,查找是否存在输入的环境变量,如果存在就将该环境变量在内存中直接删除,后面的环境变量向前移动,最后再尾部重新添加;如果不存在,就在尾部创建一个新的环境变量。

  这里只是摘取了uboot命令中的setenv来分析,重点是为了学习uboot的这种配置环境变量方法。

 

你可能感兴趣的:(uboot环境变量分析)