zoukankan      html  css  js  c++  java
  • 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"                        
            "ethprime=FEC0"                    
            "uboot=u-boot.bin"            
            "kernel=uImage"                
            "nfsroot=/opt/eldk/arm"                
            "bootargs_base=setenv bootargs console=ttymxc0,115200"
            "bootargs_nfs=setenv bootargs ${bootargs} root=/dev/nfs "
                "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp"
            "bootcmd_net=run bootargs_base bootargs_nfs; "        
                "tftpboot ${loadaddr} ${kernel}; bootm"    
            "bootargs_mmc=setenv bootargs ${bootargs} ip=none "     
                "root=/dev/mmcblk0p1 rootwait"                
            /**
             * 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"    
            "bootcmd=run bootcmd_mmc"                             
            "test_kv=keyvalue"                             
  • 相关阅读:
    Linux 基础命令(一)转
    Django项目发布 环境部署(下)
    Django项目发布 环境部署(中)
    Django项目发布 环境部署(上)
    deepin linux 打开ssh服务
    虚拟机网卡重启
    centos7 mysql数据库安装和配置
    centos7 修改网络配置
    MySQL----view & transaction
    MySQL ----函数
  • 原文地址:https://www.cnblogs.com/zengjfgit/p/4876633.html
Copyright © 2011-2022 走看看