原文出处:http://blog.csdn.net/qq_29729577/article/details/50580727

希望朋友们多多指点,好的技术或心得一起分享:

uboot向kernel传参机制以及kernel如何解析cmdline参数大家可以参考其他前辈的博文,这方面的讲解十分详尽。

在这里我总结以下自己在uboot自定义一个参数并从kernel中取得的方法:

一.uboot添加自定义参数number

在uboot命令行下,我通过setenv bootargs以及saveenv命令来在bootargs参数中添加自己的一个参数,例如:

=>setenv bootargs xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx number=${num}

=>setenv num 0

=>saveenv

其中bootargs前面部分省略,number为在原bootargs后添加的参数,它会去取num的值,因此以后只要修改num的值即可(这里先设置为0)

二.kernel读取uboot传入的参数number:

在想要取得uboot传入参数的文件中进行如下操作:

1.添加头文件:
  #include <linux/init.h>

2.添加如下内容:
  static unsigned int number;
  static int __init number_setup (char *num)
  {
      number = *num - '0';
  }
  __setup("number=", number_setup);

宏__setup("number=", number_setup)会在bootargs中取得"number="后的值作为函数number_setup的参数num,因此只要在number_setup函数中用全局变量number接收该值即可(此处我将传入的值作为数字处理)。

至此,我们就能在kernel中读取到uboot传入的自定义参数值

****************************************************************************************************************

另:作为用户来说,不可能每次启动都先在uboot命令行下通过setenv,saveenv来修改传入kernel的环境变量,因此uboot提供了fw_printenv工具来让用户在文件系统下来查看和修改环境变量,具体步骤如下:

1.编译fw_printenv工具:

在uboot源码目录下,执行:

make env ARCH=xxx CROSS_COMPILE=yyy

其中xxx和yyy根据自己的交叉编译环境来配置

接着会在tools/env下生成fw_printenv的可执行文件,将其拷贝到文件系统中的/usr/bin(此路径可以自己指定)目录下,再创建fw_printenv的软链接(直接cp也可以):

ln -s /usr/bin/fw_printenv /usr/bin/fw_setenv

2.配置fw_env.config文件

根据mtd分区、UBOOT环境变量的位置、大小等内容修改uboot源码目录的tools/env下的fw_env.config文件,具体的修改方法见fw_env.config文件中的说明及/tools/env/README文件,我的修改内容如下作为参考(需根据实际情况来修改):

# MTD device name       Device offset   Env. size       Flash sector size
/dev/mtd0               0xc0000         0x2000          0x10000

其中Device offset,Env size和Flash sector size应该分别对应于uboot源码目录中include/configs/xxxx.h相关文件中的

CONFIG_ENV_OFFSET,CONFIG_ENV_SIZE和CONFIG_ENV_SECT_SIZE三个宏定义

修改完成后,将fw_env.config文件拷贝到文件系统的/etc目录下。

3.fw_printenv的使用

在文件系统中输入fw_printenv命令来查看环境变量,输入fw_setenv xxx yyy 来修改环境变量(xxx为变量名,yyy为变零值),方法类似setenv,修改后会自动保存,详细用法通过fw_printenv --help命令来查看

