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常用的命令一、概述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相关命令介绍

cp.l [source target count] //按长字显示
例 cp source dest len
protect 扇区写保护(对Flash 写保护)
setenv aaa //把aaa变量删除
saveenv 保存环境变量
flinfo 查看flash信息
bdinfo 查看开发板信息
查看和修改内存值的指令(可以查看和修改SDRAM和寄存器值)
例如:保护Block1 的Sector 2和Sector 3区域命令为erase 1:2-3
erase bank N //bank N是擦除整个Block,
//擦除Block号为N 的整个Flash
例如:保护Sector 2和Sector 3区域命令为protect 20000 3ffff
protect on start +size //start +size是照起始地址和操作字节数定义范围
protect off start +size //start是保护块的起始地址;
erase start +size //start +size是照起始地址和操作字节数定义范围
//start是擦除块的起始地址;
//size 是擦除的字节数。
//size 是保护的字节数。
例如:保护Sector 2和Sector 3区域命令为protect 20000 +20000
protect on N:SF[-SL]
protect off N:SF[-SL]
//start是擦除块的起始地址;
//end 是擦除末尾块的结束地址。
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是拷贝的长度。
u-boot命令介绍

U-BOOT 命令的介绍U-BOOT 常用命令通常使用help(或者?)来查看所有的U-BOOT 命令,列出在当前配置下所有支持的命令。
但是我们要注意,尽管U-BOOT 提供了很多配置选项,并不是所有选项都支持各种处理器和开发板,有些选项可能在你的配置中并没有被选上。
1 获得帮助信息红色部分是我们常用的一些命令,重点掌握,其它的可以了解一下。
通过help 可以获得当前开发板的U-BOOT 中支持的命令.FS2410 # help? - alias for 'help'autoscr - run script from memorybase - print or set address offsetbdinfo - print Board Info structureboot - 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 cacheecho - echo args to consoleerase - erase NOR FLASH memoryflinfo - print FLASH memory informationgo - start application at address 'addr'help - print online helpicache - enable or disable instruction cacheiminfo - print header information for application imageimls - list all images found in flashitest - return true/false on integer compareloadb - load binary file over serial line (kermit mode)loads - load S-Record file over serial lineloop - infinite loop on address rangemd - memory displaymm - memory modify (auto-incrementing)mtest - simple RAM 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 protocolreset - Perform RESET of the CPUrun - run commands in an environment variablesaveenv - save environment variables to persistent storagesetenv - set environment variablessleep - delay execution for some timetftpboot - boot image via network using TFTP protocolversion - print monitor version2 常用命令使用说明2.1 askenv(F)在标准输入(stdin)获得环境变量。
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的命令,可以提高嵌入式系统的开发效率。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
u-boot命令行接口u-boot中所有操作都是通过其命令行通过输入命令完成。
本节叙述u-boot的命令行接口,请注意,由于u-boot的可配置性,因此,当前配置并不一定支持所有的命令。
用户可以使用help命令查看当前配置支持的所有命令。
u-boot中所有命令的数字都是以十六进制格式输入。
有些命令的处理结果依赖于u-boot 的配置以及一些环境变量的设置。
在u-boot中输入命令并不一定需要输入全名,而是可以省略后面的一些字符,如“help”命令等同于“h”、“he”和“hel”。
下面介绍一些常用的u-boot命令:1) 信息查看命令▼ bdinfo:打印目标板配置信息SMDK2410 # bdinfoarch_number = 0x000000C1env_t = 0x00000000boot_params = 0x30000100DRAM bank = 0x00000000-> start = 0x30000000-> size = 0x04000000ethaddr = 00:00:00:00:00:00ip_addr = 10.0.0.110baudrate = 115200 bpsSMDK2410 #▼ flinfo:获取可用的flash的信息SMDK2410 # flinfoBank # 1: INTEL 28F128J3ASize: 32 MB in 128 SectorsSector Start Addresses:00000000 (RO) 00040000 (RO) 00080000 000C0000 0010000000140000 00180000 001C0000 00200000 0024000000280000 002C0000 00300000 00340000 00380000003C0000 00400000 00440000 00480000 004C000000500000 00540000 00580000 005C0000 0060000000640000 00680000 006C0000 00700000 0074000000780000 007C0000 00800000 00840000 00880000008C0000 00900000 00940000 00980000 009C000000A00000 00A40000 00A80000 00AC0000 00B0000000B40000 00B80000 00BC0000 00C00000 00C4000000C80000 00CC0000 00D00000 00D40000 00D8000000DC0000 00E00000 00E40000 00E80000 00EC000000F00000 00F40000 00F80000 00FC0000 0100000001040000 01080000 010C0000 01100000 0114000001180000 011C0000 01200000 01240000 01280000012C0000 01300000 01340000 01380000 013C000001400000 01440000 01480000 014C0000 0150000001540000 01580000 015C0000 01600000 0164000001680000 016C0000 01700000 01740000 01780000017C0000 01800000 01840000 01880000 018C000001900000 01940000 01980000 019C0000 01A0000001A40000 01A80000 01AC0000 01B00000 01B4000001B80000 01BC0000 01C00000 01C40000 01C8000001CC0000 01D00000 01D40000 01D80000 01DC000001E00000 01E40000 01E80000 01EC0000 01F0000001F40000 01F80000 01FC0000SMDK2410 #其输出包含flash型号(28F128J3A)、大小(32MB)、扇区数(128)、每一扇区的起始地址及其属性,上面的输出中,第一个扇区的起始地址为0x0,第一个扇区的起始地址为0x0,且其属性为只读(标记“RO”)。
▼ help:打印帮助信息如果不带任何参数将打印当前支持的所有命令,如果将某一命令名字作为其参数,将得到该命令的更加详细的信息。
如:SMDK2410 #helpSMDK2410 #help flinfo2) 存储器操作命令▼ base:打印或设置地址偏移SMDK2410 # baseBase Address: 0x00000000SMDK2410 # md 0 c00000000: feffffff 00000000 7cbd2b78 7cdc3378 ........|.+x|.3x00000010: 3cfb3b78 3b000000 7c0002e4 39000000 <.;x;...|...9...00000020: 7d1043a6 3d000400 7918c3a6 3d00c000 }.C.=...y...=...SMDK2410 # base 40000000Base Address: 0x40000000SMDK2410 # md 0 c40000000: 27051956 50504342 6f6f7420 312e312e '..VPPCBoot 1.1.40000010: 3520284d 61722032 31203230 3032202d 5 (Mar 21 2002 -40000020: 2031393a 35353a30 34290000 00000000 19:55:04)......SMDK2410 #使用该命令打印或设置存储器操作命令所使用的“基地址”,缺省值是0。
当需要反复访问一个地址区域时,可以设置该区域的起始地址为基地址,其余的存储器命令参数都相对于该地址进行操作。
如上面所示,设置0x40000000地址为基地址以后,md操作就相对于该基地址进行。
▼ crc32:校验和计算该命令能够用于计算某一段存储器区域的CRC32校验和。
SMDK2410 # crc 100004 3FCCRC32 for 00100004 ... 001003ff ==> d433b05bSMDK2410 #当使用3个参数时,该命令保存计算的校验和到指定的地址,如:SMDK2410 # crc 100004 3FC 100000CRC32 for 00100004 ... 001003ff ==> d433b05bSMDK2410 # md 100000 400100000: d433b05b ec3827e4 3cb0bacf 00093cf5 .3.[.8'.<.....<.SMDK2410 #可以看到,CRC32校验和不仅仅被打印出来,而且被存储在地址0x100000。
▼ cmp:存储区比较使用cmp命令,用户可以测试两个存储器区域是否相同。
该命令或者测试由第三个参数指定的整个区域,或者在第一个存在差异的地方停下来SMDK2410 # cmp 100000 40000000 400word at 0x00100004 (0x50ff4342) != word at 0x40000004 (0x50504342)Total of 1 word were the sameSMDK2410 # md 100000 C00100000: 27051956 50ff4342 6f6f7420 312e312e '..VP.CBoot 1.1.00100010: 3520284d 61722032 31203230 3032202d 5 (Mar 21 2002 -00100020: 2031393a 35353a30 34290000 00000000 19:55:04)......SMDK2410 # md 40000000 C40000000: 27051956 50504342 6f6f7420 312e312e '..VPPCBoot 1.1.40000010: 3520284d 61722032 31203230 3032202d 5 (Mar 21 2002 -40000020: 2031393a 35353a30 34290000 00000000 19:55:04)......SMDK2410 #cmp命令可以以不同的宽度访问存储器:32位、16位或者8位。
如果使用“cmp”或“cmp.l”则使用缺省宽度(32位),如果使用“cmp.w”则使用16位宽度,“cmp.b”使用8位宽度。
请注意第三个参数表示的是比较数据的长度,其单位为“数据宽度”,视所使用的命令不同而不同,如:采用32位宽度时单位为32位数据,即4个字节。
SMDK2410 # cmp.l 100000 40000000 400word at 0x00100004 (0x50ff4342) != word at 0x40000004 (0x50504342)Total of 1 word were the sameSMDK2410 # cmp.w 100000 40000000 800halfword at 0x00100004 (0x50ff) != halfword at 0x40000004 (0x5050)Total of 2 halfwords were the sameSMDK2410 # cmp.b 100000 40000000 1000byte at 0x00100005 (0xff) != byte at 0x40000005 (0x50)Total of 5 bytes were the sameSMDK2410 #▼ cp:存储区拷贝该命令用于存储区拷贝,和cmp命令一样,该命令支持.l、.w和.b扩展命令。
SMDK2410 # cp 40000000 100000 10000SMDK2410 #▼ md:存储区显示该命令以十六进制和ASCII码方式显示存储区,该命令支持.l、.w和.b扩展命令。
▼ mm:存储区修改该命令提供一种交互式地修改存储器内容的方式。
它将显示地址和当前内容,然后提示用户输入,如果用户输入一个合法的十六进制值,该值将被写到当前地址。