zoukankan      html  css  js  c++  java
  • 在uboot里面添加环境变量使用run来执行

    在uboot里面添加环境变量使用run来执行

    本文链接:https://blog.csdn.net/u010979030/article/details/41038259

    Author:杨正  Date2014.11.11   Emailyz2012ww@gmail.com QQ:1209758756

             在移植uboot的时候,可以在uboot里面添加定义一些自己的环境变量,这些环境变量可以大大提高以后的工作效率,比如我在uboot里面添加如下环境变量:

    bbl=sf probe 0;mw.b 82000000 ff 80000;loady0x82000000 uboot_logo.bin;sf erase 0 80000;sf write 82000000 0 80000

    然后使用run命令来执行:

    hisilicon # run bbl         

    16384 KiB hi_sfc at 0:0 is now currentdevice

    ## Ready for binary (ymodem) download to0x82000000 at 115200 bps...

    C

    Starting ymodem transfer.  Press Ctrl+C to cancel.

     100%     222 KB    6 KB/s 00:00:36       1 Errors

    ## Total Size      = 0x000379ec = 227820 Bytes

    Erasing at 0x80000 -- 100% complete.

    Writing at 0x80000 -- 100% complete.

    那么这样就不用每次都输入很长的一串字符串,如:

    hisilicon # sf probe 0;mw.b 82000000 ff80000;loady 0x82000000 uboot_logo.bin;sf erase 0 80000;sf write 82000000 080000

    那么方法如下:

    一、            在uboot里面添加环境变量

    1、  在u-boot-2010.06/include/configs目录下的xxx.h(xxx是board,如hi3520d.h)里面定义环境变量:

    /* Burn bootloader, linux kernel and rootfscommand */

    #define CONFIG_BURNBL       "sf probe 0;mw.b 82000000 ff80000;loady 0x82000000 uboot_logo.bin;sf erase 0 80000;sf write 82000000 0 8

    0000"

    #define CONFIG_BURNKERNEL"sf probe 0;mw.b 82000000 ff 480000;loady 82000000 root_cramfs.img;sferase 80000 0x480000;sf write 8200000

    0 80000 480000"

    #define CONFIG_BURN_APP"sf probe 0;mw.b 82000000 ff 0xa00000;loady 82000000 app_jffs2.img;sferase 500000 0xa00000;sf write 82000000

     500000 0xa00000"

    #define CONFIG_BURN_FLASH"sf probe 0;mw.b 82000000 ff 1000000;loady 0x82000000ZMD-PROGRAMMING-FLASH.binl;sf erase 0 1000000;sf writ

    e 82000000 0 1000000"

    2、  然后在u-boot-2010.06/common目录下的evn_common.c里面添加如下代码:

    #ifdef CONFIG_BURNBL       /* Burn bootloader image to SPIflash*/

        "bbl=" CONFIG_BURNBL ""

    #endif             

    #ifdef CONFIG_BURNKERNEL    /* Burn kernel image to SPIflash*/

        "blx="CONFIG_BURNKERNEL   ""

    #endif

    #ifdef CONFIG_BURN_APP       /* Burn APP image to SPIflash*/

        "bapp= "CONFIG_BURN_APP  ""

    #endif

    #ifdef CONFIG_BURN_FLASH    /* Burn Flash APP image to SPIflash*/                                                                   

        "bfl="CONFIG_BURN_FLASH  ""                

    #endif

    3、  重新编译uboot,并烧录到单板,用printenv或pri可以看到已定义的环境变量:

    hisilicon # pr

    bootargs=mem=96M console=ttyAMA0,115200root=1f01 rootfstype=cramfsmtdparts=hi_sfc:512K(boot),4M(romfs),10M(app),1536K(config)

    bootcmd=sf probe 0;sf read 86000000 500000x1B6B2;decjpg;setvobg  0 0x00;stopvo0;startvo 0 4 15;startvo 0 32 15;startgx 0 0x86000000 2560 0 0 1280 1024;sfread 0x84000000 0x80000 0x400000;cramfsload;bootm 0x82000000

    bootdelay=1

    baudrate=115200

    ethaddr=00:00:23:34:45:66

    ipaddr=192.168.28.110

    jpeg_addr=0x86000000

    jpeg_size=0x1b6b2

    vobuf=0x86000000

    cramfsaddr=0x84000000

    cramfsldaddr=0x82000000

    serverip=192.168.28.100

    netmask=255.255.255.0

    bootfile=/boot/hikernel

    bbl=sf probe 0;mw.b82000000 ff 80000;loady 0x82000000 uboot_logo.bin;sf erase 0 80000;sf write82000000 0 80000

    blx=sf probe 0;mw.b82000000 ff 480000;loady 82000000 root_cramfs.img;sf erase 80000 0x480000;sfwrite 82000000 80000 480000

    bapp= sf probe 0;mw.b82000000 ff 0xa00000;loady 82000000 app_jffs2.img;sf erase 500000 0xa00000;sfwrite 82000000 500000 0xa00000

    bfl=sf probe 0;mw.b82000000 ff 1000000;loady 0x82000000 ZMD-PROGRAMMING-FLASH.binl;sf erase 01000000;sf write 82000000 0 1000000

    stdin=serial

    stdout=serial

    stderr=serial

    verify=n

    ver=U-Boot 2010.06 (Nov 11 2014 - 21:27:51)

    filesize=379EC

    Environment size: 1202/65532 bytes

    二、            在uboot里面添加run命令

    1、  在u-boot-2010.06/common目录下添加一个文件cmd_run.c,代码如下:

    /*********************************************************************************                                                  

     *     Copyright:  (C) 2014 YangZheng<yz2012ww@gmail.com> 

     *                  All rights reserved.

     *

     *      Filename:  cmd_run.c

     *   Description:  This file

     *                

     *       Version:  1.0.0(11/11/2014~)

     *        Author:  Yang Zheng<yz2012ww@gmail.com>

     *     ChangeLog:  1, Release initialversion on "11/11/2014 09:05:08 PM"

     *                

     ********************************************************************************/

    #include <common.h>

    #include <watchdog.h>

    #include <command.h>

    #include <image.h>

    #include <malloc.h>

    #include <u-boot/zlib.h>

    #include <bzlib.h>

    #include <environment.h>

    #include <lmb.h>

    #include <linux/ctype.h>

    #include <asm/byteorder.h>

    int do_run(cmd_tbl_t *cmdtp, int flag, int argc, char **argv)

       if (argc < 2)

       {

           cmd_usage(cmdtp);

           return 1;

       }

       if (run_command (getenv (argv[1]), flag)< 0)

        {

           return -1;

        }

       return 0;

    }

    U_BOOT_CMD(

       boot,   1,  1, do_run

       "boot default, i.e., run 'bootcmd'",

       ""

    );  

    2、  然后在u-boot-2010.06/include/configs目录的xxx.h(xxx是board,如hi3520d.h)里面添加如下宏定义:

    #define CONFIG_CMD_RUN

    3、在u-boot-2010.06/common目录的Makefile中添加如下代码:

    COBJS-$(CONFIG_CMD_RUN) += cmd_run.o

    4、  重新编译uboot,并烧录到单板

    三、            运行

    hisilicon # run bbl

    16384 KiB hi_sfc at 0:0 is now current device

    ## Ready for binary (ymodem) download to0x82000000 at 115200 bps...

  • 相关阅读:
    long和Long的区别
    C语言的变量的内存分配
    Java蓝桥杯 算法提高 九宫格
    Java实现 蓝桥杯算法提高金明的预算方案
    Java实现 蓝桥杯 算法提高 新建Microsoft world文档
    Java实现 蓝桥杯 算法提高 快乐司机
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
  • 原文地址:https://www.cnblogs.com/schips/p/11669689.html
Copyright © 2011-2022 走看看