uboot命令
- 格式:doc
- 大小:84.50 KB
- 文档页数:8
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命令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中也使用了它。
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常用的命令: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下的指令⼀、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 常用命令通常使用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常用的命令
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是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个参数是环境变量的名称。
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 在最后下面代码上添加如下带码:。
uboot下的命令⾏1.典型嵌⼊式linux系统启动过程:嵌⼊式系统上电后先执⾏uboot、然后uboot负责初始化DDR,初始化Flash,然后将OS从Flash中读取到DDR中,然后启动OS(OS启动后uboot就⽆⽤了)2.uboot必须解决哪些问题1、⾃⾝可开机直接启动(1)⼀般的SoC都⽀持多种启动⽅式,譬如SD卡启动、NorFlash启动、NandFlash启动等·····uboot要能够开机启动,必须根据具体的SoC的启动设计来设计uboot(2)uboot必须进⾏和硬件相对应的代码级别的更改和移植,才能够保证可以从相应的启动介质启动。
uboot中第⼀阶段的start.S⽂件中具体处理了这⼀块。
2、能够引导操作系统内核启动并给内核传参(1)uboot的终极⽬标就是启动内核。
(2)linux内核在设计的时候,设计为可以被传参。
也就是说我们可以在uboot中事先给linux内核准备⼀些启动参数放在内存中特定位置然后传给内核,内核启动后会到这个特定位置去取uboot传给他的参数,然后在内核中解析这些参数,这些参数将被⽤来指导linux内核的启动过程。
3、能提供系统部署功能(1)uboot必须能够被⼈借助⽽完成整个系统(包括uboot、kernel、rootfs等的镜像)在Flash上的烧录下载⼯作。
(2)裸机教程中刷机(ARM裸机第三部分)就是利⽤uboot中的fastboot功能将各种镜像烧录到iNand中,然后从iNand启动。
4、能进⾏soc级和板级硬件管理(1)uboot中实现了⼀部分硬件的控制能⼒(uboot中初始化了⼀部分硬件),因为uboot为了完成⼀些任务必须让这些硬件⼯作。
譬如uboot要实现刷机必须能驱动iNand,譬如uboot要在刷机时LCD上显⽰进度条就必须能驱动LCD,譬如uboot能够通过串⼝提供操作界⾯就必须驱动串⼝。
u-boot 启动大致流程u-boot:Start.s ->start_armboot ()<./lib_arm/board.c> ->main_loop ()<./common/main.c>main_loop()会调用abortboot (bootdelay)判断在delay time内有没有键按下,并给出prompt“Hit any key to stop autoboot”,若没有键按下则run_command (s, 0)(s为默认的bootcmd)。
这里默认的bootcmd需要根据内核的位置设置,若bootcmd未赋值,Uboot就会一直等待。
如果敲入bootm,也会启动kernel,并且传入参数。
如果使用tftp从pc中下载kernel并启动也是可以的。
添加u-boot命令,也就是在进入main_loop()函数后,在等待的时间里可以识别的命令步骤:1、添加命令标志CONFIG_CMD_XXXXX(XXXXX为自己的定义的命令)在/include/config_cmd_all.h 和/include/config_cmd_default.h中都添加2、编写代码在u-boot/common目录下,建立一个cmd_XXXXX.c文件,自己定义的命令,具体实现命令的函数3、修改一下u-boot/common/Makefile文件在合适的位置添加ifdef CONFIG_CMD_XXXXXCOBJS-$(CONFIG_CMD_XXXXX) += cmd_XXXXX.oendif4、回到u-boot顶层目录> make Super2440_config # 调入自己板子配置> make # 完成make后,就得到u-boot.bin文件5、把得到的u-boot.bin文件烧入板子NOR FLASH,启动板子进入u-boot命令行,输入help,就能看到XXXXX命令被列出来。
uboot下的命令使⽤⽰例b 可以使⽤此命令读取u盘⾥的内容,此命令加上相关参数可以有以下功能:1.1usb start 在使⽤u盘之前必须启动此命令以初始化好fat⽂件系统环境,笔者的输出如下:jello # usb start(Re)start USB...USB: Starting the controllerscanning bus for devices... 5 USB Device(s) foundscanning bus for storage devices... usb_stor_get_info->1431,blksz:512Device NOT readyRequest Sense returned 02 3A 002 Storage Device(s) found1.2 usb dev 查看检测到的usb设备,笔者的输出如下:jello # usb devUSB device 0: Vendor: Lexar Rev: 1100 Prod: USB Flash DriveType: Removable Hard DiskCapacity: 3824.0 MB = 3.7 GB (7831552 x 512)1.3 usb info可列出usb host的属性,笔者的输出如下:jello # usb devUSB device 0: Vendor: Lexar Rev: 1100 Prod: USB Flash DriveType: Removable Hard DiskCapacity: 3824.0 MB = 3.7 GB (7831552 x 512)jello # usb info1: Hub, USB Revision 1.10- OHCI Root Hub- Class: Hub- PacketSize: 8 Configurations: 1- Vendor: 0x0000 Product 0x0000 Version 0.0Configuration: 1- Interfaces: 1 Self Powered 0mAInterface: 0- Alternate Setting 0, Endpoints: 1- Class Hub- Endpoint 1 In Interrupt MaxPacket 2 Interval 255ms2: Hub, USB Revision 2.0- USB2.0 Hub- Class: Hub- PacketSize: 64 Configurations: 1- Vendor: 0x05e3 Product 0x0608 Version 133.54Configuration: 1- Interfaces: 1 Self Powered Remote Wakeup 100mAInterface: 0- Alternate Setting 0, Endpoints: 1- Class Hub- Endpoint 1 In Interrupt MaxPacket 1 Interval 255ms3: Hub, USB Revision 2.0- USB2.0 Hub- Class: Hub- PacketSize: 64 Configurations: 1- Vendor: 0x05e3 Product 0x0608 Version 133.54Configuration: 1- Interfaces: 1 Self Powered Remote Wakeup 100mAInterface: 0- Alternate Setting 0, Endpoints: 1- Class Hub- Endpoint 1 In Interrupt MaxPacket 1 Interval 255ms4: Mass Storage, USB Revision 2.0- Lexar USB Flash Drive AA066NWLMLMLBQPX- Class: (from Interface) Mass Storage- PacketSize: 64 Configurations: 1- Vendor: 0x05dc Product 0xa813 Version 17.0Configuration: 1- Interfaces: 1 Bus Powered 200mAInterface: 0- Alternate Setting 0, Endpoints: 2- Class Mass Storage, Transp. SCSI, Bulk only- Endpoint 1 In Bulk MaxPacket 64- Endpoint 2 Out Bulk MaxPacket 645: Mass Storage, USB Revision 2.0- Generic Ultra Fast Media 000000225001- Class: (from Interface) Mass Storage- PacketSize: 64 Configurations: 1- Vendor: 0x0424 Product 0x2240 Version 1.152Configuration: 1- Interfaces: 1 Bus Powered 96mAInterface: 0- Alternate Setting 0, Endpoints: 2- Class Mass Storage, Transp. SCSI, Bulk only- Endpoint 2 Out Bulk MaxPacket 64- Endpoint 2 In Bulk MaxPacket 641.4 usb storage 可列出u盘设备信息:jello # usb storageDevice 0: Vendor: Lexar Rev: 1100 Prod: USB Flash Drive Type: Removable Hard DiskCapacity: 3824.0 MB = 3.7 GB (7831552 x 512)Device 1: Vendor: Generic Rev: 1.98 Prod: Ultra HS-COMBO Type: Removable Hard DiskCapacity: not available1.5 usb tree 列出设备树:jello # usb treeDevice Tree:1 Hub (12 Mb/s, 0mA)| OHCI Root Hub|+-2 Hub (12 Mb/s, 100mA)| USB2.0 Hub|+-3 Hub (12 Mb/s, 100mA)| | USB2.0 Hub| || +-4 Mass Storage (12 Mb/s, 200mA)| Lexar USB Flash Drive AA066NWLMLMLFEPX|+-5 Mass Storage (12 Mb/s, 96mA)Generic Ultra Fast Media 0000001354041.6 usb part 列出u盘的分区表jello # usb partPartition Map for USB device 0 -- Partition Type: DOS Partition Start Sector Num Sectors Type1 2048 7829504 83## Unknown partition table2. fatls 列出fat⽂件系统中的内容,i其⽤法如下:usage: fatls <interface> <dev[:part]> [directory] interface是指定哪种类型的设备,此处笔者⽤的usb设备,因此填⼊usb,dev就是设备号,笔者从以上命令得知为0jello # fatls usb 0187495 check.pngsystem volume information/4051616 uimagehello/.trash-1000/2 file(s),3 dir(s)3. fatload 从u盘加载⽂件到指定内存地址处,⽤法如下:usage: fatload <interface> <dev[:part]> <addr> <filename> [bytes] interface和dev不再叙述,addr 指定要加载⽂件到内存的某个地址,filename指定要加载的⽂件名jello # fatload usb 0 0x42000000 uimagereading uimage .............................................................................. ............................................................................... ................................................................................ ................................................................................... ...........................................................................4221634 bytes read4.sf ⽀持spi/qspi flash的操作,必须先擦除再写4.1 sf probe 在操作spi flash之前必须进⾏此操作:jello # sf probe 032768 KiB spi_flash at 0:0 is now current device4.2 sf erase 擦除操作:jello # sf erase 0x100000 0x400000 (0x100000是要擦除的起始地址,0x400000为指定要擦除的⼤⼩)Erasing at 0x500000 -- 100% complete.4.3 sf write 写操作:jello # sf write 0x42000000 0x100000 0x400000Writing at 0x500000 -- 100% complete.。
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格式化分区命令U-Boot 格式化分区命令在嵌入式系统中,U-Boot 是一种常用的引导加载程序,它允许用户在设备启动时进行各种配置和操作。
其中一个重要的操作就是格式化分区,这是一种重置文件系统并准备存储空间的过程。
在本文中,我们将学习如何使用U-Boot 命令格式化分区。
U-Boot 是一个功能强大的工具,为用户提供了一系列用于分区操作的命令。
这些命令可以格式化不同类型的分区,例如MMC 卡、SD 卡、USB 存储设备等。
我们将使用其中一些常用的命令来演示U-Boot 格式化分区的过程。
首先,你需要进入U-Boot 命令行界面。
在设备启动时,按下指定的键(通常是组合键如Ctrl+C)进入U-Boot 命令行。
一旦进入该界面,你可以看到一个命令提示符,表示你可以输入命令进行操作。
1. 确定设备和分区在格式化分区之前,你需要确定要格式化的设备和分区。
可以使用`mmc` 或`usb` 命令查看可用设备和分区的列表。
例如,`mmc list` 命令将显示所有可用的MMC 设备及其分区列表。
2. 选择分区一旦你确定了要格式化的设备,你需要选择要格式化的分区。
使用`mmc part` 命令或`part` 命令来选择分区。
例如,`mmc part 1` 命令将选择MMC 设备的第一个分区。
3. 格式化分区一旦选择了要格式化的分区,你可以使用`fatformat` 命令或`fatinfo` 命令校验分区的格式。
如果分区已经是FAT 格式,则可以直接运行`fatformat` 命令进行格式化。
例如,`fatformat mmc 1` 命令将格式化MMC 设备的第一个分区。
如果要格式化为其他文件系统,例如ext2、ext3 或ext4,你需要先运行`fatformat` 命令将分区格式化为FAT,并使用`ext2format`、`ext3format` 或`ext4format` 命令将其转换为相应的文件系统格式。
UBoot常⽤命令⼿册UBoot常⽤命令⼿册U-Boot还提供了更加详细的命令帮助,可以通过”?”显⽰⽀持的命令列表,通过help [CommandName]命令还可以查看每个命令的参数说明。
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环境变量给内核)。
附加说明: 要求⼆进制代码为制定格式的。
通常为mkimage处理过的⼆进制⽂件。
起动UBOOT TOOLS制作的压缩LINUX内核, bootm 32000002、bootpbootp [loadAddress] [bootfilename]bootp命令通过bootp请求,要求DHCP服务器分配IP地址,然后通过TFTP协议下载指定的⽂件到内存。
第1个参数是下载⽂件存放的内存地址。
第2个参数是要下载的⽂件名称,这个⽂件应该在开发主机上准备好。
附加说明: 通过⽹络启动,需要提前设置好硬件地址bdinfo打印ARM相关信息3、cmpcmp [.b, .w, .l] addr1 addr2 count- compare memorycmp命令可以⽐较2块内存中的内容。
.b以字节为单位;.w以字为单位;.l以长字为单位。
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,且其属性为只读(标记“R O”)。
uboot常⽤命令详解dnw:在进⼊系统之前进⼊指令⾏,输⼊该指令可下载烧录⽂件。
re:重新启动嵌⼊式系统。
printenv:打印当前系统环境变量。
setenv:设置环境变量,格式:setenv name value ...,表⽰将name 变量设置成value 值;如果没有这个参数,表⽰删除该变量。
saveenv:保存环境变量到NAND中。
sleep:延迟执⾏,格式:sleep N,可以延迟N秒钟执⾏。
run:执⾏环境变量中的命令,格式:run var,可以跟⼏个环境变量名。
crc32:计算校验值,格式:crc32 address count [addr],第⼀个参数是需校验的起始地址,第⼆个参数是校验的数据字节数,第三个参数是保存校验值的地址。
cp:在内存中复制数据块,格式:cp source target count,第⼀个参数是源地址,第⼆个参数是⽬的地址,第三个参数是复制数⽬。
cmp:⽐较内存中的数据块,格式:cmp addr1 addr2 count,第⼀个参数是内存地址⼀,第⼆个参数是内存地址⼆,第三个是⽐较长度(单位是字节数除以4,以WORDS为单位)。
bootm:可以引导启动存储在内存中的程序映像。
格式:bootm addr1 addr2,第⼀个参数是程序映像的地址,第⼆个参数⼀般是RAMDISK 地址。
nand scrub:暴⼒擦除指令,擦除整个NAND,会擦除bad block标记。
nand erase:擦除NAND,格式:nand erase addr1 count,第⼀个参数是OFFSET,第⼆个参数是擦除字节数。
其中OFFSET是相对于Download地址。
nand write:下载的内存数据写⼊NAND,格式:nand write addr offset count,第⼀个参数是写⼊基地址,第⼆个参数是偏移地址,第三个参数是写⼊字节数。
nand read:讲NAND数据读取到内存,格式:nand read addr offset count,第⼀个参数是读取的NAND地址,第⼆个参数是内存位置偏移,第三个参数是读取字节数。
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中内存单元的值,地址不⾃增。
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中也使用了它。
✧cpu:与cpu相关代码文件,其中的所有子目录都是以u-boot所支持的cpu命名。
cpu/at91rm9200/at45.c, at91rm9200_ether.c, cpu.c, interrupts.cserial.c, start.S, config.mk, Makefile等。
其中:cpu.c负责初始化CPU、设置指令Cache和数据Cache等;interrupt.c负责设置系统的各种中断和异常,比如快速中断、开关中断、时钟中断、软件中断、预取中止和未定义指令等;start.S负责u-boot启动时执行的第一个文件,它主要是设置系统堆栈和工作方式,为跳转到C程序入口点做准备;at91rm9200_ether.c和serial.c很重要,这是系统能够下载资源的前提。
✧disk:设备分区处理代码。
✧doc:u-boot相关文档。
✧drivers:u-boot所支持的设备驱动代码, 网卡、支持CFI的Flash、串口和USB总线等。
✧fs: u-boot所支持文件系统访问存取代码,如jffs2。
✧include:u-boot head文件,主要是与各种硬件平台相关的头文件,如include/asm-arm/arch-at91rm9200/AT91RM9200.h(硬件寄存器名称及地址的定义), hardware.h (内存及flash地址以及IO物理地址和虚拟地址的定义),include/asm-arm/proc-armv(与具体的CPU无关,无需移植)。
✧net:与网络有关的代码,BOOTP协议、TFTP协议、RARP协议代码实现. 无需移植。
✧lib_arm:与arm体系相关的代码。
✧tools:编译后会生成mkimage工具,用来对生成的raw bin文件加入u-boot特定的image_header.2.2 U-Boot支持的主要功能主要功能如下:✧系统引导,支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统;✧支持NFS挂载、从FLASH中引导压缩或非压缩系统内核;✧基本辅助功能,强大的操作系统接口功能;可灵活设置、传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布,尤对Linux 支持最为强劲;✧支持目标板环境参数多种存储方式,如FLASH、NVRAM、EEPROM;✧CRC32校验,可校验FLASH中内核、RAMDISK镜像文件是否完好;✧设备驱动,串口、SDRAM、FLASH、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCMCIA、PCI、RTC等驱动支持;✧上电自检功能 SDRAM、FLASH大小自动检测;SDRAM故障检测;CPU型号;✧特殊功能,XIP内核引导。
2.3 U-boot命令介绍及环境变量✧?得到所有命令列表✧Help:help usb, 列出USB功能的使用说明✧ping:注意只能开发板PING别的机器(AT91RM9200不支持,需要进行配置)✧setenv: 设置环境变量setenv serverip 192.168.0.1setenv ipaddr 192.168.0.56setenv bootcmd ‘tftp 32000000 vmlinux;kgo 32000000’✧saveenv:保存环境变量。
在设置好环境变量以后,保存变量值✧tftp:tftp 32000000 vmlinux, 把server(IP=环境变量中设置的serverip)中/tftpboot/下的vmlinux通过TFTP读入到物理内存32000000处✧bootp- 通过网络用 BootP/TFTP 协议来启动映象✧tftpboot- 通过网络用 TFTP 协议、设置服务器和客户机的 IP 地址进行映象文件传送✧kgo: 起动没有压缩的linux内核,kgo 32000000(AT91RM9200不支持)✧bootm:起动UBOOT TOOLS制作的压缩LINUX内核, bootm 3200000✧protect:对FLASH进行写保护或取消写保护,protect on 1:0-3(就是对第一块FLASH的0-3扇区进行保护),protect off 1:0-3取消写保护✧erase:删除FLASH的扇区, erase 1:0-2(就是对每一块FLASH的0-2扇区进行删除)✧cp:在内存中复制内容, cp 32000000 0 40000(把内存中0x32000000开始的0x40000字节复制到0x0处)✧mw:对RAM中的内容写操作, mw 32000000 ff 10000(把内存0x32000000开始的0x10000字节设为0xFF)✧md:修改RAM中的内容, md 32000000(内存的起始地址)✧flinfo:列出flash的信息✧loadb:准备用KERMIT协议接收来自kermit或超级终端传送的文件。
✧nfs: nfs 32000000 192.168.0.12:aa.txt,把192.168.0.12(LINUX 的NFS文件系统)中的NFS文件系统中的aa.txt 读入内存0x32000000处。
最常用的几个命令如下:✧go- 在地址 'addr' 处开始程序执行✧run- 运行一个环境变量所定义的命令✧bootm- 从内存中进行运行经过mkimage加工的程序映象✧loadb- 通过串口线(kermit mode) 来装载二进制文件✧printenv- 打印环境变量✧setenv- 设置环境变量✧saveenv保存环境变量到内存✧tftp-通过网络下载文件✧protect,erase,flash读写下面是 U-BOOT 中的简单环境变量✧baudrate波特率✧bootdelay boot 延迟✧bootcmd Boot 命令✧bootargs Boot 参数,传递给内核✧bootfile 默认下载启动的内核映象✧ipaddr 客户机 IP 地址✧serverip 服务器地址✧loadaddr 装载地址✧ethaddr 网卡 MAC 地址2.4 U-Boot的启动流程分析和大多数的Bootloader一样,U-BOOT的启动分为两个阶段两个部分,依赖于CPU 体系结构的代码主要放在stage1,且用汇编来实现,而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且具有更好的可读性和可移植性。
下面分别分析一下这两个阶段的启动流程:第一阶段:基本的硬件初始化,为第二阶段程序运行建立环境(cpu/at91rm9200/start.s文件的代码部分):××××××××××××××××××××××××××××OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUTPUT_ARCH(arm)ENTRY(_start) // 程序的入口在/cpu/××××/start.s中定义SECTIONS{. = 0x00000000; // 程序链接的地址. = ALIGN(4);.text :{cpu/at91rm9200/start.o (.text)*(.text)}. = ALIGN(4);.rodata : { *(.rodata) }. = ALIGN(4);.data : { *(.data) }. = ALIGN(4);.got : { *(.got) }__u_boot_cmd_start = .;.u_boot_cmd : { *(.u_boot_cmd) }__u_boot_cmd_end = .;armboot_end_data = .; //代码段结束地址. = ALIGN(4);.bss : { *(.bss) }armboot_end = .; //整个U-boot印象的结束地址}××××××××××××××××××××××××××××在此需要定义程序入口,由于一个可执行的Image必须要有一个入口点,并且只能有一个全局入口,通常这个入口就在ROM (flash)的0x0地址,因此,必须通知编译器以使其知道这个入口,该工作可通过修改连接器脚本u-boot.lds来完成,该阶段需要依次完成的工作一般包括:✧CPU自身的初始化,它包括:CPU运行模式的设置(管理模式)、设置异常的入口地址和异常处理函数、运行时钟频率的设置等工作。