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. ...
随机推荐
- 自动化测试中级篇——LazyAndroid UI自动化测试框架使用指南
原文地址https://blog.csdn.net/iamhuanggua/article/details/53104345 简介 一直以来,安卓UI自动化测试都存在以下两个障碍,一是测试工具Mo ...
- 4.1 Routing -- Introduction
一.Routing 1. 当用户与应用程序交互时,它会经过很多状态.Ember.js为你提供了有用的工具去管理它的状态和扩展你的app. 2. 要理解为什么这是重要的,假设我们正在编写一个Web应用程 ...
- 1 - bootstrap基本模板
bootstrap 3.x 下载地址:http://v3.bootcss.com/ 基本模板如下: <!DOCTYPE html> <html lang="zh-cn&qu ...
- js中var a={}什么意思
创建一个变量a, 并给a赋值:{}是一个空的对象,是 new Object();的简写.
- StarUML激活
感谢 http://blog.csdn.net/mergades/article/details/46662413 1,打开对应 mac版本的安装包位置,在对应目录/Applications/Sta ...
- 正在尝试解析依赖项“MvvmLightLibs (≥ 5.2.0.0)”。 “MvvmLightLibs”已拥有为“CommonServiceLocator”定义的依赖项
正在尝试解析依赖项"MvvmLightLibs (≥ 5.2.0.0)". "MvvmLightLibs"已拥有为"CommonServiceLoca ...
- SQLite 自定义函数,聚合,排序规则
SQLite 自定义函数,聚合,排序规则 1.使用自定义函数, 聚合以及排序规则的基本方法是使用回调函数.这些注册的函数的生命周期只存在于应用程序中, 并不存储在数据库文件中, 因此需要在每个连接建立 ...
- bzoj2456 / P2397 yyy loves Maths VI (mode)
P2397 yyy loves Maths VI (mode) 神奇的摩尔投票法(大雾) 保证众数个数大于一半. 两两相消,剩下的那个必定是众数. 我们只要开2个变量,一个存个数,一个存值即可. (l ...
- Mininet实验 测量路径损耗率
参照:基于Mininet测量路径的损耗率 在SDN环境中,可以利用控制器来测量特定路径的损耗率,在本实验中,基于Mininet脚本,设置特定的交换机间的路径损耗速率,然后编写POX脚本,实现对路径的损 ...
- Android -- service 服务的创建与使用,生命周期,电话监控器
1. 为什么使用service 应用程序 : 一组组件(activity service provider receiver)的集合. 一般情况 一个应用程序 会对应一个进程. 一般情况 关闭掉应用 ...