ubootenv工具fw_printenv及配置文件fw_env.config相关推荐

  1. 认识ASP.NET配置文件Web.config

      认识ASP.NET配置文件Web.config Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序 ...

  2. 【用户画像】标签任务开发流程(源码之实体类、工具类、配置文件、DAO层)

    文章目录 一 代码实现 0 开发主线 1 实体类 (1)TagInfo (2)TaskInfo (3)TaskTagRule 2 工具类 (1)连接sql的工具类 测试 (2)专门读取properti ...

  3. 类项目中的配置文件app.config在打包安装后的信息获取的问题

    在一个项目中碰到这样的一个问题,做一个WORD插件,功能在类库项目中实现了,配置信息存在类库项目的配置文件app.config中,在进行打包后,获取的配置文件中的DocType节点信息时,使用以下方法 ...

  4. winform程序读取和改写配置文件App.config元素的值

    在开发Web项目的时候,会有一个配置文件Web.config,用来存放一些全局的变量,如连接数据库用的字符串.相应的,在开发winform程序时,也有一个配置文件,它就是App.config,这个文件 ...

  5. C#中怎样获取默认配置文件App.config中配置的键值对内容

    场景 在新建一个程序后,项目中会有一个默认配置文件App.config 一般会将一些配置文件信息,比如连接数据库的字符串等信息存在此配置文件中. 怎样在代码中获取自己配置的键值对信息. 注: 博客主页 ...

  6. 采用ASP.NET IIS 注册工具 (Aspnet_regiis.exe)对web.config实行本地加密

    加密原因:我们通常将一些重要的配置信息写在Web.config里面,其中数据库链接就是这样的信息.将这些数据直接明文显示,显然不太安全. 工具: 采用ASP.NET IIS 注册工具 (Aspnet_ ...

  7. webpack 3 零基础入门教程 #4 - webpack 的配置文件 webpack.config.js

    在命令行中运行 webpack 命令确实可以实现 webpack 的功能,但是我们一般不这么做,我们要用配置文件来处理. 我们把之前学到的知识用 webpack 的配置文件来实现,配置文件的名字叫 w ...

  8. c# 配置文件App.config操作类库

    public class ConfigOperator{#region 从配置文件获取Value/// <summary>/// 从配置文件获取Value/// </summary& ...

  9. DotText源码学习——从配置文件Web.config入手(一)

    2010-03-19 17:18 by 吴秦, 2409 阅读, 12 评论, 收藏, 编辑 概述 ASP.NET配置数据存储在名为Machine.config/Web.config的XML文本文件中 ...

最新文章

  1. SAGEMAKER上部署需要引入sagemakder的API from sagemaker.pytorch import PyTorchModel
  2. python数据挖掘Hello World
  3. ML之SVM:利用SVM算法(超参数组合进行单线程网格搜索+3fCrVa)对20类新闻文本数据集进行分类预测、评估
  4. boost::mpl::advance相关用法的测试程序
  5. C语言中声明和定义的区别
  6. USACO Training Section 1.3混合牛奶 Mixing Milk
  7. C语言#include还有些你不知道的事
  8. JAVA可以用来开放游戏吗?
  9. python下载哪个版本好-python下载哪个版本好
  10. inline-block导致的错位问题详解
  11. 车牌号识别系统(carOR)
  12. JavaWeb(HTML +css+js+Servlet....)
  13. C++通信录管理系统
  14. Unity学习笔记------用Unity2D制作打地鼠游戏
  15. 35岁仍然落魄,有这3个苗头将大器晚成,你要刮目相看,主动结交
  16. 操作系统——处理系统的分类
  17. can总线短距离不用双绞线_CAN 总线(一) 物理层—屏蔽双绞线
  18. 熊掌号PHP,百度熊掌号广受站长关注,phpcm网站程序的熊掌号页面改造插件也火了!...
  19. python 朴素贝叶斯算法
  20. 航模基础知识之电机,电调,电池的选择

热门文章

  1. ti linux sdk 使用方法,关于AM335x 最新SDK ti-processor-sdk-linux-am335x-evm-06.03.00.106使用中遇到的问题...
  2. Quarkus 1.3.0.Final修复了Kubernetes本机Java堆栈中的错误
  3. BAT脚本,批量替换文件名的指定字符
  4. 无法删除文件夹的解决办法
  5. 酷派5860s 游戏合集贴
  6. MySQL(入门篇18)SQLyog 的用户权限管理 ; SQL语句的用户权限管理。
  7. 效果最好的助眠好物,帮助睡眠的好方法
  8. android对文件的MD5验证
  9. SourceInsight绿色版下载使用
  10. 《文化相对论》:危机重重的世界,对话才能产生转机