/**********************************************************************************
* I.MX6 Linux U-boot 环境变量解析
* 声明:
* 在分析完I.MX6 Manufacturing Tool V2 (MFGTool2)中一些内容之后,这里仅仅是
* 为了验证其中的一些想法:
* 1. 如何读取不在分区中的uImage,而是在emmc中1M地址上的uImage;
* 2. U-boot的loadaddr是否是0x10800000,因为ucl2.xml每次都会跳到这个内存
* 空间去执行uImage;
*
* 2015-10-14 晴 深圳 南山平山村 曾剑锋
*********************************************************************************/ /**
* 参考文章:
* 1. uboot mmc read/write命令用法:
* http://blog.csdn.net/kickxxx/article/details/7258890
* 2. ERROR: can't get kernel image!问题的解决
* http://my.oschina.net/u/158589/blog/59608
*/ #define CONFIG_LOADADDR 0x10800000 /* loadaddr env var */
#define CONFIG_RD_LOADADDR (CONFIG_LOADADDR + 0x300000) #define CONFIG_EXTRA_ENV_SETTINGS \
"netdev=eth0\0" \
"ethprime=FEC0\0" \
"uboot=u-boot.bin\0" \
"kernel=uImage\0" \
"nfsroot=/opt/eldk/arm\0" \
"bootargs_base=setenv bootargs console=ttymxc0,115200\0"\
"bootargs_nfs=setenv bootargs ${bootargs} root=/dev/nfs "\
"ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0"\
"bootcmd_net=run bootargs_base bootargs_nfs; " \
"tftpboot ${loadaddr} ${kernel}; bootm\0" \
"bootargs_mmc=setenv bootargs ${bootargs} ip=none " \
"root=/dev/mmcblk0p1 rootwait\0" \
/**
* bootargs_base: setenv bootargs console=ttymxc0,115200
* bootargs_mmc: setenv bootargs console=ttymxc0,115200; setenv bootargs ${bootargs} ip=none root=/dev/mmcblk0p1 rootwait
* bootargs_mmc: setenv bootargs console=ttymxc0,115200 ip=none root=/dev/mmcblk0p1 rootwait
*
* 另外如果将环境变量ip=dhcp,则在内核阶段就会需要分配ip,如果得不到ip,一直会卡在哪里,
* 经过测试发现,即使插入网线,貌似也无法得到成功dhcp,参照对比了传输的命令参数,这里
* 也就将ip=none,目前还未发现其他的类似问题。
*/
"bootcmd_mmc=run bootargs_base bootargs_mmc; " \
/**
* MX6SDL SABRESD U-Boot > mmc list
* FSL_USDHC: 0
* FSL_USDHC: 1
* FSL_USDHC: 2 // 目前不知道为什么是mmc dev 2,因为设备是挂在sd4上的,需要另外跟代码
*/
"mmc dev 2; " \
/**
* 1. 使用范例:
* mmc read addr blk# cnt
* mmc read 2 0x90000000 0x600 0x10
* 把第二个mmc设备块偏移为0x600处开始,长度为16x512大小的数据,读出到内存0x90000000处
* 2. 命令分析:
* mmc read 0x10800000 0x800 0x3000; bootm
* 内核在emmc中的首地址:0x800*512 = 1048576 = 1M,照应了《I.MX6 Manufacturing Tool V2 (MFGTool2) ucl2.xml hacking》中uImage写入的地址。
* 读取的大小:0x3000*512 = 6291456 = 6M,本来这里的值大约是4.1M,但是这里改大了,应为目前的内核有4.7M。
*/
"mmc read ${loadaddr} 0x800 0x3000; bootm\0" \
"bootcmd=run bootcmd_mmc\0" \
"test_kv=keyvalue\0" \

