在uboot里面加入环境变量使用run来运行
2016-02-14 09:50
591 查看
Author:杨正 Date:2014.11.11 Email:yz2012ww@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...
CCC
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 "\0"
#endif
#ifdef CONFIG_BURNKERNEL /* Burn kernel image to SPIflash*/
"blx="CONFIG_BURNKERNEL "\0"
#endif
#ifdef CONFIG_BURN_APP /* Burn APP image to SPIflash*/
"bapp= "CONFIG_BURN_APP "\0"
#endif
#ifdef CONFIG_BURN_FLASH /* Burn Flash APP image to SPIflash*/
"bfl="CONFIG_BURN_FLASH "\0"
#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(int argc, char **argv)
{
if (argc < 2)
{
cmd_usage(cmdtp);
return 1;
}
if (cmd_tbl_t * cmdtp, int flag, 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...
C
在移植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...
CCC
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 "\0"
#endif
#ifdef CONFIG_BURNKERNEL /* Burn kernel image to SPIflash*/
"blx="CONFIG_BURNKERNEL "\0"
#endif
#ifdef CONFIG_BURN_APP /* Burn APP image to SPIflash*/
"bapp= "CONFIG_BURN_APP "\0"
#endif
#ifdef CONFIG_BURN_FLASH /* Burn Flash APP image to SPIflash*/
"bfl="CONFIG_BURN_FLASH "\0"
#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(int argc, char **argv)
{
if (argc < 2)
{
cmd_usage(cmdtp);
return 1;
}
if (cmd_tbl_t * cmdtp, int flag, 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...
C
相关文章推荐
- MyBatis
- web项目从域名申请到发布
- SQL Server 插入数据后获得自增主键值
- Python在Console下显示文本进度条的方法
- Draw Picture With Python Matplotlib
- 测试
- 软件开发流程
- Adafruit的樹莓派教程第一課福利:做一個備份鏡像
- android开发游记:APP自动更新功能的快速集成和实现方法讲解
- [小技巧] Windows 下如何识别没有扩展名的文件
- 【python笔记】python中的list、tuple、set、dict用法简析
- listView布局中按钮点击事件放到activity或者fragment中响应
- 跟陈皓一起学makefile
- java web 项目如何部署到互联网中 通过输入域名访问?
- RecyclerView与ListView的异同
- 極客范 – GeekFan.net | Adafruit的樹莓派教程第一課:為你的樹莓派准備一張SD卡 - 極客范 - GeekFan.net 极客范 – GeekFan.net 首頁 科技資訊 硬件
- PHP二维数组排序简单实现方法
- 别小看了“坐轮椅的超级玛丽”
- iOSMVC 模式
- 数据结构图文解析之:数组、单链表、双链表介绍及C++模板实现