标签:
uboot的环境变量在程序的运行和调试过程中都发挥着比较重要的作用。
一、环境变量
可以理解为全局变量,但是他的生命周期比全局变量要长,当程序已经结束运行时,全局变量就会消亡,但是环境变量在下次上电运行时,依旧可以保持为上设置的值。
二、代码分析
1、分析uboot命令setenv
举例:输入命令"setenv bootdelay 5"即可完成环境变量修改
代码位置:在uboot/common/cmd_nvedit.c中的do_setenv函数。
在do_setenv函数中又调用了_do_setenv函数,关于这个函数的源代码就不附了,关于程序里面的核心框架我整理了一下,具体如下:
输入了命令后,首先进行一些的命令提取和判断,这里就直接跳过。然后在DDR中遍历环境变量,查找是否存在输入的环境变量,如果存在就将该环境变量在内存中直接删除,后面的环境变量向前移动,最后再尾部重新添加;如果不存在,就在尾部创建一个新的环境变量。
这里只是摘取了uboot命令中的setenv来分析,重点是为了学习uboot的这种配置环境变量方法。
标签:
原文地址:http://www.cnblogs.com/zou107/p/5100255.html