---
title: 嵌入式Linux如何设置获取uboot参数
EntryName: embeded-linux-debug-get-and-set-u-boot-envarg
date: 2020-07-20 09:33:01
categories:
tags:
- uboot
- arm
- linux
- debug
---

章节概述:

uboot下可以通过命令访问和修改环境变量,但是如果需要在arm-Linux系统下访问这些数据该怎么办呢?其实uboot早就帮我们想好了。

步骤

uboot版本:一般在2011年以后的都有(见过2011年版本的uboot教程)

编译fw_printenv

在你使用的uboot代码中用以下编译指令:

make env ARCH=xx CROSS_COMPLIE=xx-

这样就可以编译tools/env下的代码,编译出的fw_printenv工具有读写uboot环境变量区的能力。

安装fw_printenv

tools/env目录中,将编译好的fw_printenv拷贝到目标机的文件系统中,并通过ln -s fw_printenv fw_setenv,创建一个fw_setenv到fw_printenv的软链。

配置

这个工具还需要一个配置文件,以获取uboot的ENV区域的位置信息。

默认状态下,请将fw_env.config文件拷贝到目标机的文件系统的/etc目录下。

然后结合uboot配置中定义的ENV区和Linux下mtd分区的情况修改配置文件。

具体的修改方法见fw_env.config文件中的说明及/tools/env/README文件。

配置一定要和系统的配置相同。

跟据以上三个定义修改fw_env.config,以emmc为例:

# Configuration file for fw_(printenv/setenv) utility.
# Up to two entries are valid, in this case the redundant
# environment sector is assumed present.
# Notice, that the "Number of sectors" is not required on NOR and SPI-dataflash.
# Futhermore, if the Flash sector size is ommitted, this value is assumed to
# be the same as the Environment size, which is valid for NOR and SPI-dataflash # NOR example
# MTD device name Device offset Env. size Flash sector size Number of sectors
#/dev/mtd1 0x0000 0x4000 0x4000
#/dev/mtd2 0x0000 0x4000 0x4000
# MTD SPI-dataflash example
# MTD device name Device offset Env. size Flash sector size Number of sectors
#/dev/mtd5 0x4200 0x4200
#/dev/mtd6 0x4200 0x4200 # NAND example
#/dev/mtd0 0x4000 0x4000 0x20000 2 # Block device example
# device name env_offset Env.bin_size Env.bin_size Env_partition_sectors
/dev/mmcblk0 0x3000000 0x20000 0x20000 0x8000

参数解析:

  • /dev/mtd0是专门给环境变量分配的分区。Device offset 是只环境变量在此分区上的偏移,不是指在整个nand上的偏移。

环境变量的烧写地址是 0x80000,大小0x10000,block大小是0x20000。这里因为mtd0分区设定了起始地址是0x80000,所以环境变量在此分区上的偏移地址为 0了

使用 fw_printenv

其实fw_printenv使用起来和uboot下的printenv和setenv指令是一模一样的。

获取uboot环境变量

fw_printenv [[ -n name ] | [ name ... ]]

如果不指定name,fw_printenv会打印出ENV区中的所有环境变量

设置uboot环境变量

fw_setenv name [ value ... ]

如果不指定value,表示要删除这个name的环境变量。