I.MX6 Linux U-boot 环境变量解析的更多相关文章

  1. OK335xS U-boot 环境变量解析

    /************************************************************************************************** ...

  2. linux 、 CentOs ---> 环境变量设置

    Linux下环境变量设置 1.在Windows 系统下,很多软件安装都需要配置环境变量,比如 安装 jdk ,如果不配置环境变量,在非软件安装的目录下运行javac 命令,将会报告找不到文件,类似的错 ...

  3. linux配置java环境变量(详细)

    linux配置java环境变量(详细) 本文完全引用自: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html 一. 解压安装jdk ...

  4. linux配置java环境变量

    linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...

  5. Linux里设置环境变量的方法(export PATH)

    1.动态库路径的设置 Linux下调用动态库和windows不一样.linux 可执行程序是靠配置文件去读取路径的,因此有些时候需要设置路径 具体操作如下 export LD_LIBRARY_PATH ...

  6. Spring Boot 环境变量读取 和 属性对象的绑定

    网上看到的一些方法,结合我看到的 和我们现在使用的.整理成此文: 第一种方法 参见catoop的博客之 Spring Boot 环境变量读取 和 属性对象的绑定(尊重原创) 第二种方法 class不用 ...

  7. [转]在Linux里设置环境变量的方法

    在Linux里设置环境变量的方法(export PATH) 一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量.例如我的mips-linux-gcc编译器在“/opt/a ...

  8. hadoop搭建杂记:Linux下JDK环境变量的设置(三种配置环境变量的方法)

    Linux下JDK环境变量的设置(三种配置环境变量的方法) Linux下JDK环境变量的设置(三种配置环境变量的方法) ①修改/etc/profile文件 如果你的计算机仅仅作为开发使用时推荐使用这种 ...

  9. linux配置java环境变量(转)

    linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...

随机推荐

  1. (3)在Windows7上搭建Cocos2d-x

    工具准备 搭建开发环境需要安装工具包括 Visual Studio python ———(本教程以python2.7.3版本为例),下载地址:http://www.python.org/downloa ...

  2. python 封装时间常用操作方法-time,datetime

    封装脚本: #encoding=utf-8import timefrom datetime import timedelta,date def date_time_chinese():    prin ...

  3. centos7修改hostname

    [root@centos7 ~]$ hostnamectl set-hostname prd_web1 # 使用这个命令会立即生效且重启也生效 [root@centos7 ~]$ hostname # ...

  4. laravel 中间件排除

    public function __construct(){ //除了主页之外 $this->middleware('auth', ['except' => ['index','show' ...

  5. 使用vux实现上拉刷新的总结

    最近公司在研发app,选择了基于Vue框架的vux组件库,现总结在实现上拉刷新功能遇到的坑: 1.问题:只刷新一次,解决方法:需要自己手动重置状态 this.scrollerStatus.pullup ...

  6. zoj3696Alien's Organ (二项分布,泊松分布求近似值)

    /*二项分布即重复n次的伯努利试验,每次发生的概率一样,假设成功的概率是p,那么失败的概率就是1-p: 二项分布的概率公式:试验中发生K次的概率是 P(ξ=K)= C(n,k) * p^k * (1- ...

  7. linux及安全第七周总结——20135227黄晓妍

    实验部分 首先clone最新的menu 我们可以看到,test.c里多了一个exec的功能,它的代码和fork基本一致,多了一项加载hello rootfs也有一些变化 执行一下exec 让我们启动一 ...

  8. linux第四章读书笔记

    第四章 进程调度 一.多任务 多任务操作系统就是能同时并发的交互执行多个进程的操作系统.多任务操作系统使多个进程处于堵塞或者睡眠状态,实际不被投入执行,这些任务尽管位于内存,但是并不处于可运行状态.多 ...

  9. Linux基础入门(实验楼实验)

    实验一 Linux系统简介 Linux和windows.Mac OS一样是一种操作系统.最早流行起来的操作系统是UNIX,但由于其过度商业化,价格昂贵,因此在校园里人们大多选择MINIX.1991年, ...

  10. Tinkoff Challenge - Elimination Round B. Igor and his way to work(dfs+优化)

    http://codeforces.com/contest/793/problem/B 题意:一个地图,有起点和终点还有障碍点,求从起点出发到达终点,经过的路径上转弯次数是否能不超过2. 思路: 直接 ...