A. linux怎么进入uboot菜单
linux下的dnw配置步骤以下:1
下载源码
源码:dnw_linux
这个是在1个论坛上搜到的,这个不需要注册,就能够免费下载奥,感谢作者的辛苦劳动和忘我的奉献精神,呵呵...2
解压这个下载完以后是rar格式的,还得到windows下解压。解压后到linux下便可。其中secbulk.c是pc端usb驱动,
dnw.c是写入工具。3
编译并加载secbulk模块$cd
secbulk$make
-c
/lib/moles/`uname
-r`/build
m=`pwd`
moles编译成功后在当前目录下可以看到secbulk.ko
用insmod命令加载模块,这需要root权限$sudo
insmod
./secbulk.ko4
编译dnw写入工具$gcc
-o
dnw
dnw.c编译成功后生成可履行dnw5
使用dnw下载使用方式和windows下基本1致。在终端下输入相应的uboot命令,当出现“usb
host
is
connected.
waiting
a
download.”时,在pc端linux上用dnw工具写入要下载的文件便可。切换到root权限,履行dnw下载.$./dnw
/path注:这个/path就是所要下载的文件的路径及名称,例:/home/linux⑵.6.30.4/arch/arm/boot/zimage写入完成后提示成功100%
xxxxxxx
bytes
ok可以把编译好的dnw拷贝到/usr/sbin下或是usr/bin下,以后使用就直接使用dnw
/path
便可。至此,完成内核的下载,下载文件系统一样的方法便可。注意:注意:有时候由于内核的升级,运行时会提示can
not
open
/dev/secbulk0的毛病,此时需要重新到secbulk目录履行$make
-c
/lib/moles/`uname
-r`/build
m=`pwd`
moles,然后加载模块$sudo
insmod
./secbulk.ko便可!
B. uboot的protect指令使用
Printenv 打印环境变量。
uboot> printenv
baudrate=115200
ipaddr=192.168.0.111
ethaddr=32:34:46:78:9A:DC
serverip=192.168.0.100
Environment size: 80/8188 bytes
2. Setenv 设置新的变量
如:
uboot> setenv myboard AT91RM9200DK
uboot> saveenv
uboot> printenv
baudrate=115200
ipaddr=192.168.0.111
ethaddr=32:34:46:78:9A:DC
serverip=192.168.0.100
myboard=AT91RM9200DK
Environment size: 102/8188 bytes
又如想重置启动参数bootargs:
uboot> setenv bootargs 'noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0'
uboot> saveenv
3. saveenv 保存变量 命令将当前定义的所有的变量及其值存入 flash 中。 用来存储变量及其值的空间只有 8k 字节,应不要超过。 (如上例,每次与setenv配合使用)
4. loadb 通过串口 Kermit 协议下载二进制数据。
5. tftp 通过网络下载程序,需要先设置好网络配置
简单配置:
uboot> setenv ethaddr 32:34:46:78:9A:DC
uboot> setenv ipaddr 192.168.0.111
uboot> setenv serverip 192.168.0.100
//下载 bin 文件到地址 0x20000000 处。
uboot> tftp 20000000 application.bin (application.bin 应位于 tftp 服务程序的目录)
uboot> tftp 32000000 zImage.bin
把 server (IP=环境变量中设置的 serverip) 中 FTP配置的默认目录下的 zImage.bin通过 TFTP 读入到物 理内存 32000000 处。
6. md 显示内存区的内容。
7. mm 修改内存,地址自动递增。
8. nm 修改内存,地址不自动递增。
9. mw 用模型填充内存
uboot>mw 32000000 ff 10000(把内存 0x32000000 开始的 0x10000 字节设为 0xFF)
10. cp 拷贝一块内存到另一块
11. cmp 比较两块内存区
这些内存操作命令后都可加一个后缀表示操作数据的大小, 比如 cp.b 表示按字节拷贝。 Protect 写保护操作 protect on 1:0-3(就是对第一块 FLASH 的 0-3 扇区进行保护) protect off 1:0-3 取消写保护 Erase 擦除扇区。
12. nfs
uboot>nfs 32000000 192.168.0.2:zImage.bin 把 192.168.0.2(LINUX 的 NFS 文件系统)中的 NFS 文件系统中的 aa.txt 读入内存 0x32000000 处 (192.168.0.2是配置的NFS服务器地址,且要复制的文件必须在NFS配置的服务目录下)
uboot 命令使用教程(uboot参数设置)的更多相关文章
U-Boot命令大全(功能参数及用法)
U-Boot上电启动后,按任意键可以退出自动启动状态,进入命令行. U-Boot 2010.03 (Sep 25 2011 - 16:18:50) DRAM: 64 MB Flash: ...
uboot命令及内核启动参数
修改:mw [内存地址] [值] [长度] 例如:mw 0x02000000 0 128 表示修改地址为0x02000000~0x02000000+128的内存值为0. 显示:md [内存地址 ...
PM2用法简介【命令行启动 --env 参数设置使用问题】
环境切换 正式开发中分为不同的环境(开发环境.测试环境.生产环境),我们需要根据不同的情景来切换各种环境 pm2通过在配置文件中通过env_xx来声明不同环境的配置,然后在启动应用时,通过--env参 ...
u-boot 环境变量参数设置
今天本来是烧写内核,结果一不小心把uboot也整不能用了,无奈之下只好重新烧个uboot,等都弄好以后,发现系统还是启动不了,原来是启动参数设置不对,于是找到了这篇文章,//是我添加的内容. 原文地址 ...
Uboot 命令行 介绍
背景 基本上,本文转载自:<ARM板移植Linux系统启动(五)Uboot命令行> 上次说到uboot的启动方式,最后会使用autoboot(自主模式)尝试引导kernel,如果失败或者被 ...
uboot命令简介
uboot下的命令行 1.典型嵌入式linux系统启动过程: 嵌入式系统上电后先执行uboot.然后uboot负责初始化DDR,初始化Flash,然后将OS从Flash中读取到DDR中,然后启动OS( ...
烧写ARM开发板系统教程----->uboot 、内核以及文件系统
一.sd启动 将u-boot镜像写入SD卡,将SD卡通过读卡器接上电脑(或直接插入笔记本卡槽),通过"cat /proc/partitions"找出SD卡对应的设备,我的设备节点是 ...
1.ok6410移植bootloader,移植u-boot,学习u-boot命令
ok6410移植u-boot 既然是移植u-boot当然首先需要u-boot源码,这里的u-boot代码是由国嵌提供的. 一.配置编译u-boot A. 解压 u-boot 压缩文件 B. 进入解压生 ...
转载 uboot 命令
1.bootm bootm [addr [arg ...]] - boot application image stored in memory passing arguments 'arg ...' ...
C. 华为ap进入uboot
启动AP。在出现以下信息后3秒内按下F键,进入Uboot命令行视图。
Uboot菜单缺省密码为[email protected]
Press f or F to stop Auto-Boot in 3 seconds: 3
Password for uboot cmd line :
ar7240>
配置AP和tftp服务器的IP地址,使AP和服务器的IP地址处于同一网段,保证AP能够从tftp服务器获取升级文件
ar7240> setenv ipaddr 192.168.10.13 #AP的IP地址
ar7240> setenv serverip 192.168.10.11 #服务器的IP地址
ar7240> saveenv
Saving Environment to Flash…
Erasing Flash…Writing to Flash… done
ar7240> update system FatAP5X30XN_V200R007C20SPC100.bin #FatAP5X30XN_V200R007C20SPC100.bin存放在TFTP目录下
p 1 speed 1000
…
Upgrade Firmware to A Successful
The current device is a FIT AP, but the upgrade package is for a FAT AP. Continue? [y/n]:y 按y
配置完成后,在命令行中键入reset
ar7240> reset
Resetting…
升级完成后,可执行命令display version
D. 机顶盒烧录时出现命令出错uboot获取返回
1、打开烧录软件,导入烧录包。
2、去掉“擦除”两个对号,点击开始。
3、机顶盒连接电源,机顶盒连接双公头USB,立即使用牙签等按住机顶盒复位按钮(不同机顶盒复位按钮位置不一样,大多在AV孔内),中途不能松手,直至刷机完成。数字视频变换盒(SetTopBox)简称STB,通常称作机顶盒或机上盒,是一个连接电视机与外部信号源的设备,它可以将压缩的数字信号转成电视内容,并在电视机上显示出来。信号可以来自有线电缆、卫星天线、宽带网络以及地面广播。
E. uboot 命令具体是如何实现的,我看了一部分,现在卡住了;求高人指点; 我的QQ:436035433
那u-boot的那些个关于命令的结构体到底从何而来呢?在include/command.h里定义了这样的宏:
#define Struct_Section __attribute__ ((unused,section (".u_boot_cmd")))
... ... ... ...
#define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) \
cmd_tbl_t __u_boot_cmd_##name Struct_Section = {#name, maxargs, rep, cmd, usage, help}
第
二个宏展开便定义了一个代表u-boot命令的结构体。也就是说定义了一个变量,并赋与其初值。关键在于Struc_Section,它被展开后成了
__attribute__
((unused,section(".u_boot_cmd")))。也就是说,每个变量(占内存!)都放在.u_boot_cmd段里。它们还被加上
了unused的属性,应该是为了平息编译器的警告。确实,没有任何代码引用过它们!!如果这些变量被放在一个显示声明的数组里,那么,每增加一个命令都
得去更改数组的定义。然后,通过这种方法,各人想要增加新的命令时,只需用上面的这个宏即可。这些表示命令的结构体被统一放在.u_boot_cmd段
里,链接脚本里又有:
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
即,
把所有待链接文件里u_boot_cmd段合并在一起生成一个大的.u_boot_cmd段,并且用__u_boot_cmd_start与
__u_boot_cmd_end两个符号标识这块内存的首尾边界。这样,不用大家去修改某一文件的代码(为了改变数组的定义),而是像数据库一样,各个
提供自己的信息。借由编译器与链接器生成这个“数据库”,操作数据时对“数据库”进行查询即可。正是一个月前看《计算机程序构造与解释》时看到的
“Data Direct”(好像是这么说)。在Grub及内核里也用了这样机制。
参考:http://blog.163.com/lijiji_1515/blog/static/12687744620114522449739/
F. uboot备份到u盘
具体步骤: 1、将老毛桃winpe工具u盘插入电脑u *** 接口,按电源键开机。
屏幕上出现启动画面后按快捷键即可进入主菜单,在此选择“【02】运行老毛桃Win8PE工具箱(装机推荐)”并回车,如图所示: 2、进入老毛桃pe系统后会自动运行老毛桃PE一键装机工具,在工具窗口最上方点击“备份分区”选项,如图所示: 3、接着点击“浏览”按钮,在除系统盘以外的分区中选择备份文件保存的位置,然后输入文件名和保存类型,如图所示: 4、返回到工具主窗口,选中系统盘,然后点击“确定”按钮,如图所示: 5、紧接着会弹出一个备份提示框,点击高级按钮,字样变成简洁的同时,可以设置备份压缩率、分卷大小等参数,也可以默认设置直接确定开始,如图所示: 6、接下来只需等待系统备份完成,然后进入到系统备份文件所在路径验证是否备份成功,如图所示: 7、最后将备份好的GHOST系统备份文件拷贝到U盘中即可。
G. uboot是什么uboot的命令是干嘛的
类似pc的BIOS引导程序,之所以叫Uboot,是因为universal的意思,即通用的引导程序,Uboot可以引导X86的CPU,也可以引导ARM的CPU,还有PowerPC,MIPS之类的CPU。
Uboot命令当然是用来操作Uboot了,比如擦写Flash,网络下载数据之类,还有很多。
H. 华为AP版本切换命令
Uboot下用TFTP的方法升级AP 请事先配置好tftp工具,指向升级文件所在目录;保证在AP上能ping通PC。
1. 使用串口线将AP的串口和PC的串口相连,使用“超级终端”等软件,进入命令行界面。超级终端设置如下:
Baud:9600 Data bits:8 Stop bits:1 Parity: none Flow Control: none
2. 执行命令reboot,重新启动AP。在出现以下信息后3秒内按下F键,进入uboot命令行视图。Uboot菜单缺省密码为admin。
Press f or F to stop AutoBoot in 3 seconds:
3 Password for uboot cmd line :
3. 配置AP和tftp服务器的IP地址,保证AP能够从tftp服务器获取升级文件。ar7240>setenv ipaddr 169.254.1.1 #AP的IP地址ar7240>setenv serverip 169.254.1.3 #服务器的IP地址ar7240>saveenvSaving Environment to Flash...Erasing Flash...Writing to Flash... done
4. 在命令行中键入update boot,在下面的显示信息中作相应的配置:
a. 升级uboot:ar7240>update boot
#u-boot.bin存放在TFTP目录下p 1 speed 1000......Copy to Flash... donear7240>reset
#以新加载的uboot启动 升级uboot时不能断电,否则AP无法启动。
b. 重新启动AP。在出现以下信息后3秒内按下F键,进入uboot命令行视图。Uboot菜单缺省密码为[email protected]。若V200R002版本中修改过密码,升级到V200R003版本后使用的密码为V200R002版本中修改的密码。若在V200R002版本时修改过密码,后又将密码改回为huawei,则版本升级到V200R003版本后使用V200R003版本缺省密码[email protected]。
Press f or F to stop Auto-Boot in 3 seconds:
3 Password for uboot cmd line :
c. 加载需要升级的V200R003C00SPC300 AP系统软件:ar7240>update system FitAP6X10XN_V200R003C00SPC300.bin #FitAP6X10XN_V200R003C00SPC300.bin存放在TFTP目录下p 1 speed 1000 ......Upgrade Firmware to A Successful
5. 配置完成后,在命令行中键入reset,AP就会使用指定的网络启动固件文件启动了。用这种方式启动后,固件被读入AP的flash。ar7240>resetResetting...
2
I. android怎么进入uboot
本人用的android平台用的bootloader用的是uboot,貌似大多数手持设备平台都不用这个,因为功能过于强大用不上,反而显得太复杂了。不知道这个平台开发者是怎么想的。既然用了那就来分析一下,顺便修改一下其中的几个小问题,以符合我们的要求。
uboot等同于其他所有的bootloader程序,从根本上讲是一个稍复杂的裸机程序,是最底层的东西,要分析裸机程序我们要从它的连接文件开始。连 接文件(.lds文件)定义了程序编译之后整个连接过程,这样我们就可以找到这个程序的第一句汇编代码,进而来下一步分析。uboot的链接文件代码在 android\bootable\bootloader\uboot-imx\u-boot.lds
[cpp] view plain
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") //文件输出格式
OUTPUT_ARCH(arm)
ENTRY(_start) //首地址标示符
SECTIONS
{
. = 0x00000000; //其实地址0
. = ALIGN(4); //4字节对齐
.text : //代码段
{
board/freescale/mx6q_sabresd/flash_header.o (.text.flasheader) //第一个文件是board/freescale/mx6q_sabresd/flash_header.o
cpu/arm_cortexa8/start.o //第二个cpu/arm_cortexa8/start.o
board/freescale/mx6q_sabresd/libmx6q_sabresd.a (.text)
lib_arm/libarm.a (.text)
net/libnet.a (.text)
drivers/mtd/libmtd.a (.text)
drivers/mmc/libmmc.a (.text)
. = DEFINED(env_offset) ? env_offset : .;
common/env_embedded.o(.text)
*(.text) //剩余的所有代码
}
. = ALIGN(4);
.rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } //readonly data 段
. = ALIGN(4);
.data : { *(.data) } //所有的readonly data
. = ALIGN(4);
.got : { *(.got) }
. = .;
__u_boot_cmd_start = .; //u_boot_cmd段,里面是所有uboot命令的一个列表
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
. = ALIGN(4);
_end_of_ = .;
__bss_start = .; //bss段 就是内存数据段
.bss : { *(.bss) }
_end = .;
}
从上面的代码可以看出我们编译生成的二进制应用程序组成是:代码段->rodata段->uboot命令列表->bss段。我们启动这个应用程序时候是从,0地址开始的,因此我们来看
board/freescale/mx6q_sabresd/flash_header.s这个文件。
这个文件中除了分配内存和宏定义的伪汇编指令以外,真正执行的命令有一条
[cpp] view plain
.section ".text.flasheader", "x"
b _start
.org CONFIG_FLASH_HEADER_OFFSET
也就是说,这个文件一执行就直接跳到_start 位置处。_start 在android\bootable\bootloader\uboot-imx\cpu\arm_cortexa8\ start.S中,因此我们来看这个文件代码
[cpp] view plain
.globl _start
_start: b reset
这里直接跳转的reset中接下来看
[csharp] view plain
reset:
/*
* set the cpu to SVC32 mode cpu设置成32位管理模式
*/
mrs r0, cpsr
bic r0, r0, #0x1f
orr r0, r0, #0xd3
msr cpsr,r0
#if (CONFIG_OMAP34XX) //因为我们的cpu不是ompa的 所以这段不会编译
.............................
#endif
/* the mask ROM code should have PLL and others stable */
#ifndef CONFIG_SKIP_LOWLEVEL_INIT
bl cpu_init_crit
#endif
这里接下来执行cpu_init_crit
[csharp] view plain
/*************************************************************************
*
* CPU_init_critical registers
*
* setup important registers
* setup memory timing
*
*************************************************************************/
cpu_init_crit:
/*
* Invalidate L1 I/D
*/
mov r0, #0 @ set up for MCR
mcr p15, 0, r0, c8, c7, 0 @ invalidate TLBs
mcr p15, 0, r0, c7, c5, 0 @ invalidate icache
/*
* disable MMU stuff and caches //关闭mmu
*/
mrc p15, 0, r0, c1, c0, 0
bic r0, r0, #0x00002000 @ clear bits 13 (--V-)
bic r0, r0, #0x00000007 @ clear bits 2:0 (-CAM)
orr r0, r0, #0x00000002 @ set bit 1 (--A-) Align
orr r0, r0, #0x00000800 @ set bit 12 (Z---) BTB
mcr p15, 0, r0, c1, c0, 0
/*
* Jump to board specific initialization...
* The Mask ROM will have already initialized
* basic memory. Go here to bump up clock rate and handle
* wake up conditions.
*/
mov ip, lr @ persevere link reg across call
bl lowlevel_init @ go setup pll,mux,memory//执行lowlevel_init这个函数代码在
@\bootloader\uboot-imx\board\freescale\mx6q_sabresd\lowlevel_init.S中
@主要对时钟,外部ram,rom等进行了初始化代码不贴了。
mov lr, ip @ restore link
mov pc, lr @ back to my caller
初始化完成后,接下来执行
[csharp] view plain
#ifndef CONFIG_SKIP_RELOCATE_UBOOT
relocate: @ relocate U-Boot to RAM 将uboot重新定位到内存中
adr r0, _start @ r0 <- current position of code
ldr r1, _TEXT_BASE @ test if we run from flash or RAM
cmp r0, r1 @ don't reloc ring debug测试当前代码是否已经在内存中
beq stack_setup @如果在的话就直接跳转到stack_setup
ldr r2, _armboot_start @如果不在的话,加载_armboot_start地址到r2中。_armboot_start是uboot执行的主体c函数。
ldr r3, _bss_start
sub r2, r3, r2 @ r2 <- size of armboot计算bss_start-armboot_start 保存到R2中,也就是uboot的总大小
add r2, r0, r2 @ r2 <- source end address 计算出uboot代码和rodata地址
_loop: @ 32 bytes at a time //开始拷贝
ldmia r0!, {r3 - r10} @ from source address [r0]
stmia r1!, {r3 - r10} @ to target address [r1]
cmp r0, r2 @ until source end addreee [r2]
ble _loop
#endif /* CONFIG_SKIP_RELOCATE_UBOOT */
J. 如何设置uboot命令让板子从emmc启动
Arm板系统文件一般有三个——bootloader(uboot)、kernel(uImage)及根文件系统(rootfs)。在arm板上电后,按uboot->kernel->rootfs的顺序依次启动。由于开发板上有多种存储介质,三个文件可以放在任何可以存储的介质上,因此也就导致文件的多种启...