abortboot_single_key:该函数主要用于while循环检测按键,如果有按键按下,将abort标志位置1,最后运行cli_loop命令行模式的函数。 如果按键不按下,标志位abort不起作用,直接运行 run_command_list(s, -1, 0); s = env_get("bootcmd"); 直接跳转到我们设置的环境变量bootcmd,所设定的指令,而不执行cli_loop函数。
该函数为Uboot的最终执行函数,无论是加载kernel还是uboot的命令行体系,均由此实现。 void main_loop(void) { const char *s; bootstage_mark_name(BOOTSTAGE_ID_MAIN_LOOP, "main_loop"); if (IS_ENABLED(CONFIG_VERSION_VARIABLE)) env_set("ver", version_string); /* set version variable */ cli_...
第一个 printenv 实现函数为do_printfenv 代码如下: 1intdo_printenv (cmd_tbl_t *cmdtp,intflag,intargc,char*argv[])2{3inti, j, k, nxt;4intrcode =0;56if(argc ==1) {/*Print all env variables*/7for(i=0; env_get_char(i) !='\0'; i=nxt+1) {8for(nxt=i; env_get_char(nx...
linux程序读写uboot env变量 分析发现uboot env的存储格式是,开始4个字节是crc32,后面是一个接一个\0结束的字符串,每个串都是envname=enavalue的格式。 挪用uboot部分的相关代码,实现以下函数: int set_env_ptr(unsigned char * ptr); char *get_env (char *name); int set_env (char *varname, char ...
分析发现uboot env的存储格式是,开始4个字节是crc32,后面是一个接一个\0结束的字符串,每个串都是envname=enavalue的格式。 挪用uboot部分的相关代码,实现以下函数: int set_env_ptr(unsigned char * ptr); char *get_env (char *name); int set_env (char *varname, char *varvalue); ...
env_get_char = env_get_char_memory;//得到环境变量的地址的函数 if (gd->env_valid == 0) {//如果环境变量在一开始初始化的时候无效,重新定位默认环境变量 #if defined(CONFIG_GTH) || defined(CFG_ENV_IS_NOWHERE) /* Environment not changable */ ...
这个interrupt_init函数,其实就是给pwm timer4设置为定时10ms。并开启该定时器。 4.env_init 和环境变量有关的初始化函数。common\env_movi.c程序中。 这个函数在很多文件有定义。原因是uboot支持各种不同的启动介质(如norflash,nandflash,inand,sd卡……),从什么地方启动,就将环境变量env放到哪里。而各种介质存...
通过env_get_addr(0)函数(common/env_common.c),获取到环境变量数组中第一个环境变量的地址。 如果返回地址为0,说明环境变量还没有拷贝到内存中,直接返回1。 argv[1]为输入setenv的第一个参数,也就是要设置的环境变量名,保存在name中。如果在参数中有=号,提示错误信息,并返回。
UBOOT:env(环境变量)env包含以下⽂件:cmd/nvedit.c common/env_common.c common/env_flags.c common/env_common.c env_htab 为环境变量的哈希表。uchar env_get_char(int index)返回(gd->env_addr+index)的字符串指针。common/env_flags.c int env_flags_validate(const ENTRY *item, const char *...
从以上源码可以看出,bootm和bootz都是调用do_bootm_states函数启动内核的,下面分析do_bootm_states实现过程。 do_bootm_states函数 以下是该函数源码 /** * Execute selected states of the bootm command. * * Note the arguments to this state must be the first argument, Any 'bootm' ...