fw_printenv 配置文件 nand flash
一)、概述
Linux应用程序可以通过uboot/tools/env目录下的fw_printenv程序,查看,修改,删除Uboot的环境变量。
如:system("/usr/sbin/fw_setenv ipaddr 192.168.17.100");
或者在命令行 # /usr/sbin/fw_setenv ipaddr 192.168.17.100
(二)、编译
1.确保Fw_env.h文件中存在以下定义:
#define CONFIG_FILE "/etc/fw_env.config"
上面的定义使得fw_setenv程序会从/etc/fw_env.config中获取配置参数。具体参见
Fw_env.c中parse_config ()源码。
static int parse_config ()
{
struct stat st;
#if defined(CONFIG_FILE)
/* Fills in DEVNAME(), ENVSIZE(), DEVESIZE(). Or don't. */
if (get_config (CONFIG_FILE)) {
fprintf (stderr,
"Cannot parse config file: %s\n", strerror (errno));
return -1;
}
#else
strcpy (DEVNAME (0), DEVICE1_NAME);
DEVOFFSET (0) = DEVICE1_OFFSET;
ENVSIZE (0) = ENV1_SIZE;
DEVESIZE (0) = DEVICE1_ESIZE;
ENVSECTORS (0) = DEVICE1_ENVSECTORS;
.....
#endif
.....
}
2.在uboot根目录执行
Make env
3.将uboot/tools/env/fw_printenv 拷贝到目标机的/ust/sbin目录下,并通过“ln -s fw_printenv fw_setenv”创建一个fw_setenv到fw_printenv的软连接。
4.将uboot/tools/env/fw_env.config拷贝到目标机的/etc/目录下,并修改为合适值。
(三)、修改配置
1、fw_env.config默认配置如下:
[root@localhost env]# vi fw_env.config
# Configuration file for fw_(printenv/saveenv) utility.
# Up to two entries are valid, in this case the redundant
# environment sector is assumed present.
# Notice, that the "Number of sectors" is ignored on NOR.
# MTD device name Device offset Env. size Flash sector size Number of sectors
/dev/mtd1 0x0000 0x4000 0x4000
/dev/mtd2 0x0000 0x4000 0x4000
# NAND example
#/dev/mtd0 0x4000 0x4000 0x20000 2
2、我使用的是NAND FLASH
先在目标机执行cat /proc/mtd,获得配置参数MTD device name和 Flash sector size
# cat /proc/mtd
dev: size erasesize name
mtd0: 00040000 00020000 "u-boot"
mtd1: 00040000 00020000 "u-bootenv"
mtd2: 00280000 00020000 "kernel"
mtd3: 00200000 00020000 "data"
mtd4: 07b00000 00020000 "rootfs"
简单解释下配置文件中一个字符串的含义
MTD device name : "u-bootenv"对应“mtd1”
Device offset : 环境变量在mtd1中的偏移地址
Env. size : 环境变量大小
Flash sector size :NAND flash 块大小 擦除大小 0x20000
3.一般NAND flash 会保存两次环境变量(在两个地方),也就是RedundEnv。
在uboot命令行执行saveenv 也会发现执行了两次write nand 操作:
执行两次的原因是定义了CONFIG_ENV_OFFSET_REDUND。
firetux # saveenv
Saving Environment to NAND...
Erasing redundant Nand...
Erasing at 0x60000 -- 100% complete.
Writing to redundant Nand... Erasing Nand...
Erasing at 0x40000 -- 100% complete.
Writing to Nand... done
firetux #
4.查看uboot/include/autoconfig.mk文件,获取配置参数Device offset, Env. size 。
CONFIG_ENV_OFFSET="0x40000"
CONFIG_ENV_OFFSET_REDUND="0x60000"
CONFIG_ENV_SIZE="0x20000"
可见,环境变量存放的位置有两个。
第一个:0x40000开始,大小是0x20000 .
第二个:0x60000开始,大小是0x20000 .
0x40000,0x0x60000都是相对有mtd0(0x00000)而言,相对于mtd1而言就是0x0000和0x20000
所以配置文件应该修改为
# Configuration file for fw_(printenv/saveenv) utility.
# Up to two entries are valid, in this case the redundant
# environment sector is assumed present.
# Notice, that the "Number of sectors" is ignored on NOR.
# MTD device name Device offset Env. size Flash sector size Number of sectors
/dev/mtd1 0x0000 0x20000 0x20000 1
/dev/mtd1 0x20000 0x20000 0x20000 1
(四)、备注
Fw_setenv 不能修改或者删除"ethaddr", "serial#"这两个环境变量。
当然可以通过修改fw_env.c中的fw_env_write函数,来越过此限制。
屏蔽下面代码
if ((strcmp (name, "ethaddr") == 0) ||
(strcmp (name, "serial#") == 0)) {
fprintf (stderr, "Can't overwrite \"%s\"\n", name);
errno = EROFS;
return -1;
}
---------------------
作者:nanaoxue
来源:CSDN
原文:https://blog.csdn.net/nanaoxue/article/details/22158171
版权声明:本文为博主原创文章,转载请附上博文链接!
fw_printenv 配置文件 nand flash相关推荐
- nor flash 和nand flash 的区别
ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写.ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是 ...
- NAND Flash和NOR Flash的区别
1. 区别 NOR的特点是芯片内执行(XIP,eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中.优点是可以直接从FLASH中运行程序 ...
- Nand Flash VS Nor Flash
NOR Flash 生产厂商有 Intel和ST, Nand Flash厂商有Hynix,micon,Samsung,Toshiba和Fujitsu等. 2006年NAND将占据59%的闪存市 ...
- Nand Flash与Nor Flash
Nand Flash与Nor Flash经常在一些地方被提到,以下是他们的 一些对比: NOR的特点是芯片内执行(XIP,eXecute In Place),这样应用程序可以直接在flash闪存内运行 ...
- NOR和NAND Flash存储器的区别
NOR和NAND是现在市场上两种主要的非易失闪存技术.Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面.紧接着,1989年,东芝公司发表了 ...
- jz2440开发板修改UBOOT支持NAND FLASH
很多天没有看嵌入式的东西了,今天来看一下,继续之前移植uboot到jz2440开发板.今天我们来实现Uboot支持NAND FLASH. 在之前的文章里(点击连接查看之前的记录),我们为了编译通过把N ...
- Nand Flash数据存储单元的整体架构
http://www.crifan.com/files/doc/docbook/linux_nand_driver/release/html/linux_nand_driver.html 简单说就是, ...
- nor flash和nand flash
FLASH和EEPROM的最大区别是FLASH按扇区操作,EEPROM则按字节操作,二者寻址方法不同,存储单元的结构也不同,FLASH的电路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低 ...
- arm 基础:Nand Flash与Nor Flash的区别
Nand Flash与Nor Flash NOR的特点是芯片内执行(XIP,eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中.优点是可以直 ...
最新文章
- 【原创】CSSOO的思想及CSS框架的应用(未整理完)
- [转]ELF文件结构简述
- 2020ICPC(上海) - Sum of Log(数位dp)
- 为什么喜欢听钢琴+小提琴
- mysql rs.next_JDBC结果集rs.next()注意事项
- 拿着6位数工资,没写一行代码!为何还能成为最佳员工?
- EXCEL导入SQL的语句
- 我常去的编程技术网站
- Python 处理 PDF 的神器 -- PyMuPDF(下)
- 2414905-34-1,Thalidomide-O-PEG5-Tosyl它与亲核物质如胺、含羟基的分子反应
- c语言将整数赋值给指针,在c语言只能够允许将一个整数赋值给指针变量。
- STM32外部中断触发
- openwrt怎么做ap_终于把无线AP鸡肋的系统刷成openwrt,从此山鸡变凤凰!
- 关于lego-loam的总结(一)
- MATLAB中simulink的SIL测试
- ES6的Lambda表达式
- 南京邮电大学计算机考研专硕初试经验分享
- 菜鸟教程:Python练习实例1~10
- 2022大数据十大关键词-记录
- 2845 ACM 豆子 beans
热门文章
- LintCode领扣算法问题答案:150. 买卖股票的最佳时机 II
- 皮皮安学习Java第五天(今日闲聊)
- 91三网话费接口渠道文档分享
- 合并数组与非合并数组——SystemVerilog
- 《黑客与画家 》--- 地铁系列
- 荣耀20青春版刷鸿蒙os,华为不忘老用户 5年前的华为手机也能升级鸿蒙OS 具体升级名单出炉...
- Java面试题(杭州面试初级总结)
- 护卫神apache大师3.0.0 php,护卫神Apache大师(PHP环境套件)V3.2.0 官方免费版
- 老魔杖(博弈 大数取模)
- GNSS基本概念(1):仰角和方位角(Elevation and Azimuth)