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"                             \
时间: 2024-07-30 20:32:10

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

OK335xS U-boot 环境变量解析

/************************************************************************************************** * OK335xS U-boot 环境变量解析 * 声明: * 本文主要是为了知道OK335xS U-boot环境变量设置.如何选择启动方式等等内容. * * 2015-9-28 晴 深圳 南山平山村 曾剑锋 *********************************************

Linux重要的环境变量

PWD和OLDPWDPWD代表当前工作目录,改变目录后系统会自动更新该环境变量OLDPWD代表之前的工作目录实验:先进入/home目录,再cd到/etc目录,查看这两个变量 PATH这个环境变量大家应该比较熟悉,可执行文件的搜索路径,避免每次都要写全路径或者相对路径.默认多个可执行文件路径以冒号分隔 HOME该环境变量保存当前用户的家目录的路径,每次切换用户,系统都会自动从/etc/passwd文件中读取用户的家目录 SHELL跟HOME环境变量相似,该环境变量保存的是当前登录用户的默认shel

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

Linux下JDK环境变量的设置(三种配置环境变量的方法) Linux下JDK环境变量的设置(三种配置环境变量的方法) ①修改/etc/profile文件 如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题. vi /etc/profile 在profile文件末尾加入: JAVA_HOME=/usr/share/jdk1.5.0_05PATH=$JAVA_HOME/bin:$PATHCLASSPATH=.:$JAVA_H

Linux下的环境变量

1,何为环境变量 用户成功登录后,启动shell的过程中,定义一些和用户的工作环境有关的变量 2,查看Linux的环境变量可以使用命令:env 常用的环境变量有以下几个: HOME:用户的家目录的完整路径名. LOGNAME:登录用户名. IFS:命令行内部域分隔符,即白空格. PATH:由冒号分隔的路径名.shell将按PATH变量中给出的顺序搜索这些目录,从中查找要执行的命令.找到的第一个与命令 名称一致的可执行文件将被执行. OLDPWD:刚刚离开的目录. TERM:终端的类型. PWD:

Linux基础概念-----环境变量

Shell 环境变量 Shell也是应用程序,工作与用户模式 变量类型 整形 浮点型 字符型 布尔型 bash变量类型 本地变量:仅对当前Shell有效 局部变量:仅对局部代码段有效(函数) 环境变量:expor VAR_NAME=Value,对当前Shell及子Shell有效 位置变量:$1;$2 .... 特殊变量:$?;$!;$$ .... 查看环境变量 printenv export 查看所有变量 set bash的引号 双引号:弱引用,可以实现变量替换: 单引号:强引用,不替换,而显示

linux配置java环境变量(详细) -copy

一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586.bin 这时会出现一段协议,连继敲回车,当询问是否同意的时候,输入yes,回车.之后会在当前目录下生成一个jdk1.6.0_14目录,你可以将它复制到 任何一个目录下. 二. 需要配置的环境变量 1. PATH环境变量.作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序.我们

Linux Java Meven环境变量设置

linux中的环境变量设置,可以在两个地方设置.他们分别是: /etc/profile  在这个文件下设置表示全局的,所有用户有效. 用户工作目录,用 ls -a查看,可以看到有一个.bash_profile文件.如果没有这个文件 自己也可以新建.在这个文件设置,表示只对当前用户有效. 环境变量内容为: export PATH="$JAVA_HOME/bin:$M2_HOME/bin:/opt/local/bin:/opt/local/sbin:$PATH" export JAVA_H

Linux中的环境变量PATH

首先一点Linux中的每个命令其本质是一个可执行的文件,以ls命令为例.通过命令:$:whereis ls可以查看ls命令的位置在/bin/目录下.当用$:ls -l /bin/ls命令查看文件/bin/ls的属性时,得到如下结果: 其实我们在任意目录下执行的ls命令时,其实执行的是位于/bin目录下的ls文件.那么当在任意目录下执行各种命令时,是怎么找到各自的命令的呢?这就是PATH的作用.查看环境变量PATH的内容如下: PATH的作用就是,当输入命令的时候,Linux会去查找PATH里面记

Linux下设置环境变量

setenv(set environment variable) 功能说明:查询或显示环境变量.语 法:setenv [变量名称][变量值]补充说明:setenv为tsch中查询或设置环境变量的指令. 对于bash shell关 于环境变量命令介绍:1.echo 显示某个环境变量值 echo $PATH2.export 设置一个新的环境变量 export HELLO="hello" (可以无引号)3.env 显示所有环境变量4.set 显示本地定义的shell变量5.unset 清除环