UBOOT命令详解
Uboot命令使用
Uboot命令使⽤⼀、uboot启动log简析1、以后带有调试性质的开发,uboot都是烧写到SD卡中的,因为⽅便烧写。
⼆、uboot命令使⽤2.1、help命令查看某⼀个命令帮助信息,?命令名2.2、信息查询1、bdinfo2、printenv命令重要查看当前板⼦的环境变量。
2.3、setenv命令重点设置环境变量,也可以⾃定义环境变量,也可以删除环境变量2.4、saveenv命令重点保存环境变量。
2.5、新建环境变量2.6、删除环境变量2.7、内存操作命令1、md命令2、nm命令3、mm命令4、mw命令5、cp命令6、cmp命令2.8、⽹络操作命令⽹线插如到ENET2上,保证开发板和电脑处于同⼀个⽹段内。
1、ping命令重点2、dhcp命令3、nfs命令重点⽬的就是为了调试程序。
4、tftp命令重点2.9 EMMC/SD卡操作命令1、mmc命令2、mmc info命令3、mmc rescan命令4、mmc list命令5、mmc dev命令6、mmc part命令7、mmc read命令8、mmc write命令9、mmc erase命令最好不要使⽤!!2.10 FAT格式⽂件系统操作命令对于I.MX6U来说,SD/EMMC分为三个分区:第⼀个:存放uboot第⼆个:存放Linux zImage,.dtb。
FAT第三个:系统的根⽂件系统,EXT41、fatinfo命令2、fatls命令3、fstype命令4、fatload命令5、fatwrite命令2.11 EXT格式⽂件系统操作命令1、ext4ls命令2.12 NAND操作命令1、nand info命令2、nand write命令3、nand erase命令4、nand write命令5、nand read命令2.13 BOOT操作命令1、booz命令要启动Linux必须将zImage,dtb放到DRAM。
2、bootm命令3、boot命令2.14 其他命令1、reset命令2、go命令3、run命令4、mtest命令。
uboot命令
uboot命令U-boot基础现在为Linux开放源代码Bootloader有很多,blob、redboot 及U-BOOT等,其中U-BOOT是目前用来开发嵌入式系统引导代码使用最为广泛的Bootloader。
它支持POWERPC、ARM、MIPS和 X86等处理器,支持嵌入式操作系统有Linux、Vxworks及NetBSD等。
2.1 U-boot源代码目录结构|-- board 平台依赖,存放电路板相关的目录文件|-- common 通用多功能函数的实现|-- cpu 平台依赖,存放cpu相关的目录文件|-- disk 通用。
硬盘接口程序|-- doc 文档|-- drivers 通用的设备驱动程序,如以太网接口驱动|-- dtt|-- examples 应用例子|-- fs 通用存放文件系统的程序|-- include 头文件和开发板配置文件,所有开发板配置文件放在其configs 里|-- lib_arm 平台依赖,存放arm架构通用文件|-- lib_generic 通用的库函数|-- lib_i386 平台依赖,存放x86架构通用文件|-- lib_m68k 平台依赖|-- lib_microblaze 平台依赖|-- lib_mips 平台依赖|-- lib_nios 平台依赖|-- lib_ppc平台依赖,存放ppc架构通用文件|-- net 存放网络的程序|-- post 存放上电自检程序|-- rtc rtc的驱动程序`-- tools 工具详细实例:board:开发板相关的源码,不同的板子对应一个子目录,内部放着主板相关代码。
Board/at91rm9200dk/at91rm9200.c, config.mk, Makefile, flash.c ,u-boot.lds等都和具体开发板的硬件和地址分配有关。
common:与体系结构无关的代码文件,实现了u-boot所有命令,其中内置了一个shell脚本解释器(hush.c, a prototype Bourne shell grammar parser), busybox中也使用了它。
uboot 汇编指令
U-Boot(Universal Boot Loader)是一个开源的、通用的引导加载程序,支持多种处理器架构和嵌入式系统。
在U-Boot中,汇编指令的使用主要涉及对硬件的低级操作和优化。
以下是一些常见的U-Boot汇编指令及其作用:
1.ldr:这是一个加载指令,用于从内存中读取数据并将其加载到寄存器中。
例如,ldr r0,=0x12345678将把地址0x12345678处的值加载到寄存
器r0中。
2.str:这是一个存储指令,用于将数据从寄存器存储到内存中。
例如,str r0,[r1]将把寄存器r0中的值存储到r1指向的内存地址中。
3.mov:这是一个移动指令,用于将数据从一个位置移动到另一个位置,而不对数据进行任何操作。
例如,mov r0,r1将把寄存器r1的值复制到寄存
器r0中。
4.add和sub:这些是算术指令,用于对数据进行加法或减法操作。
例如,add r0,r1,r2将把寄存器r1和r2的值相加,结果存储在寄存器r0中。
5.cmp:这是一个比较指令,用于比较两个值的大小。
它不保存结果,但会设置条件标志,这可以用于控制程序流。
例如,cmp r0,r1将比较寄存器
r0和r1中的值。
6.and、orr、eor等:这些是逻辑指令,用于执行逻辑与、或、异或等操作。
这些只是U-Boot汇编语言中的一部分指令,还有许多其他指令和语法结构。
建议查阅U-Boot的官方文档或参考手册以获取更详细的信息和示例。
UBoot操作和常用命令
UBoot常用命令
• usb start: 起动usb 功能 • usb info: 列出设备 • usb scan: 扫描usb storage(u 盘)设备 • f的at文ls:件列出DOS FAT文件系统, 如:fatls usb 0列出第一块U盘中 • fatload: 读入FAT中的一个文件,如:fatload usb 0 0x30000000
• 通常,Boot Loader 是严重地依赖于硬件而实现的, 特别是在嵌入式世界。因此,在嵌入式世界里建 立一个通用的Boot Loader 几乎是不可能的。尽管 如此,我们仍然可以对Boot Loader 归纳出一些通 用的概念来,以指导用户特定的Boot Loader 设计 与实现。
UBoot来源
• nand write [内存地址] [NAND地址] [大小]
– 将SDRAM中地址0x31000000中大小为0x00200000的内容写入NAND Flash的0x100000地址。
– nand write 0x31000000 0x00100000 0x00200000 – NAND write: device 0 offset 1048576, size 2097152 ... 2097152 bytes
Creating 5 MTD partitions on "NAND 256MiB 3,3V 8-bit": 0x000000000000-0x000000040000 : "supervivi" ftl_cs: FTL header not found. 0x000000040000-0x000000060000 : "param" uncorrectable error : 0x000000060000-0x000000560000 : "Kernel" ftl_cs: FTL header not found. 0x000000560000-0x000040560000 : "root" mtd: partition "root" extends beyond the end of device "NAND 256MiB 3,3V 8-bit" -- size truncated to 0xfaa0000 ftl_cs: FTL header not found. 0x000000000000-0x000040000000 : "nand" mtd: partition "nand" extends beyond the end of device "NAND 256MiB 3,3V 8-bit" -- size truncated to 0x10000000
uboot笔记uboot命令分析+实现
uboot笔记uboot命令分析+实现uboot笔记:uboot命令分析+实现Ubootuboot命令分析+实现先贴⼀个重要结构,位于uboot/include/command.h,这个结构代表每个uboot命令struct cmd_tbl_s {char *name; /* Command Name */int maxargs; /* maximum number of arguments*/int repeatable;/* autorepeat allowed? *//* Implementation function */int (*cmd)(struct cmd_tbl_s *, int, int, char *[]);char *usage; /* Usage message (short)简短⽤法信息*/#ifdef CFG_LONGHELPchar *help; /* Help message (long) 长的帮助信息*/#endif#ifdef CONFIG_AUTO_COMPLETE/* do auto completion on the arguments */ int (*complete)(intargc, char *argv[], charlast_char, intmaxv, char *cmdv[]); #endif};typedefstruct cmd_tbl_s cmd_tbl_t;============================================================uboot的第⼀阶段:硬件相关初始化0.reset执⾏arm920t/start.s 过程如下1.设置cpu svc管理模式2.关看门狗中断,mmu等3.设置时钟,sdram,外部总线4.代码重定位,搬运代码,从flash到sdram5.设置栈,bss段清零, bss⽤于未初始化的全局变量和静态变量6.ldr pc, _start_armboot即进⼊uboot启动的第⼆阶段,调⽤c函数start_armboot()从start_armboot开始经过⼀系列外设初始化⽐如falsh_initnand_init...最后循环调⽤mian_loop()main_loop主要流程{1. ⽣成环境变量mtdparts, 调⽤mtdparts_init2. 在启动过程中若⽆空格键按下则boot_zImage,即run_command(getenv("bootcmd"),0)有空格键按下则run_command("menu",0)3. shell过程,读取⽤户的输⼊并执⾏相应的命令{从控制台获得命令,保存在全局变量comsole_buffer中解析命令⾏字符串,分割命令与参数,最后执⾏run_command(...); }}也就是说在mian_loop中,是处理环境变量和控制台⼈机交互,mian_loop调⽤readline ()读取命令⾏到console_buffer,再把console_buffer复制到lastcommand中去,还要设置flag,最后调⽤run_command (lastcommand, flag)函数,run_command (lastcommand, flag)函数中,⾸先定义cmd_tbl_t *cmdtp,再解析命令⾏。
uboot常用的命令
Uboot常用的命令一、概述Uboot是一款开源的引导加载程序,广泛应用于嵌入式系统。
它负责在开机时初始化硬件、加载操作系统以及其他系统组件,并提供一系列命令供用户进行系统配置和维护。
本文将介绍Uboot常用的命令,帮助读者更好地了解和使用Uboot。
二、Uboot常用命令下面是Uboot常用的命令:1. help命令格式:help [command]该命令用于显示Uboot支持的命令列表。
如果指定了具体的命令名称,则会显示该命令的详细帮助信息。
2. printenv命令格式:printenv [variable]该命令用于打印当前环境变量的值。
如果指定了具体的变量名称,则只会打印该变量的值。
3. setenv命令格式:setenv variable value该命令用于设置环境变量的值。
variable是要设置的变量名称,value是要设置的值。
4. saveenv命令格式:saveenv该命令用于保存当前环境变量到非易失性存储器中,以便下次开机时可以加载。
5. boot命令格式:boot该命令用于启动系统。
在执行该命令之前,需要设置好bootargs和bootcmd等环境变量,以确保系统能够正确启动。
6. md命令格式:md address [#of objects]该命令用于从指定的内存地址读取数据并显示。
address是内存地址,#of objects是要读取的对象数目,默认为1。
7. mw命令格式:mw address value [# of objects]该命令用于向指定的内存地址写入数据。
address是内存地址,value是要写入的值,#of objects是要写入的对象数目,默认为1。
8. ping命令格式:ping [ipaddr]该命令用于向指定的IP地址发送ICMP Echo请求,以测试网络连接的可用性。
如果未指定IP地址,则会使用默认的目标地址。
9. tftpboot命令格式:tftpboot [loadAddress] [filename]该命令用于通过TFTP协议从指定的服务器下载文件并加载到指定的内存地址。
uboot命令使用教程(uboot参数设置)
uboot命令使⽤教程(uboot参数设置)1. Printenv 打印环境变量。
uboot> printenvbaudrate=115200ipaddr=192.168.0.111ethaddr=32:34:46:78:9A:DCserverip=192.168.0.100Environment size: 80/8188 bytes2. Setenv 设置新的变量如:uboot> setenv myboard AT91RM9200DKuboot> saveenvuboot> printenvbaudrate=115200ipaddr=192.168.0.111ethaddr=32:34:46:78:9A:DCserverip=192.168.0.100myboard=AT91RM9200DKEnvironment size: 102/8188 bytes⼜如想重置启动参数bootargs:uboot> setenv bootargs 'noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0'uboot> saveenv3. saveenv 保存变量命令将当前定义的所有的变量及其值存⼊ flash 中。
⽤来存储变量及其值的空间只有 8k 字节,应不要超过。
(如上例,每次与setenv配合使⽤)4. loadb 通过串⼝ Kermit 协议下载⼆进制数据。
5. tftp 通过⽹络下载程序,需要先设置好⽹络配置简单配置:uboot> setenv ethaddr 32:34:46:78:9A:DCuboot> setenv ipaddr 192.168.0.111uboot> setenv serverip 192.168.0.100//下载 bin ⽂件到地址 0x20000000 处。
U-BOOT介绍以及常用U-bot命令介绍
U-BOOT介绍以及常用U-bot命令介绍一. BootLoader简介在专用的嵌入式板子运行GNU/Linux系统已经变得越来越流行。
一个嵌入式Linux系统从软件的角度看通常可以分为四个层次:1、引导加载程序。
包括固化在固件(firmware)中的boot代码(可选),和BootLoader两大部分。
2、 Linux内核。
特定于嵌入式板子的定制内核以及内核的启动参数。
3、文件系统。
包括根文件系统和建立于Flash内存设备之上文件系统。
通常用ramdisk来作为rootfs。
4、用户应用程序。
特定于用户的应用程序。
有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。
常用的嵌入式GUI有:MicroWindows和MiniGUI懂。
引导加载程序是系统加电后运行的第一段软件代码。
PC机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的OS BootLoader(比如,LILO和GRUB等)一起组成。
BIOS在完成硬件检测和资源分配后,将硬盘MBR中的BootLoader读到系统的RAM中,然后将控制权交给OS BootLoader。
BootLoader的主要运行任务就是将内核映象从硬盘上读到 RAM 中,然后跳转到内核的入口点去运行,也即开始启动操作系统。
而在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。
比如在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。
简单地说,BootLoader就是在操作系统内核运行之前运行的一段小程序。
通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
uboot常用的命令
uboot常用的命令
U-Boot是一款开源的引导加载程序,它是嵌入式系统中常用的引导加载程序之一。
U-Boot提供了一系列的命令,可以用来进行系统的启动、调试、烧写等操作。
下面是U-Boot常用的命令:
1. help:显示所有可用的命令列表。
2. printenv:显示环境变量的值。
3. setenv:设置环境变量的值。
4. saveenv:保存环境变量的值。
5. bootm:启动内核。
6. tftpboot:从TFTP服务器下载文件。
7. ping:测试网络连接。
8. md:以16进制格式显示内存内容。
9. mw:以16进制格式写入内存内容。
10. cp:复制内存内容。
11. fatload:从FAT文件系统中加载文件。
12. fatls:列出FAT文件系统中的文件。
13. mmc:MMC卡操作命令。
14. usb:USB操作命令。
15. dhcp:获取IP地址。
16. run:执行脚本。
17. reset:重启系统。
以上是U-Boot常用的命令,这些命令可以满足大部分的需求。
在实
际使用中,我们可以根据具体的需求来选择合适的命令。
如果需要更
多的命令,可以通过添加自定义命令的方式来扩展U-Boot的功能。
总之,U-Boot是一款非常强大的引导加载程序,它提供了丰富的命令,
可以用来进行系统的启动、调试、烧写等操作。
熟练掌握U-Boot的命令,可以提高嵌入式系统的开发效率。
uboot的常用命令及用法
uboot的常⽤命令及⽤法uboot是bootloader的⼀种,主要是⽤于引导内核启动.uboot除此功能外, 还带有很多其它功能. 功能是通过命令来调⽤.uboot的命令:help //列出当前uboot所有⽀持的命令help 命令 //查看指定命令的帮助reset //重启ubootbootm //⽤于启动内核⽤法: bootm 0x42000000 //从内存地址0x42000000启动内核, 启动前需把内核镜像uImage存放到指定的内存地址printenv //打印所有环境变量的值printenv 环境变量名 //查看指定的环境变量值常⽤环境变量:bootdelay // uboot启动后, 倒计时多少秒后⾃动执⾏环境变量bootcmd的语句bootcmd // 倒计时到0后,⾃动执⾏⾥⾯的语句bootargs // 是⽤于提供给内核的启动参数语句setenv //设置/修改/删除环境变量的值⽤法:setenv 环境变量名 //删除指定的环境变量setenv myargs "hello" //设置环境变量myargs=hello, 如果环境变量没有会创建出来,如果已存则会修改它的值saveenv //保存环境变量,环境变量修改过后必须执⾏此命令才可以保存起来,否则重启后环境变量就恢复了.loady //⽤于从uart线下载⽂件到板上内存⾥(loadb, loads, loadx基本⼀样) ⽤法:loady 0x40008000 //把下载的⽂件从内存地址0x40008000开始存放执⾏"loady 0x40008000"后, uboot就会进⼊等待状态,等着接收数据minicom具有通过uart传输⽂件的功能.按"ctrl+a", 松⼿后再按"s", 选择"ymodem", 在弹出的界⾯⾥按空格键选中要传的⽂件.md 内存地址 //⽤于查看内存地址上的值⽤法:md.b 0x40008000 100 //从内存地址0x40008000开始,查看0x100个字节并输出值md.w 0x40008000 100 //从内存地址0x40008000开始,查看0x100个16位值并输出值md.l 0x40008000 100 //从内存地址0x40008000开始,查看0x100个32位值并输出值mw //⽤于修改内存地址上的值⽤法:mw.b 0x40008000 0xab 100 //从内存地址0x40008000开始的0x100字节空间,设值为0xabmw.w 0x40008000 0xabcd 100 //从内存地址0x40008000开始的0x200字节空间,每16位值设为0xabcdmw.l 0x40008000 0xabcdef88 100 //从内存地址0x40008000开始的0x400字节空间,每32位值设为0xabcdef88 go //执⾏指定内存地址上的指令⽤法:go 0x40008000mmc // sd/mmc接⼝设备(sd卡, emmc)操作命令, 按扇区操作(每扇区512字节)⽤法:mmc read addr blk cnt //从mmc设备上的第blk个扇区开始,共读出cnt个扇区到内存地址addr上mmc write addr blk cnt //把内存地址addr上的数据写⼊mmc设备的第blk个扇区,共cnt个扇区⼤⼩mmc dev //⽤于当看当前的mmc设备是第⼏个mmc erase blk cnt //把mmc设备的第blk个扇区开始清零,共清除cnt个扇区⼤⼩ mmc part //列出当前mmc设备的分区信息mmc list //列出所有的mmc设备信息ext4ls //查看存储设备的ext2/3/4分区⾥的内容⽤法:ext4ls mmc 0:2 //查看第0个存储设备的第⼆个分区ext4load //从ext2/3/4分区⾥读出⽂件到指定的内存地址⽤法:ext4load mmc 0:2 0x40008000 /uImage //从第0个存储设备的第2个分区的根⽬录读出uImage⽂件到内存地址0x40008000 fatls //查看存储设备的fat分区⾥的内容⽤法:fatls mmc 0:1 //查看第0个存储设备的第1个分区(fat分区)fatload //从fat分区⾥读出⽂件到指定的内存地址⽤法:fatload mmc 0:1 0x40008000 /uImage //从第0个存储设备的第1个分区的根⽬录读出uImage⽂件到内存地址0x40008000fatwrite //把内存上的数据存储到fat分区的⼀个⽂件⾥⽤法:fatwrite mmc 0:1 0x40008000 /my.txt 0x35 //把内存地址0x40008000开始的0x35个字节数据写⼊到第0个设备的第1个分区⾥,⽂件名为my.txtrun //执⾏指定的环境变量⾥的语句⽤法:run bootcmd //执⾏环境变量bootcmd⾥的语句//如uboot上已驱动好⽹络设备并环境变设好IP及PC端IP,还可以使⽤以下命令:tftpboot 0x40008000 ⽂件名 // 通过⽹络下载⽂件到内存地址0x40008000, PC端需配置好tftp服务器nfs 0x40008000 pc端IP:/带路径的⽂件名 //pc端需配置好nfs服务器ping ip //检测⽹络是否通指令: bootmbootm ⽤于将内核镜像加载到内存的指定地址处例:bootm 0x82000000查看和修改环境变量指令常⽤环境变量列表bootdelay 执⾏⾃动启动(bootcmd中的命令)的等候秒数baudrate 串⼝控制台的波特率bootfile 默认的下载⽂件名bootargs 传递给Linux内核的启动参数bootcmd ⾃动启动时执⾏命令stdin 标准输⼊设备,⼀般是串⼝stdout 标准输出,⼀般是串⼝,也可是LCD(VGA)stderr 标准出错,⼀般是串⼝,也可是LCD(VGA)serverip TFTP服务器端的IP地址ipaddr 本地的IP地址ethaddr 以太⽹的MAC地址netmask 以太⽹的⽹络掩码gatewayip 以太⽹的⽹关指令: setenvname value第1个参数是环境变量的名称。
uboot命令解释与运行分析
uboot命令解释与运行分析题记: 省略200字这一回来分析一下uboot中命令行的解释, 所以我们直接从main_loop开始分析.1. 从汇编阶段进入c阶段的第一个函数是start_xxx, 如/lib_unicore/board.c中的start_unicoreboot. 前半部分调用了若干初始化函数来进行部分硬件的初始化, 并设置一下环境. 这里不是我们本回要讨论的所以一一跳过. 在start_xxx的最后调用了main_loop(), 而且还是被一个死循环死死圈住了;2. 现在我们已经进入了这个圈套那么只能往里钻了. common/main.c文件中的main_loop().上面代码主要是对自启动部分的描述, 其中命令执行部分是在run_command中进行的, 这个等在后文分析. 如果我们没有bootcmd 或者在延时中被打断, 那么代码会继续向下执行3.read_line()读取到命令行后会调用common/main.c文件中的run_command().现在是分析run_command()的时候了,不管是从环境变量还是终端获得命令,都是由run_command()来处理的.中场休息,下面要进入处理cmdbuf的循环中了, 长征马上开始以;分割. 忽略'\;'for(inquotes = 0, sep = str;*sep; sep++){if((*sep=='\'')&&(*(sep-1)!='\\'))inquotes=!inquotes;if(!inquotes &&(*sep ==';')&&( sep != str)&&(*(sep-1)!='\\'))break;}//如果上面for循环找到一条以';'结束的命令, 那么sep指向命令末尾token = str;if(*sep){str = sep + 1;*sep ='\0';}elsestr = sep;process_macros (token, finaltoken);if((argc = parse_line (finaltoken, argv))== 0){rc =-1;4.就此打断一下, 我们要分析一下find_cmd了, 不能再跳过了. find_cmd()在.u_boot_cmd段中寻找该命令的cmd_tbl_t结构, 找到后返回该结构. 该命令的结构是通过定义在include/command.h中的宏定义U_BOOT_CMD登记进.u_boot_cmd段中的.5. 刚才我们在长征的半路翻越了一座雪山, 现在继续回到while循环中if(cmdtp->cmd == do_bootd){if(flag & CMD_FLAG_BOOTD){puts("'bootd' recursion detected\n");rc =-1;continue;}else{flag |= CMD_FLAG_BOOTD;}}#endif//长征马上结束, 胜利就在眼前! 调用结构体中注册的cmd函数, 何时注册的呢? 上面不远处介绍的U_BOOT_CMD!if((cmdtp->cmd)(cmdtp, flag, argc, argv)!= 0){ rc =-1;}repeatable &= cmdtp->repeatable;if(had_ctrlc ())return-1;}。
uboot常用命令
U-Boot(Universal Bootloader)是一款常用的开源引导加载程序,用于嵌入式系统的启动 和管理。以下是一些常用的 U-Boot 命令示例:
1. printenv :打印环境变量列表。
2. setenv <variable> <value> :设置环境变量的值。
8. mw <addr> <value> [<length>] :将指定的十六进制数值写入到指定的内存地址。
9. mmc list :显示支持的 MMC 存储设备列表。
10. tftpboot <addr> <filename> :通过 TFTP 协议从网络下载一个文件到指定的内存 地址。
11. fatls <interface> <partition> :列出指定接口(如 mmc、usb 等)上指定分区 中的文件列表。
3. saveenv :保存环境源自量到存储设备中,以便下次启动时使用。
4. boot :启动操作系统,根据环境变量中的配置来加载内核镜像和根文件系统。
5. bootm :直接从指定的内存地址启动指定的内核镜像。
6. help :显示帮助信息,列出可用的 U-Boot 命令和它们的功能说明。
7. md <addr> <length> :在指定的内存地址处以十六进制格式显示指定长度的数据。
12. run <script> :运行一个预定义的 U-Boot 脚本。
13. reset :重启设备。
这些命令只是 U-Boot 中的一部分,U-Boot 还提供了很多其他的命令和功能来管理和配 置系统。请注意,具体可用的命令和支持的功能取决于 U-Boot 版本以及不同的硬件平台 和配置。在实际使用时,您可能需要参考特定版本的 U-Boot 的文档或提供的帮助信息来 获取更详细和准确的命令列表和说明。
uboot 命令详解
u-boot 技术文档1.U boot 命令详解1.1查看帮助命令使用help 或者?1.2环境变量打印环境变量:printenv设置环境变量:setenv(不会保存)保存环境变量:saveenv这个时候就有了1.3nandflash命令使用nand查看nandflash 所有指令擦除nand erase1.4norflash命令查看Flash信息命令: flinfo加/解写保护命令: protect擦除命令: erase1.5内存命令nm1.5USB指令使用help usb 查看usb具体指令使用usb 启动使用usb tree查看信息f atls usb 0 罗列u盘信息1.5.1实例演练usb指令烧写1.6实例演练ftp指令烧写环境变量中体现了开发板上的IP地址为192.168.0.2,网关为192.168.0.1,要求电上的tftp 服务器的IP为192.168.0.1;运行电脑上tftp服务器,指定好根目录,将内核和根文件系统放在根目录下。
注:线接上后,电脑上的本地连接可能是显示网络电缆没插好,这很正常!在使用过程中它们会自动去连接!<2>分别下载内核和根文件系统到内存0x30008000开始的空间先检查坏块nand bad再擦除坏块清理某个区域0x560000 0x3b22c00将根文件系统加载到0x30008000然后再将根文件系统写到0x560000 0x3b22c00这个位置然后重启:重复上面的步骤:nand erase 0x60000 0x267000将内核文件保存到0x60000 0x267000这块区域运行1.8系统重启指令2.U boot 内核移植在cpu/arm920t/start.S中添加以下代码在修改并添加为以下代码在include/configs/mini2440.h修改为如下:将以下代码修改为:将以下代码修改为:将以下代码修改为:在drivers/mtd/nand/s3c2410_nand.h 在最后下面代码上添加如下带码:。
常用u-boot命令详解(全)
常⽤u-boot命令详解(全)U-boot发展到现在,他的命令⾏模式已经⾮常接近Linux下的shell了,命令⾏模式模式下⽀持“Tab”键的命令补全和命令的历史记录功能。
⽽且如果你输⼊的命令的前⼏个字符和别的命令不重复,那么你就只需要打这⼏个字符即可,⽐如我想看这个U-boot的版本号,命令就是“version”,但是在所有的命令中没有其他任何⼀个的命令是由“v”开头的,所以只需要输⼊“v”即可。
[u-boot@MINI2440]# versionU-Boot 2009.11 ( 4⽉ 04 2010 - 12:09:25)[u-boot@MINI2440]# vU-Boot 2009.11 ( 4⽉ 04 2010 - 12:09:25)[u-boot@MINI2440]# baseBase Address: 0x00000000[u-boot@MINI2440]# baBase Address: 0x00000000由于U-boot⽀持的命令实在太多,⼀个⼀个细讲不现实,也没有必要。
所以下⾯我挑⼀些烧写和引导常⽤命令介绍⼀下,其他的命令⼤家就举⼀反三,或者“help”吧!(1)获取帮助命令:help 或 ?功能:查看当前U-boot版本中⽀持的所有命令。
[u-boot@MINI2440]# help- alias for 'help'askenv - get environment variables from stdinbase - print or set address offsetbdinfo - print Board Info structurebmp - manipulate BMP image databoot - boot default, i.e., run 'bootcmd'bootd - boot default, i.e., run 'bootcmd'bootelf - Boot from an ELF image in memorybootm - boot application image from memorybootp - boot image via network using BOOTP/TFTP protocolbootvx - Boot vxWorks from an ELF imagecmp - memory compareconinfo - print console devices and informationcp - memory copycrc32 - checksum calculationdate - get/set/reset date & timedcache - enable or disable data cachedhcp - boot image via network using DHCP/TFTP protocolecho - echo args to consoleeditenv - edit environment variableeeprom - EEPROM sub-systemerase - erase FLASH memoryexit - exit scriptfatinfo - print information about filesystemfatload - load binary file from a dos filesystemfatls - list files in a directory (default /)flinfo - print FLASH memory informationfsinfo - print information about filesystemsfsload - load binary file from a filesystem imagego - start application at address 'addr'help - print online helpi2c - I2C sub-systemicache - enable or disable instruction cacheiminfo - print header information for application imageimls - list all images found in flashimxtract- extract a part of a multi-imageitest - return true/false on integer compareloadb - load binary file over serial line (kermit mode)loads - load S-Record file over serial lineloadx - load binary file over serial line (xmodem mode)loadx - load binary file over serial line (xmodem mode)loady - load binary file over serial line (ymodem mode)loop - infinite loop on address rangels - list files in a directory (default /)md - memory displaymm - memory modify (auto-incrementing address)mmc - MMC sub-systemmtest - simple RAM read/write testmw - memory write (fill)nand - NAND sub-systemnboot - boot from NAND devicenfs - boot image via network using NFS protocolnm - memory modify (constant address)ping - send ICMP ECHO_REQUEST to network hostprintenv- print environment variablesprotect - enable or disable FLASH write protectionrarpboot- boot image via network using RARP/TFTP protocolreginfo - print register informationreset - Perform RESET of the CPUrun - run commands in an environment variablesaveenv - save environment variables to persistent storagesetenv - set environment variablesshowvar - print local hushshell variablessleep - delay execution for some timesource - run script from memorytest - minimal test like /bin/shtftpboot- boot image via network using TFTP protocolunzip - unzip a memory regionusb - USB sub-systemusbboot - boot from USB deviceversion - print monitor version如果你想获取某条命令的更详细的帮助,可以使⽤:help <你想要查的指令>或者 ? <你想要查的指令> ,甚⾄ h <你想要查的指令缩写>。
Uboot命令详解
U-Boot命令详解U-Boot还提供了更加周详的命令帮助,通过help命令还能够查看每个命令的参数说明。
由于研发过程的需要,有必要先把U-Boot命令的用法弄清楚。
接下来,根据每一条命令的帮助信息,解释一下这些命令的功能和参数。
1、bootmbootm [addr [arg ...]]- boot application image stored in memorypassing arguments ’arg ...’; when booting a Linux kernel,’arg’ can be the address of an initrd imagebootm命令能够引导启动存储在内存中的程式映像。
这些内存包括RAM和能够永久保存的Flash。
第1个参数addr是程式映像的地址,这个程式映像必须转换成U-Boot的格式。
第2个参数对于引导Linux内核有用,通常作为U-Boot格式的RAMDISK映像存储地址;也能够是传递给Linux内核的参数(缺省情况下传递bootargs环境变量给内核)。
2、bootpbootp [loadAddress] [bootfilename]bootp命令通过bootp请求,需要DHCP服务器分配IP地址,然后通过TFTP协议下载指定的文档到内存。
第1个参数是下载文档存放的内存地址。
第2个参数是要下载的文档名称,这个文档应该在研发主机上准备好。
3、cmpcmp [.b, .w, .l] addr1 addr2 count- compare memorycmp命令能够比较2块内存中的内容。
.b以字节为单位;.w以字为单位;.l以长字为单位。
注意:cmp.b中间不能保留空格,需要连续敲入命令。
第1个参数addr1是第一块内存的起始地址。
第2个参数addr2是第二块内存的起始地址。
第3个参数count是要比较的数目,单位按照字节、字或长字。
4、cpcp [.b, .w, .l] source target count- copy memorycp命令能够在内存中复制数据块,包括对Flash的读写操作。
uboot常用命令及其使用
uboot常⽤命令及其使⽤1.帮助信息或者 help第⼀次使⽤uboot,通过?查看所有帮助信息cmd 或者 help cmdbootz #查看bootz命令的帮助信息通过该命令查看某个cmd的帮助信息2.版本信息查看versionuboot启动后,查看uboot版本信息bdinfouboot启动后,查看board信息3.环境变量相关setenv设置⼀个环境变量# 格式:setenv key vlauesetenv bootdelay 5 # 设置uboot启动延时5s删除⼀个环境变量uboot对于⼀个没有值的环境变量,默认不再维护,做删除处理# 格式:setenv keysetenv ipaddr # 删除ipaddr,让ipaddr不复存在修改⼀个环境变量# 格式:setenv key vlauesetenv bootdelay 5 # 原来的bootdleay值被覆盖,采⽤新值5saveenvuboot启动时,从⾮易失性存储器中读取环境变量的值,在内存中维护⼀份拷贝,当采⽤setenv命令创建、修改、或者删除后,内存中被相应地创建、修改或者删除,⾮易失存储器中的那⼀份并没有改变。
直到执⾏saveenv,写⼊⾮易失性存储器。
print打印所有环境变量及其值。
print # 打印所有打印某⼀个。
如果要查看某个你知道名字的环境变量,可以使⽤该命令。
例如,打印bootcmd命令:print bootcmd # 只打印bootcmd4.内存相关需要注意的是,所有参数需要⼗六进制数字输⼊。
例如12345678默认为0x12345678,当然也可直接显式指定为0x12345678。
mm修改ddr中内存单元的值,可以连续修改。
# mm [.b,.w,.l] addr=>mm.l 80800000 #回车进⼊修改视图,地址⾃动递增80800000:<xxxxxxxx> ? 12345678 # 回车80800004:<xxxxxxxx> ? q # 退出=>nm修改ddr中内存单元的值,地址不⾃增。
uboot相关命令及用法
uboot相关命令及⽤法进⼊uboot时,在命令⾏上敲“?” ,回车就会打印出在uboot⾥可⽤的命令:#?- alias for 'help'base - print or set address offsetboot - boot default, i.e., run 'bootcmd'bootd - boot default, i.e., run 'bootcmd'bootelf - Boot from an ELF image in memorybootm - boot application image from memorybootvx - Boot vxWorks from an ELF imagecheckcrash- check ATAGS from crash and dump to filechpart - change active partitioncmp - memory comparecp - memory copycrc32 - checksum calculationecho - echo args to consoleefuse - opt efuse dataenv - environment handling commandsexit - exit scriptext4load- load binary file from a Ext2 filesystemext4ls - list files in a directory (default /)false - do nothing, unsuccessfullyfastboot- fastbootfatinfo - print information about filesystemfatload - load binary file from a dos filesystemfatls - list files in a directory (default /)fatwrite- write file into a dos filesystemgo - start application at address 'addr'gpio - input/set/clear/toggle gpio pinshelp - print command description/usagei2c - I2C sub-systemjtag - jtag systemloop - infinite loop on address rangemd - memory displaymm - memory modify (auto-incrementing address)mmc - MMC sub systemmmcinfo - display MMC infomtdparts- define flash/nand partitionsmtest - simple RAM read/write testmw - memory write (fill)nand - NAND sub-systemnboot - boot from NAND devicenm - memory modify (constant address)nu7 - nu7 sub systempmic - pmic interfaceprintenv- print environment variablesreset - Perform RESET of the CPUrun - run commands in an environment variablesaveenv - save environment variables to persistent storagesetenv - set environment variablesshowvar - print local hushshell variablessource - run script from memorytest - minimal test like /bin/shtrue - do nothing, successfullyubi - ubi commandsubifsload- load file from an UBIFS filesystemubifsls - list files in a directoryubifsmount- mount UBIFS volumeubifsumount- unmount UBIFS volumeusb - USB sub-systemusbboot - boot from USB deviceversion - print monitor, compiler and linker version我们想要查看其中某个命令的⽤法时,在命令⾏上敲⼊“命令名?”即可,如“mmc ?”:#mmc ?mmc - MMC sub systemUsage:mmc read addr blk# cntmmc write addr blk# cntmmc erase blk# cntmmc rescanmmc part - lists available partition on current mmc devicemmc dev [dev] [part] - show or set current mmc device [partition]mmc list - lists available devicesmmc read⽤来读取mmc内容到内存,mmc write⽤来写⼊内存内容到mmc中具体⽤法,mmc read <device num> addr blk# cnt [partition]mmc write <device num> addr blk# cnt [partition]mmc listdevice num是mmc的设备号,可以通过mmc list查询addr是内存地址blk# 是mmc内的块号cnt 块数⽬使⽤范例:mmc write 2 0x90000000 0x600 0x10把内存0x90000000开始,长度为16x512⼤⼩的数据,写⼊到第2个mmc设备块偏移位置为0x600处mmc read 2 0x90000000 0x600 0x10把第⼆个mmc设备块偏移为0x600处开始,长度为16x512⼤⼩的数据,读出到内存0x90000000处从外置mmc卡load uImage⽂件:#mmc listSD/MMC: 0SD/MMC: 1#mmc dev 0mmc0 is current device#fatload mmc 0:10x82007fc0 uImage#pri#run default_bootargs只设pmic vdd:pmic vdd 1250000设置bootargs#setenv bootargs console=ttyS0,115200 root=/dev/mmcblk1p2 rw rootwait gpu=384M mem=792M video=nusmartfb:${resolution}-${dispformat} 706_hw_ver=2 init=/init quiet no_console_suspend设置default_bootargs#setenv default_bootargs console=ttyS0,115200 root=/dev/mmcblk1p2 rw rootwait gpu=384M mem=792M video=nusmartfb:${resolution}-${dispformat} 706_hw_ver=2 init=/init quiet no_console_suspend #ext4load mmc 1:20x82007fc0 uImage#bootm。
uboot下的指令
uboot下的指令⼀、i2c 指令i2c --help: i2c指令帮助i2c bus:获取i2c总线信息i2c dev:查看当前i2c设备i2c dev 0:将i2c0作为当前设备i2c md 0x6A 0x06.1 0x01:0x6A-->设备地址,0x06.1-->寄存器地址为0x06,寄存器宽度为1个字节,0x01-->读取⼀个字节i2c mw 0x6A 0x06.1 0x02:将0x02写⼊0x6A设备的0x06寄存器中⼆、gpio 操作gpio --help:获取gpio帮助gpio status -a:查看所有gpio信息 可以看到xilinx上有两组gpio,⼀个是ps端的gpio,地址是0xff0a0000,另外⼀组是pl端的axi gpio ,地址是0xa0070000gpio set gpio@a00700000:将axi gpio的第⼀位置⾼电平gpio clean gpio@a00700000:将axi gpio的第⼀位置低电平gpio input gpio@a00700000:将axi gpio的第⼀位置设置为输⼊三、mii命令mii命令是操作mii接⼝的命令,mii接⼝⽤来连接soc中的MAC控制器和外部的PHY芯⽚。
mii命令主要是通过mii接⼝中的MDIO来读写phy芯⽚的寄存器针对DP83867芯⽚mii info //查看mii信息mii write 0x0c 0x00 0x2100 //设置phy芯⽚为百兆,0x0c为phy芯⽚地址,0x00为phy芯⽚寄存器地址,0x2100为向0x00寄存器写⼊的值mii read 0x0c 0x00 //读取phy芯⽚0x00寄存器的值寄存器地址>0x1F的配置⽅法,因为MDIO最多能范围的寄存器范围为0~0x1F,如果寄存器地址>0x1F那么需要通过0x0d和0x0e这两个寄存器间接访问读0x31寄存器mii write 0x0c 0x0d 0x1fmii write 0x0c 0x0e 0x31mii write 0x0c 0x0d 0x401fmii read 0x0c 0x0e写0x31寄存器mii write 0x0c 0x0d 0x1fmii write 0x0c 0x0e 0x31mii write 0x0c 0x0d 0x401fmii write 0x0c 0x0e 0x1031 //向0x31寄存器写⼊0x1031四、MMC命令mmc是uboot下查看磁盘的命令mmc list:查看所有磁盘可以看到有两个磁盘,0是emmc,1是sd卡mmc dev 0:进⼊磁盘0mmc info:查看磁盘0的信息这⾥显⽰了emmc的⼀些信息五、FAT⽂件系统操作命令 5.1 fatls 查看⽂件命令 fatls命令如下所⽰: fatls mmc 0:1:查看emmc第⼀分区的内容,0表⽰哪个mmc设备,这⾥是emmc,1表⽰第⼀分区 可以看到emmc的第⼀分区中有三个⽂件 5.2 fatrm 删除⽂件命令 fatrm mmc 0:1 image.ub:删除emmc第⼀分区中的image.ub 5.3 fatwite 写⽂件 fatwrite mmc 0:1 0x10000000 image.ub 0x7d1160,从内存拷贝Image.ub到emmc第⼀分区中,0x10000000 表⽰内存拷贝的起始地址,image.ub是⽂件名,0x7d1160是拷贝的长度。
uboot下内存稳定性检测命令简介
Uboot下内存检测功能1.简单指定单个地址读写操作:【命令:mw和mr】●mw 命令格式:mw[.b,.w,.l] addr data [len]说明:向指定内存地址写入数据,.b,.w,.l选项分别表示后面的数据宽度是8位,16位和32位。
注:”.l”中的”l”是”L”的小写字母。
len 是可选项,指定写入的个数,默认是1。
如果len大于或等于0x7E00000【注1】则无限循环写内存,参数均为16进制。
举例:1.mw.b0 2从地址0x00000000开始写入一个单字节数据0x022.mw.w103 10从地址0x00000010开始写入一个双字节数据0x0003,总共写0x10个。
3.mw.l 10 5从地址0x00000010开始写入一个四字节数据0x000000054.mw.l10 27E00008从地址0x00000010开始到内存顶端(0x7E00000)无限循环写入四字节数据0x00000002,键入按键q,结束写操作。
●mr命令格式:mr[.b,.w,.l] a ddr[len]说明:从指定内存地址读出数据。
len是可选项,len表示读出的长度(默认为1)。
如果len大于或者等于0x7E00000则无限循环读内存举例:1.mr.b10从地址0x00000010开始读一个单字节数据,并显示结果。
2.mr.w 10 10从地址0x00000010开始读一个双字节数据,总共读0x10个。
并显示结果。
3.mr.w 107E00000从地址0x00000010开始读一个双字节数据,一直读到内存最顶端。
,然后再从0xffe01010读,无限循环。
2.指定一段内存地址测试操作:【命令:mt,mtr和ms,msr】mt命令格式:mt[.b,.w,.l]startaddrlen time count data1 [data2 ……]说明:按顺序指定一段内存地址,如果将time参数置为0,则只写入数据,写完后,等待用户使用mtr命令读,此时count参数可以随便填(不能不填)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常用U-boot命令详解(z)2010-09-30 15:05:52| 分类:学习心得体会|字号订阅U-boot发展到现在,他的命令行模式已经非常接近Linux下的shell了,在我编译的U-boot-2009.11中的命令行模式模式下支持“Tab”键的命令补全和命令的历史记录功能。
而且如果你输入的命令的前几个字符和别的命令不重复,那么你就只需要打这几个字符即可,比如我想看这个U-boot的版本号,命令就是“ version”,但是在所有的命令中没有其他任何一个的命令是由“v”开头的,所以只需要输入“v”即可。
[u-boot@MINI2440]# versionU-Boot 2009.11 ( 4月04 2010 - 12:09:25)[u-boot@MINI2440]# vU-Boot 2009.11 ( 4月04 2010 - 12:09:25)[u-boot@MINI2440]# baseBase Address: 0x00000000[u-boot@MINI2440]# baBase Address: 0x00000000由于U-boot支持的命令实在太多,一个一个细讲不现实,也没有必要。
所以下面我挑一些烧写和引导常用命令介绍一下,其他的命令大家就举一反三,或者“help”吧!(1)获取帮助命令:help 或?功能:查看当前U-boot版本中支持的所有命令。
[u-boot@MINI2440]#help?- alias for'help'askenv - get environment variables from stdinbase - print or set address offsetbdinfo - print Board Info structurebmp - manipulate BMP image databoot - boot default, i.e., run 'bootcmd'bootd - boot default, i.e., run 'bootcmd'bootelf - Boot from an ELF image in memorybootm - boot application image from memorybootp - boot image via network using BOOTP/TFTP protocolbootvx - Boot vxWorks from an ELF imagecmp - memory compareconinfo - print console devices and informationcp - memory copycrc32 - checksum calculationdate - get/set/reset date &timedcache - enable or disable data cachedhcp - boot image via network using DHCP/TFTP protocol echo - echo args to consoleeditenv - edit environment variableeeprom - EEPROM sub-systemerase - erase FLASH memoryexit-exit scriptfatinfo - print information about filesystemfatload - load binary file from a dos filesystemfatls -list files in a directory (default/)flinfo - print FLASH memory informationfsinfo - print information about filesystemsfsload - load binary file from a filesystem imagego - start application at address 'addr'help - print online helpi2c - I2C sub-systemicache - enable or disable instruction cacheiminfo - print header information for application image imls -list all images found in flashimxtract- extract a part of a multi-imageitest -return true/false on integer compareloadb - load binary file over serial line(kermit mode) loads - load S-Record file over serial lineloadx - load binary file over serial line(xmodem mode) loady - load binary file over serial line(ymodem mode) loop - infinite loop on address rangels -list files in a directory (default/)md - memory displaymm - memory modify (auto-incrementing address)mmc - MMC sub-systemmtest - simple RAM read/write testmw - memory write(fill)nand - NAND sub-systemnboot - boot from NAND devicenfs - boot image via network using NFS protocolnm - memory modify (constant address)ping -send ICMP ECHO_REQUEST to network hostprintenv- print environment variablesprotect - enable or disable FLASH write protection rarpboot- boot image via network using RARP/TFTP protocol reginfo - print register informationreset- Perform RESET of the CPUrun - run commands in an environment variablesaveenv - save environment variables to persistent storage setenv -set environment variablesshowvar - print local hushshell variablessleep- delay execution for some timesource - run script from memorytest- minimal test like /bin/shtftpboot- boot image via network using TFTP protocolunzip - unzip a memory regionusb - USB sub-systemusbboot - boot from USB deviceversion - print monitor version以bmp指令为例:Usage:bmp info <imageAddr>- display image infobmp display <imageAddr>[x y]- display image at x,y[u-boot@MINI2440]# h bmbmp - manipulate BMP image dataUsage:bmp info <imageAddr>- display image infobmp display <imageAddr>[x y]- display image at x,y(2)环境变量(environment variables,简称ENV)与相关指令和shell类似,U-Boot也有环境变量。
一些U-boot默认的环境变量如下:环境变量解释说明bootdelay执行自动启动(bootcmd中的命令)的等候秒数baudrate串口控制台的波特率netmask以太网的网络掩码ethaddr以太网的MAC地址bootfile默认的下载文件名bootargs传递给Linux内核的启动参数bootcmd自动启动时执行命令serverip TFTP服务器端的IP地址ipaddr本地的IP地址stdin标准输入设备,一般是串口stdout标准输出,一般是串口,也可是LCD(VGA)stderr标准出错,一般是串口,也可是LCD(VGA)要看到你的板上的ENV值可使用printenv命令,例如我的板子:baudrate=115200ethaddr=08:08:11:18:12:27ipaddr=192.168.0.2serverip=192.168.0.1gatewayip=192.168.0.1netmask=255.255.255.0tekkaman=bmp d 70000stdin=serialstdout=serialstderr=serialethact=dm9000Environment size: 470/131068 bytes你会发现有些有的ENV我没有,还有一个“tekkaman”的ENV。
原因是如果你没有设置这个环境变量就不会打印出,你也可以自己定义ENV,并在命令中使用${ENV}来调用它。
第1个参数是环境变量的名称。
第2个参数是要设置的值,如果没有第2个参数,表示删除这个环境变量。
例如:我先将”tekkaman”参数删除,再设置,最后在一个命令串中调用。
[u-boot@MINI2440]# printenv tekkamantekkaman=bmp d 70000[u-boot@MINI2440]# setenv tekkaman[u-boot@MINI2440]# printenv tekkaman##Error:"tekkaman"not defined[u-boot@MINI2440]# setenv tekkaman echo "I am Tekkaman Ninja!"[u-boot@MINI2440]# printenv tekkamantekkaman=echo I am Tekkaman[u-boot@MINI2440]# echo I Love Linux ;${tekkaman}I Love LinuxI am Tekkaman当你设置了ENV,它只保存在内存中,如果你要它保存在存放ENV的固态存储器中,请使用:saveenv。