I.MX6 Linux U-boot 环境变量解析
/**********************************************************************************
* 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 环境变量解析的更多相关文章
- OK335xS U-boot 环境变量解析
/************************************************************************************************** ...
- linux 、 CentOs ---> 环境变量设置
Linux下环境变量设置 1.在Windows 系统下,很多软件安装都需要配置环境变量,比如 安装 jdk ,如果不配置环境变量,在非软件安装的目录下运行javac 命令,将会报告找不到文件,类似的错 ...
- linux配置java环境变量(详细)
linux配置java环境变量(详细) 本文完全引用自: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html 一. 解压安装jdk ...
- linux配置java环境变量
linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...
- Linux里设置环境变量的方法(export PATH)
1.动态库路径的设置 Linux下调用动态库和windows不一样.linux 可执行程序是靠配置文件去读取路径的,因此有些时候需要设置路径 具体操作如下 export LD_LIBRARY_PATH ...
- Spring Boot 环境变量读取 和 属性对象的绑定
网上看到的一些方法,结合我看到的 和我们现在使用的.整理成此文: 第一种方法 参见catoop的博客之 Spring Boot 环境变量读取 和 属性对象的绑定(尊重原创) 第二种方法 class不用 ...
- [转]在Linux里设置环境变量的方法
在Linux里设置环境变量的方法(export PATH) 一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量.例如我的mips-linux-gcc编译器在“/opt/a ...
- hadoop搭建杂记:Linux下JDK环境变量的设置(三种配置环境变量的方法)
Linux下JDK环境变量的设置(三种配置环境变量的方法) Linux下JDK环境变量的设置(三种配置环境变量的方法) ①修改/etc/profile文件 如果你的计算机仅仅作为开发使用时推荐使用这种 ...
- linux配置java环境变量(转)
linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...
随机推荐
- java一些基本的方法
一,Java中,next();和nextLine();有什么区别 举个例子,你就会明白了.如,你输入的一行:abc cde efg注意,其中abc和cde之间有空格,cde和efg之间也有空格这样,n ...
- python16_day27【crm 内嵌、删除、action】
一.内嵌 二.删除及关联关联显示 三.action
- 2017年浙江中医药大学程序设计竞赛 Solution
训练地址 A: 树剖板子题 求最小值的时候要注意值是不是有负数,如果有,初值要置为$-INF$ #include <bits/stdc++.h> using namespace std; ...
- CCPC 2017-2018, Finals Solution
A - Dogs and Cages 水. #include <bits/stdc++.h> using namespace std; int t; double n; int main( ...
- ng-深度学习-课程笔记-16: 自然语言处理与词嵌入(Week2)
1 词汇表征(Word representation) 用one-hot表示单词的一个缺点就是它把每个词孤立起来,这使得算法对词语的相关性泛化不强. 可以使用词嵌入(word embedding)来解 ...
- 一个Golang例子:for + goroutine + channel
Rob Pike 在 Google I/O 2012 - Go Concurrency Patterns 里演示了一个例子(daisy chain). 视频地址:https://www.youtube ...
- 20145211黄志远《网络对抗》Exp9 Web安全基础实践
20145211黄志远<网络对抗>Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? SQL注入攻击就是利用输入的机会构造自己期望的请求,比如破坏掉用户名或者密码验 ...
- TrueCrypt简介及TrueCrypt 7.1a Source.zip源码在VS2008下的编译过程
转载:http://blog.csdn.net/cncrypt/article/details/51565493 转载:http://www.cnblogs.com/shenjieblog/p/521 ...
- BZOj 墨墨的等式(转化为最短路)题解
题意:中文题意不解释... 思路:这道题居然可以转化为最短路orz,要等式有非负整数解,我们可以转化一下:每个ai不限数量,问你能用ai数组拼出多少个Bmin~Bmax范围内的数,有点像完全背包的感觉 ...
- override和new关键字 隐藏父类的方法
正常情况下,父类virtual的方法,子类override class Animal { public virtual void EatFood() { Console.WriteLine(" ...