嵌入式Linux如何设置获取uboot参数的更多相关文章

  1. 为什么要有uboot?带你全面分析嵌入式linux系统启动过程中uboot的作用

    1.为什么要有uboot 1.1.计算机系统的主要部件 (1)计算机系统就是以CPU为核心来运行的系统.典型的计算机系统有:PC机(台式机+笔记本).嵌入式设备(手机.平板电脑.游戏机).单片机(家用 ...

  2. 嵌入式linux串口设置(一)

    在linux中,所有的设备文件一般都位于“/dev”下,串口1和串口2对应的设备名依次为“/dev/ttyS0”, “/dev/ttyS1”,而且USB转串口的设备名通常为“/dev/ttyUSB0” ...

  3. 带你全面分析嵌入式linux系统启动过程中uboot的作用

    资料链接:http://mp.weixin.qq.com/s/rYVchD-xy7Bdkc1O3fW2Wg

  4. 嵌入式linux开发uboot启动内核的机制(二)

    一.嵌入式系统的分区 嵌入式系统部署在Flash设备上时,对于不同SoC和Flash设备,bootloader.kernel.rootfs的分区是不同的.三星S5PV210规定启动设备的分区方案如下: ...

  5. 安装ORACLE时在Linux上设置内核参数的含义

    前两天看到一篇Redhat官方的Oracle安装文档,对于Linux内核参数的修改描述的非常清晰. 安装Oracle之前,除了检查操作系统的硬件和软件是否满足安装需要之外,一个重点就是修改内核参数,其 ...

  6. 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)

    深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...

  7. cookie设置和读取以及获取超链接参数

    function setCookie(c_name, value, expiredays) { var exdate = new Date() exdate.setDate(exdate.getDat ...

  8. 《嵌入式Linux基础教程学习笔记一》

    常用书目下载地址:http://www.cnblogs.com/pengdonglin137/p/3688029.html 第二章 1.进程上下文和中断上下文(Page20) 当应用程序执行系统调用, ...

  9. 嵌入式linux系统的构建

    前期工作:a.配置好tftp服务器:在嵌入式的童年中有介绍 b.开发板可以pc,linux 三者可以互相ping通 c.配置好nfs服务器:同样在嵌入式的童年中有介绍 一.嵌入式linux内核的制作( ...

  10. 嵌入式linux和嵌入式android系统有什么区别和联系?

    转自:http://bbs.eeworld.com.cn/thread-430437-1-1.html 这个问题很多人问,尤其是初入嵌入式的菜鸟.其实大家都认为android是java,已经不是lin ...

随机推荐

  1. C++ lambda的重载

    先说结论,lambda是不能重载的(至少到c++23依旧如此,以后会怎么样没人知道).而且即使代码完全一样的两个lambda也会有完全不同的类型. 但虽然不能直接实现lambda重载,我们有办法去模拟 ...

  2. 教你用Perl实现Smgp协议

    本文分享自华为云社区<华为云短信服务教你用Perl实现Smgp协议>,作者:张俭. 引言&协议概述 中国电信短消息网关协议(SMGP)是中国网通为实现短信业务而制定的一种通信协议, ...

  3. 02.go-admin IDE配置配置命令启动方式讲解笔记

    目录 go-admin版本 视频地址 一.代码地址 二.在线文档 三.首次配置需要初始化数据库资源信息(已初始化过数据库的,跳过此步) 配置数据库迁移 五.配置启动项目,用goland IDE进行启动 ...

  4. chgrp chown

    chgrp 用来改变文件所属群组,如果要改变的群组不在/etc/group里面,将会报错. chown 用来改变文件的所有者,如果改变的所有者便在/etc/passwd里面,将会报错. 需要注意的是c ...

  5. 在tomcat上安装PFX格式证书部署https

    您可以在Tomcat服务器安装已签发的SSL证书,实现通过HTTPS安全访问Web服务.本文介绍如何在Tomcat服务器安装PFX格式的SSL证书. 步骤一:在阿里云的域名管理后台,下载SSL证书 登 ...

  6. C语言:学生成绩排名----冒泡排序

    题目: /*     输入10个学生成绩.     计算总分以及平均分数.     求出高于等于平均分的人数.     再按降序(由大到小)排序成绩并输出      */ 用到的冒泡算法代码模板: / ...

  7. apisix~集成服务发现注册中心

    摘要 当业务量发生变化时,需要对上游服务进行扩缩容,或者因服务器硬件故障需要更换服务器.如果网关是通过配置来维护上游服务信息,在微服务架构模式下,其带来的维护成本可想而知.再者因不能及时更新这些信息, ...

  8. linux 文件扩展权限ACL(访问控制列表)

    目录 一.关于文件扩展权限ACL 二.给文件加扩展权限 三.给目录加扩展权限 四.给目录下所有文件都加扩展权限 五.去掉单个acl权限 六.去掉所有acl权限 一.关于文件扩展权限ACL 在linux ...

  9. C# wpf之控制屏幕显示方向旋转

    using System;using System.Collections.Generic;using System.Linq;using System.Runtime.InteropServices ...

  10. uniapp 返回顶部

    <template> <view> <view class="btn" @tap="toTop" :style="{'d ...