[玩软件] 海思 fw_printenv 和 fw_setenv 工具详解
作者:CC下载站 日期:2023-10-11 22:39:38 浏览:71 分类:玩软件
前言:
1:编译前请先自行安装所需的交叉编译器(参考SDK里文档: readme.txt)
2:本文介绍的env工具的配置使用,适合所有的嵌入式平台参考开发
3:本文将以 Hi3536_SDK_V2.0.7.0 和 u-boot-2010.06 为例
1、开发环境:
windows10电脑 + 虚拟机15 Pro + Ubuntu18.0.4
2、fw_printenv 和 fw_setenv 的作用
如果做过 uboot 移植/开发的,或者熟悉 uboot 命令行操作的,相信大家对于 printenv 和 setenv 并不陌生。在 uboot 命令行中,printenv 的作用是查看保存在环境变量中的默认参数,setenv 的作用是对环境变量的默认参数做出临时的修改(还需要调用 saveenv 才能更新保存)。
那么 fw_printenv 和 fw_setenv 有什么作用呢?它们的作用基本是等同于 printenv 和 setenv 的,只不过 printenv 和 setenv 只能在 uboot 命令行使用,而 fw_printenv 和 fw_setenv 则可以在应用层上对 uboot 环境变量的参数做出修改。
特别声明, fw_setenv 除了能修改 uboot 环境变量参数外,还自带了保存功能,在这一点上它是跟 setenv 有区别的。
fw_setenv 仅仅是 fw_printenv 创建的一个软链接,基本不占内存空间(下面的篇幅将会有相关的介绍)。
3、fw_printenv 配置方法一
3.1 工具源码路径
由于本文以 Hi3536 为例对功能进行介绍,所以在此文中只列举相关 SDK 的 uboot 源码
uboot 源码路径:Hi3536_SDK_V2.0.7.0/osdrv/opensource/uboot/u-boot-2010.06/
fw_printenv 源码路径:u-boot-2010.06/tools/env/
3.2 工具源码编译
3.2.1 编译命令及步骤
# 进入 uboot 源码目录 cd Hi3536_SDK_V2.0.7.0/osdrv/opensource/uboot/u-boot-2010.06 # 如果是首次编译,建议先整体编译一次uboot源码,否则可跳过此步骤 make ARCH=arm CROSS_COMPILE=arm-hisiv400-linux- hi3536_config make ARCH=arm CROSS_COMPILE=arm-hisiv400-linux- -j8 # 开始编译 fw_printenv 工具 make ARCH=arm CROSS_COMPILE=arm-hisiv400-linux- env
源码编译成功后会在 tools/env 目录下,生成 fw_env.config 和 fw_printenv 两个文件:
3.2.2 解决编译出现的问题(建议先执行此步骤,再执行 3.2.1)
需要屏蔽 include/linux/types.h 中的 uintmax_t 和 intmax_t 这两个参数:
# 进入 uboot 源码目录 cd Hi3536_SDK_V2.0.7.0/osdrv/opensource/uboot/u-boot-2010.06 # 屏蔽以下的变量声明(因为在 arm-hisiv500-linux/target/usr/include/stdint.h 已经定已过了) vi include/linux/types.h +154 //typedef u_int32_t uintmax_t; //typedef int32_t intmax_t;
3.2.3 include/linux/types.h 参数使用声明
特别声明:执行完 3.2.2 后,建议把刚才在 include/linux/types.h 屏蔽的参数重新打开,否则当你需要编译 uboot.bin 时会有参数未定义的报错:
3.3 修改工具的配置文件 fw_env.config
配置 fw_env.config 文件,以获取 uboot 的 env 区域的位置信息
具体的修改方法见 fw_env.config 文件中的说明及 u-boot-2010.06/tools/env/README 文件。其中需要注意的是 nor flash 可以忽略 “Number of sectors” 这个扇区的配置,只有 nand flash 才会用到。
那么 nand flash 配置 Number of sectors 为 1 或者 2,分别是什么意思呢?其实,1 表示当前使用的 uboot 只配置了一个 env 环境变量扇区,而 2 则表示有 2 个 env 环境变量扇区。大家在配置参数时可根据实际情况来配置。
下面我们将以 uboot/hi3536.h(nor flash)1个env环境变量扇区为例,配置 fw_env.config 文件具体实现如下:
1)查看 hi3536c.h 环境变量配置:
#define CONFIG_ENV_OFFSET 0x80000 /* environment starts here */
#define CONFIG_ENV_SIZE 0x40000 /* include ENV_HEADER_SIZE */
#define CONFIG_ENV_SECT_SIZE CONFIG_ENV_SIZE
2)修改 fw_env.config 文件配置:
# MTD device name Device offset Env. size Flash sector size Number of sectors
/dev/mtd0 0x80000 0x40000 0x40000
如何确定 fw_env.config 文件中 uboot 环境变量使用了哪个设备节点,可通过如下命令查看:
cat /proc/mtd
4、fw_printenv 配置方法二
本章到这里为止都只是围绕着 fw_printenv 配置 fw_env.config 的方法来实现功能的。
其实,fw_printenv 还有另外一种配置方法,它是不需要配置 fw_env.config 就可实现的,那就是直接修改工具源码来做参数配置。接下来我们看下这个工具的源码(fw_env.c 和 fw_env.h),再结合 u-boot-2010.06/tools/env/README 文件,看看它的实现原理是怎样的?
这里我就不卖关子了,直接看源码实现:
通过过源码分析,相信大家对于 fw_printenv 这个工具也有一定的了解了,我们是可以直接修改 fw_env.h 这个头文件来配置 env 分区信息的。
修改 fw_env.h 参数后的运行效果跟 fw_env.config 是一样的(运行效果请继续往下看)。
只不过,通过修改 fw_env.h 参数的方法有一个很明显的缺点,就是当 uboot 的 env 分区信息发生变化后,我们必须要重新编译 fw_printenv 工具才可用,否则使用 fw_printenv 时会报“Warning: Bad CRC, using default environment” 的错误。原因是 env 参数信息与 fw_printenv 工具配置的信息不一致了。
5、对 fw_printenv 工具进行压缩
为了节省 Flash 内存空间,可通过如下命令去掉工具中相应的符号和调试信息:
# 进入工具生成路径 cd Hi3536_SDK_V2.0.7.0/osdrv/opensource/uboot/u-boot-2010.06/tools/env # 对工具进行压缩处理 arm-hisiv400-linux-strip fw_printenv
6、fw_printenv 工具移植
6.1 将 fw_printenv 移植到目标机
将 fw_printenv 工具,拷贝到目标机文件系统(rootfs)的 /bin 目录下:
cd Hi3536_SDK_V2.0.7.0/osdrv/opensource/uboot/u-boot-2010.06/tools/env cp fw_printenv rootfs/bin
6.2 将 fw_env.config 移植到目标机
特别声明:这一步的移植方法只适用于 “步骤3 -- 方法一”,若使用 “步骤4 -- 方法二”请忽略此步骤。
将 fw_env.config 配置文件,拷贝到目标机文件系统(rootfs)的 /etc 目录下:
cd Hi3536_SDK_V2.0.7.0/osdrv/opensource/uboot/u-boot-2010.06/tools/env cp fw_env.config rootfs/etc
6.3 创建 fw_setenv 工具
进入目标机文件系统(rootfs)的 /bin 目录下,通过软链接创建一个 fw_setenv 工具:
cd rootfs/bin ln -s fw_printenv fw_setenv
7、fw_printenv 和 fw_setenv 工具的使用
经过上边一些步骤的编译与移植之后,现在我们可以开始测试一下工具在目标机上是否可用了。
那么如何测试呢?我们可以直接进入目标机的任意路径,只需输入 fw_printenv 然后回车,即可查看到 uboot 环境变量保存的默认参数了:
fw_printenv
那么有没有更直观的使用方法呢?这不就来了吗,且看我们在目标机上对 uboot 开机延时 bootdelay 做些修改,将 bootdelay 从等待 1s 变为等待 3s:
bootdelay 参数修改后,reboot 重启目标机后,可以看到 uboot 开机延时时间确实改为了 3s 的等待:
6、总结
上边总共介绍了两种 fw_printenv 工具的配置方法,分别是 fw_env.config 和 fw_env.h 的配置。
在此,本人还是推荐优先使用 fw_env.config 配置的方法,为什么呢?因为这样的使用灵活很多。
好了,本章内容就到此结束了,感谢大家的支持与鼓励。
猜你还喜欢
- 03-04 [服务器类]iis6.0安装包
- 04-07 [QQ专区]qq服务器拒绝了您发送离线文件解决方法
- 07-10 [玩网络] 服务器防火墙规则及进出站端口设置
- 08-20 [教程] 商梦网校VPS服务器管理教程
- 10-21 [操作系统]《红帽企业Linux 5.9服务器版》(Red Hat Enterprise Linux 5.9 Server)x86/64[光盘镜像]
- 04-07 [棋牌源码] 颂游棋牌各种教程各种端带服务器,一锅鲜大聚会
- 05-27 [站长帮] 宝塔的PHP环境下,服务器大量php-cgi.exe进程导致CPU占用100%
- 06-02 [服务器教程] ZBench: 服务器一键测试脚本 / 自带结果导出
- 08-12 [黑客软件] 御剑RDP爆破工具_暴力批量破解服务器
- 10-04 [服务器] 打开网站显示“No input file specified.”的解决方法
- 10-23 [服务搭建] 服务器Windows 2008系统安装IIS
- 10-29 [网络资源] Amazon Lightsail 一键管理服务器脚本
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[电影] 《环太平洋两部合集》 4K REMUX原盘 [杜比视界] 国英双语音轨 [内封特效字幕] [133.8G]
[电影] 异人之下 The Traveller 2024✨【影版】【4K正式版/HQ超高码/DDP5.1】✚【1080高码】无水印/无压缩
[动漫] 头文字D 动漫 (1998) S01-S06季 1080P 国粤日音轨 续作 剧场版 电影
[小说] 知轩藏书全站7667册txt小说合集精心校对版
[杂志] 电脑爱好者杂志14年 超全 [PDF]
[电影] 西游记全部版本-4K高清修复-总计384G-1986+1996+1998+2002+2010浙版+西游记后传
[纪录片] 【国家地理百年纪念典藏】超经典100集全 MP4格式 (绝佳学习资料)27GB
[纪录片] B站食贫道收费纪录片 *迷失东京* [1080P] 揭露日本大家感兴趣却不为人知的秘密
[网络线报] 城通网盘福利线报解析器 - 获取直连下载地址
[福利线报] 一个「脚本」搞定六大网盘(百度/阿里/天翼/迅雷/夸克/移动)
[游戏] 《黑神话悟空》免安装学习版【全dlc整合完整版】+Steam游戏解锁+游戏修改工具!
[动画] 《名侦探柯南》名侦探柯南百万美元的五菱星 [TC] [MP4]
[电视剧集] [BT下载][黑暗城市- 清扫魔 Dark City: The Cleaner 第一季][全06集][英语无字][MKV][720P/1080P][WEB-RAW]
[涨点姿势] 男性性技宝典:14招实战驭女术——爱抚、按摩、催情、姿势、高潮全攻略
[动画] 2002《火影忍者》720集全【4K典藏版】+11部剧场版+OVA+漫画 内嵌简日字幕
[剧集] 《斯巴达克斯》1-4季合集 无删减版 1080P 内嵌简英特效字幕
[CG剧情] 《黑神话:悟空》158分钟CG完整剧情合集 4K120帧最高画质
[短剧] 被下架·禁播的羞羞短剧·午夜短剧合集
[游戏] 黑神话悟空离线完整版+修改器
[图像处理] 光影魔术手v4.6.0.578绿色版
[影视] 美国内战 4K蓝光原盘下载+高清MKV版/内战/帝国浩劫:美国内战(台)/美帝崩裂(港) 2024 Civil War 63.86G
[影视] 一命 3D 蓝光高清MKV版/切腹 / 切腹:武士之死 / Hara-Kiri: Death of a Samurai / Ichimei 2011 一命 13.6G
[影视] 爱情我你他 蓝光原盘下载+高清MKV版/你、我、他她他 2005 Me and You and Everyone We Know 23.2G
[影视] 穿越美国 蓝光原盘下载+高清MKV版/窈窕老爸 / 寻找他妈…的故事 2005 Transamerica 20.8G
[电影] 《黄飞鸿》全系列合集
[Android] 开罗游戏 ▎像素风格的模拟经营的游戏厂商安卓游戏大合集
[游戏合集] 要战便战 v0.9.107 免安装绿色中文版
[资源] 精整2023年知识星球付费文合集136篇【PDF格式】
[系统]【黑果小兵】macOS Big Sur 11.0.1 20B50 正式版 with Clover 5126 黑苹果系统镜像下载
[美图] 【经典收藏美图集合】1500多张韩国美女高清图片让你的收藏夹更加丰富多彩
- 最新评论
-
有靳东!嘻嘻奥古斯都.凯撒 评论于:10-28 流星花园是F4处女作也是4人集体搭配的唯一一部!奥古斯都.凯撒 评论于:10-28 找了好久的资源,终于在这里找到了。感谢本站的资源和分享。谢谢AAAAA 评论于:10-26 找了好久的资源,终于在这里找到了。感谢本站的资源和分享。谢谢password63 评论于:10-26 找了好久的资源,终于在这里找齐了!!!!blog001 评论于:10-21 找了好久的资源,终于在这里找齐了!!!!blog001 评论于:10-21 找了好久的资源,终于在这里找到了。感谢本站的资源和分享。谢谢WillKwok 评论于:10-09 感谢分享1234123 评论于:10-07 太好了终于找到了谢谢Tom 评论于:10-07 谢谢分享loonghd 评论于:09-30
- 热门tag