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 03:57:53

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

OK335xS U-boot 环境变量解析

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

java在linux里设置环境变量后,提示没有那个目录?

问题描述 java在linux里设置环境变量后,提示没有那个目录? 我是放在./opt下的,所属人, 所属组也都设置完了, 请大牛.这是怎么回事,在线等 解决方案 root@ubuntu-2:~# cd /opt/java/jdk1.7 root@ubuntu-2:/opt/java/jdk1.7# cd bin root@ubuntu-2:/opt/java/jdk1.7/bin# ls appletviewer jarsigner javap jdb jps jvisualvm rmic t

linux配置java环境变量详细过程_java

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

Linux有问必答:如何在Linux中修改环境变量PATH

Linux有问必答:如何在Linux中修改环境变量PATH 提问: 当我试着运行一个程序时,它提示"command not found". 但这个程序就在/usr/local/bin下.我该如何添加/usr/local/bin到我的PATH变量下,这样我就可以不用指定路径来运行这个命令了. 在Linux中,PATH环境变量保存了一系列的目录用于用户在输入的时候搜索命令.PATH变量的值由一系列的由冒号分隔的绝对路径组成.每个用户都有特定的PATH环境变量(由系统级的PATH变量初始化)

Linux中修改环境变量及生效方法_Linux

在/etc/profile文件中添加变量[对所有用户生效(永久的)] 用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是"永久的". 要让刚才的修改马上生效,需要执行以下代码 source /etc/profile 以上这篇Linux中修改环境变量及生效方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持. 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也有的相关内容,欢迎继续使用右上角搜索

Linux下java环境变量设置的完整步骤

Linux下java环境变量设置的完整步骤: 从java.sun.com上下载JDK的安装文件,一般是jdk1.5.0_10_XXXX.bin的格式. 解开生成JDK目录,这里假设JDK安装在/usr/java/jdk1.5.0_10中: 代码: sudo chmod 755 jdk1.5.0_10_XXXX.bin   sudo ./jdk1.5.0_10_XXXX.bin sudo mkdir /usr/java sudo mv jdk1.5.0_10/ /usr/java 代码: sudo

Linux系统下环境变量添加成功

在Linux系统中设置环境变量 PATH 的方法: 在用户主目录下有一个 .bashrc 文件,可以在此文件中加入 PATH 的设置如下: export PATH="$PATH:/your path1/:/your path2/-.." 注意:每一个 path 之间要用 ":" 分隔. 注销重启 X 就可以了(logout). 这种方法确实是对的,测试过后没有问题,但是要注意刚开始没有认识到的问题,因为profile文件实际上是一段程序,因此在哪里添加的问题着实让我

Linux中修改环境变量PATH

PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻.用以下命令可以看到 PATH的值. $ echo $PATH 例如,在主机中,用户yogin的PATH值为: /opt/kde/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/yogin/bin 其中":"为分隔符.所以,上面的一串目录可以看成是如下的目录列表. /opt/kde/bin /usr/local/bin /bin:/usr/bin /u

linux下env环境变量引起的crontab不生效解决办法

 crontab是linux中一个定时任务功能了,但是小编使用env环境变量之后迫害前的任务计划没效了,下面我们来看看如何解决env环境变量引起的crontab不生效问题.     有朋友说,他写了一个脚本来做计划任务定时备份数据库,但却一直都备份不成功,手动执行脚本也没有问题,而且在/var/log/cron日志里看到成功执行了,但就是没看到备份的数据库文件. 拿了ssh权限,登录之后,看了之后,和他所说的情况一样,脚本执行成功,但没有生成备份. 不过,查了一下发给root的邮件,看到了问题: