关于写u_boot时环境变量存储问题解决办法
2013-12-08 18:32
381 查看
再使用u_boot时敲pri命令,会打印环境变量,而且每次更改之后,sav,下次开机环境变量还会存在。
其实在使用# pri命令时发现最后一行有
bootargs=root=/dev/nfs nfsroot=192.168.1.10:/nfsroot ip=192.168.1.20 console=tt0
baudrate=115200
ethaddr=00:40:5c:26:0a:5b
bootdelay=3
bootcmd=tftp 50008000 arm.bin;nand erase 0 40000;nand write 50008000 0 40000
stdin=serial
stdout=serial
stderr=serial
filesize=2720
fileaddr=50008000
gatewayip=192.168.1.1
netmask=255.255.255.0
ipaddr=192.168.1.20
serverip=192.168.1.10
Environment size: 382/16380 bytes
最后一行,可知环境表两大小为16KB.又知u_boot在nand flash中到位置时0-0x40000(256KB),所以可以把环境变量存放在(0x36000 - 0x40000)位置上。代码如下
这样每次开机中哦后就可以读取自己修改到变量信息啦。
其实在使用# pri命令时发现最后一行有
bootargs=root=/dev/nfs nfsroot=192.168.1.10:/nfsroot ip=192.168.1.20 console=tt0
baudrate=115200
ethaddr=00:40:5c:26:0a:5b
bootdelay=3
bootcmd=tftp 50008000 arm.bin;nand erase 0 40000;nand write 50008000 0 40000
stdin=serial
stdout=serial
stderr=serial
filesize=2720
fileaddr=50008000
gatewayip=192.168.1.1
netmask=255.255.255.0
ipaddr=192.168.1.20
serverip=192.168.1.10
Environment size: 382/16380 bytes
最后一行,可知环境表两大小为16KB.又知u_boot在nand flash中到位置时0-0x40000(256KB),所以可以把环境变量存放在(0x36000 - 0x40000)位置上。代码如下
void env_init(void) { int i; int flag = 1; nand_read(0x50000000, 0x36000, 12*128);//读取nand 下次开机时看是否已经初始化过环境变量 flag = str_cmp((char *)0x50000000, "serial");//我的环境变量以数组存储的,第一个时stdout变量 //uart_printf("env init: %d\n", flag); if(!flag) { for(i = 0; i < 12; i++) { str_cpy(myenv[i].env_str, (char *)0x50000000 + i * 128);//如果已经初始化过,从nand 中读取到结构体数组中 sum_length += str_len(myenv[i].env_str); //计算环境变量到字节长 } env_time = chartod(myenv[3].env_str);//初始化bootdelay信息 } else//为初始化,打印初始化信息,并存入nand中 { for(i = 0; i < 12; i ++) { str_cpy(myenv[i].env_str, env_init_str[i]); sum_length += str_len(env_init_str[i]); } env_time = chartod(myenv[3].env_str); sav_env(); } }void sav_env(void) { nand_erase(0x36000,0x40000); nand_write((unsigned long *)myenv,0x36000,12 * 128); uart_printf("Saving Environment to NAND...\ndone\n"); }
这样每次开机中哦后就可以读取自己修改到变量信息啦。
相关文章推荐
- 关于Windows10 Java环境变量配置问题的解决办法
- 关于Windows10 Java环境变量配置问题的解决办法
- 关于tomcat环境下上传大文件遇到的问题及解决办法
- 关于Qt移植后环境变量的设置 qt移植到arm中文显示问题解决 实现pc与tiny210 arm开发板 udp通信
- 关于wamp+eclipse for PHP环境的搭建以及其中部分问题的解决办法
- 关于AIX下的su不能使用环境变量问题的解决
- 关于unity在苹果环境中中文乱码的问题?解决办法!!
- 关于“错误:找不到或无法加载主类”的错误的解决办法(环境变量确信自己已经设置好了的人可以参考一下这个)
- 【ZYNQ LINUX】使用问题04 ubuntu12 环境变量修改错误,不能进入root 修改的解决办法
- linux如何设置环境变量的三种方法:解决类似“ifconfig ;commond not found”问题办法
- 关于搭建php电商环境时缺少fileinfo、数据库安装出错问题解决办法
- 关于VS2008 中添加成员变量提示 此网站的某个加载项运行失败 请检查“Internet选项”中的安全设置是否存在潜在冲突 问题解决办法
- Spring boot项目maven的profile多环境配置不自动替换变量的问题解决
- 关于tomcat环境下上传大文件遇到的问题及解决办法
- 环境变量的误改出现的小问题和解决办法
- 关于jdk环境变量配置问题的解决
- 关于VS2008 中添加成员变量提示 此网站的某个加载项运行失败 请检查“Internet选项”中的安全设置是否存在潜在冲突 问题解决办法
- 关于多文件引用头文件变量重复定义的解决办法【BCB2010环境】
- Crontab内环境变量与Shell环境变量的关系及解决问题的办法
- Spring boot 项目 maven的profile多环境配置 不自动替换变量的问题解决