依次遍历调用函数指针数组init_sequence中的函数,如果有函数执行出错,则执行hang函数,打印出”### ERROR ### Please RESET the board ###”,进入死循环。 (2)初始化uboot的堆管理器mem_malloc_init (3)初始化SMDKV210的SD/MMC控制器mmc_initialize (4)环境变量重定位env_relocate (5)将环境变量中网卡地址赋...
abortboot_single_key:该函数主要用于while循环检测按键,如果有按键按下,将abort标志位置1,最后运行cli_loop命令行模式的函数。 如果按键不按下,标志位abort不起作用,直接运行 run_command_list(s, -1, 0); s = env_get("bootcmd"); 直接跳转到我们设置的环境变量bootcmd,所设定的指令,而不执行cli_loop函数。
大于的话,就调用_do_setenv函数(common/cmd_nvedit.c中)。 通过env_get_addr(0)函数(common/env_common.c),获取到环境变量数组中第一个环境变量的地址。 如果返回地址为0,说明环境变量还没有拷贝到内存中,直接返回1。 argv[1]为输入setenv的第一个参数,也就是要设置的环境变量名,保存在name中。如果在参...
env_get_char = env_get_char_memory;//得到环境变量的地址的函数 if (gd->env_valid == 0) {//如果环境变量在一开始初始化的时候无效,重新定位默认环境变量 #if defined(CONFIG_GTH) || defined(CFG_ENV_IS_NOWHERE) /* Environment not changable */ puts ("Using default environment\n\n"); #el...
linux程序读写uboot env变量 分析发现uboot env的存储格式是,开始4个字节是crc32,后面是一个接一个\0结束的字符串,每个串都是envname=enavalue的格式。 挪用uboot部分的相关代码,实现以下函数: int set_env_ptr(unsigned char * ptr); char *get_env (char *name);...
分析发现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); ...
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 *newval, enum env_op op, int flag)在创建、修改、删除⼀个环境变量时进⾏⼀致性检查的函数。
第一个 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...
从以上源码可以看出,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' ...
和环境变量有关的初始化函数。common\env_movi.c程序中。 这个函数在很多文件有定义。原因是uboot支持各种不同的启动介质(如norflash,nandflash,inand,sd卡……),从什么地方启动,就将环境变量env放到哪里。而各种介质存取操作env的方法是不一样的。因此uboot支持了各种不同介质中env的操作方法,所以有好多个env_xx...