嵌入式Linux如何设置获取uboot参数
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参数的更多相关文章
- 为什么要有uboot?带你全面分析嵌入式linux系统启动过程中uboot的作用
1.为什么要有uboot 1.1.计算机系统的主要部件 (1)计算机系统就是以CPU为核心来运行的系统.典型的计算机系统有:PC机(台式机+笔记本).嵌入式设备(手机.平板电脑.游戏机).单片机(家用 ...
- 嵌入式linux串口设置(一)
在linux中,所有的设备文件一般都位于“/dev”下,串口1和串口2对应的设备名依次为“/dev/ttyS0”, “/dev/ttyS1”,而且USB转串口的设备名通常为“/dev/ttyUSB0” ...
- 带你全面分析嵌入式linux系统启动过程中uboot的作用
资料链接:http://mp.weixin.qq.com/s/rYVchD-xy7Bdkc1O3fW2Wg
- 嵌入式linux开发uboot启动内核的机制(二)
一.嵌入式系统的分区 嵌入式系统部署在Flash设备上时,对于不同SoC和Flash设备,bootloader.kernel.rootfs的分区是不同的.三星S5PV210规定启动设备的分区方案如下: ...
- 安装ORACLE时在Linux上设置内核参数的含义
前两天看到一篇Redhat官方的Oracle安装文档,对于Linux内核参数的修改描述的非常清晰. 安装Oracle之前,除了检查操作系统的硬件和软件是否满足安装需要之外,一个重点就是修改内核参数,其 ...
- 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)
深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...
- cookie设置和读取以及获取超链接参数
function setCookie(c_name, value, expiredays) { var exdate = new Date() exdate.setDate(exdate.getDat ...
- 《嵌入式Linux基础教程学习笔记一》
常用书目下载地址:http://www.cnblogs.com/pengdonglin137/p/3688029.html 第二章 1.进程上下文和中断上下文(Page20) 当应用程序执行系统调用, ...
- 嵌入式linux系统的构建
前期工作:a.配置好tftp服务器:在嵌入式的童年中有介绍 b.开发板可以pc,linux 三者可以互相ping通 c.配置好nfs服务器:同样在嵌入式的童年中有介绍 一.嵌入式linux内核的制作( ...
- 嵌入式linux和嵌入式android系统有什么区别和联系?
转自:http://bbs.eeworld.com.cn/thread-430437-1-1.html 这个问题很多人问,尤其是初入嵌入式的菜鸟.其实大家都认为android是java,已经不是lin ...
随机推荐
- STM32的半主机与MicroLIB机制
一.半主机模式 半主机机制的作用 半主机是作用于ARM目标的一种机制,可以将来自STM32单片机应用程序的输入与输出请求传送至运行仿真器的PC主机上.使用此机制可以启用C库中的函数,如printf() ...
- Unity 热更--AssetBundle学习笔记 0.7
AssetBundle AB包是什么? AssetBundle又称AB包,是Unity提供的一种用于存储资源的资源压缩包. Unity中的AssetBundle系统是对资源管理的一种扩展,通过将资源分 ...
- 深度Linux deepin更新,防火墙操作
获取更新 sudo apt-get update 更新系统 sudo apt-get dist-upgrade -y 清理更新缓存 sudo apt-get autoclean 防火墙操作 sudo ...
- NASM中的Preprocessor
NASM中的Preprocessor都以%开头. 单行macro %define %define与C语言中的#define类似: %define a(x) 1+b(x) %define b(x) 2* ...
- fastposter v2.7.1 紧急发布 电商海报编辑器
fastposter v2.7.1 紧急发布 电商海报编辑器 fastposter海报生成器,电商海报编辑器,电商海报设计器,fast快速生成海报 海报制作 海报开发.二维码海报,图片海报,分享海报, ...
- blocks (单调栈)
题目描述 解析 对于这道题,他要求大于k的数进行操作,所以直接让每个数减k,然后用前缀和维护一下与0比较就可以了,因为一段区间和的平 均值大于k的话,那么这就是一个合法区间,即为操作后的这个区间和大于 ...
- c语言在Linux中的使用
gcc版本升级 如何验证gcc正常使用,编译c以及运行 过程 要验证GCC(GNU Compiler Collection)是否正常使用,您可以按照以下步骤进行操作: 检查GCC是否安装:打开终端或命 ...
- Unicode 15.0 标准已发布,新增鹅、豌豆等 20个emoji
原文地址:The Unicode Blog: Announcing The Unicode Standard, Version 15.0 Unicode 标准版本 15.0 现已推出,包括核心规范.附 ...
- 【u8 login debug】u8 16.0 没有调试 login的解决办法
16.0 没有调试 login,改一下注册表 就行[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Ufsoft\WF\V8.700]"Enable.Debu ...
- Vue 3指令与事件处理
title: Vue 3指令与事件处理 date: 2024/5/25 18:53:37 updated: 2024/5/25 18:53:37 categories: 前端开发 tags: Vue3 ...