03.uboot

注:U-Boot 提供了详细的命令帮助,可以通过”?”显示支持的命令列表,通过help [CommandName]命令还可以查看每个命令的参数说明。U-Boot 中所有数据默认为16进制。



        1、bootm [addr [arg ...]]        引导启动存储在内存中的程序映像。内存包括RAM和可以永久保存的Flash。

参数一: addr 是程序映像的地址,这个程序映像必须转换成U-Boot的格式。

参数二:用于引导Linux内核。通常作为U-Boot格式的RAMDISK映像存储地址;也可以作为参数传递给Linux内核(缺省时传递bootargs环境变量给内核)。

注:要求二进制代码为制定格式的。通常为mkimage处理过的二进制文件。起动UBOOT TOOLS制作的压缩LINUX内核, bootm 3200000

        2、bootp [loadAddress] [bootfilename]        通过bootp请求,要求DHCP服务器分配IP地址,然后通过TFTP协议下载指定的文件到内存。

参数一:下载文件存放的内存地址。

参数二:要下载的文件名称,这个文件应该在开发主机上准备好。

注:通过网络启动,需要提前设置好硬件地址bdinfo打印ARM相关信息

        3、cmp [.b, .w, .l] addr1 addr2 count        比较2块内存中的内容。.b以字节为单位;.w以字为单位;.l以长字为单位。

参数一:addr1是第一块内存的起始地址。

参数二:addr2是第二块内存的起始地址。

参数三:count是要比较的数目,单位为字节、字或者长字。

注:cmp.b中间不能保留空格,需要连续敲入命令。

        4、cp [.b, .w, .l] source target count        用于内存中复制数据块,包括对Flash的读写操作(地址可以是ram,或nor flash)。

参数一:source是要复制的数据块起始地址。

参数二:target是数据块要复制到的地址。这个地址如果在Flash中,那么会直接调用写Flash的函数操作。U-Boot写Flash就使用这个命令(必要时写之前先擦除)。

参数三:count是要复制的数目,根据cp.b cp.w cp.l分别以字节、字、长字为单位。

        5、crc32 address count [addr]        计算存储数据的校验和。

参数一:address是需要校验的数据起始地址。

参数二:count是要校验的数据字节数。

参数三:addr用来指定保存结果的地址。

        6、echo [args..]        回显参数。

例如:echo $( bootcmd)

        7、erase        擦Flash。其参数必须指定Flash擦除的范围。

erase start end                   - erase FLASH from addr 'start' to addr 'end'

erase start + offset             - erase FLASH from addr 'start' to addr 'start + offset'. (字节必须块对齐)

erase N:SF[-SL]                 - erase sectors SF-SL in FLASH bank # N. (N:block number;SF:erase sector first number;SL:erase sector last number)

erase bank N                     - erase FLASH bank # N

erase all                             - erase all FLASH banks

        8、flinfo        打印全部Flash组的信息,也可以只打印其中某个组。一般嵌入式系统的Flash只有一个组。

flinfo             - print information for all FLASH memory banks

flinfo N         - print information for FLASH memory bank # N

        9、go addr [arg ...]        执行应用程序。

参数一:要执行程序的入口地址。

参数二:传递给程序的参数,可缺省。

        10、iminfo addr [addr ...]        打印程序映像的开头信息,包含映像内容的校验(序列号、头和校验和)。

参数一:指定映像的起始地址。

参数二:指定更多的映像地址,可缺省。

        11、loadb [ offset ] [ baud ]        通过串口Kermit协议下载二进制数据。

参数一:offset为偏移量。

参数二:baud rate为波特率。

        12、loads [ offset ]        通过串口线下载S-Record格式文件。

参数一:offset为偏移量。

        13、mw [.b, .w, .l] address value [count]        按照字节、字、长字写内存,.b .w .l的用法与cp命令相同。memory write。

参数一:address是要写的内存地址。

参数二:value是要写入的数据。

参数三:count是要写单位值的数目,可缺省。

        14、nm [.b, .w, .l] address        按照字节、字、长字修改内存。memory modify。

参数一:address是要读出并且修改的内存地址。

        15、md [.b, .w, .l] address [# of objects]        显示内存区的内容。memory display。

参数一:address是要读出并且修改的内存地址。

参数二:

        16、mm        读或修改内存,地址自动递增。

用法:mm 内存地址 回车。

查看内存:直接按回车( 原内容不变)。

修改内存:在问号后面输入数值然后回车 按 . 此符号退出。

        17、nfs [loadAddress] [host ip addr:bootfilename]        用NFS网络协议,通过网络启动映像。

用法:nfs 32000000 192.168.0.2:aa.txt

把192.168.0.2(LINUX 的NFS文件系统)中的NFS文件系统中的aa.txt 读入内存0x32000000处。

        18、printenv        打印环境变量。

printenv - print values of all environment variables(打印全部环境变量)

printenv name ... - print value of environment variable 'name'(只打印参数中列出的环境变量)

        19、protect        使能和解除对Flash写保护的操作。

protect [ on/off ] start end - set Flash protect/writable from addr 'start' to addr 'end'

protect [ on/off ] N:SF[-SL] - set sectors SF-SL protect/writable in Flash bank # N. SF:sector first,SL:sector last.

protect [ on/off ] bank N - make Flash bank # N protect/writable

protect [ on/off ] all - make all Flash banks writable protect/writable

参数一:on代表使能写保护;off代表解除写保护。

参数二、三:指定Flash写保护操作范围,跟擦除的方式相同。

        20、rarpboot [loadAddress] [bootfilename]        使用TFTP协议通过网络启动映像(把指定的文件下载到指定地址,然后执行)。

参数一:映像文件下载到的内存地址。

参数二:要下载执行的映像文件。

        21、run var [...]        执行环境变量中的命令。

参数:可以跟几个环境变量名。

Uboot> setenv flashit tftp 20000000 mycode.bin\; erase 10020000 1002FFFF\;

cp.b 20000000 10020000 8000

Uboot> saveenv

Uboot> run flashit

        22、setenv        设置环境变量。

setenv name value ... - set environment variable 'name' to 'value ...'

setenv name - delete environment variable 'name'

参数一:环境变量的名称。

参数二:要设置的值。缺省表示删除这个环境变量。

        23、saveenv        保存环境变量。

将当前定义的所有的变量及其值存入flash中。用来存储变量及其值的空间只有8k字节,应不要超过。

        24、sleep N        延迟。

延迟N秒钟执行,N为十进制数。

        25、tftpboot [loadAddress] [bootfilename]        用TFTP协议通过网络下载文件。

按照二进制文件格式下载。使用时必须配置好相关的环境变量。例如serverip和ipaddr。

参数一:下载到的内存地址。

参数二:要下载的文件名称,必须放在TFTP服务器相应的目录下。

        26、ping        测试连接

注:只能开发板PING别的机器

        27、usb [start/info/scan]

usb start: 起动usb功能

usb info: 列出设备

usb scan: 扫描usb storage(u 盘)设备

        28、kgo        起动没有压缩的linux内核

kgo 32000000

        29、fatls        列出DOS FAT文件系统

fatls usb 0列出第一块U盘中的文件

        30、fatload        读入FAT中的一个文件

fatload usb 0:0 32000000 aa.txt 把USB中的aa.txt 读到物理内存0x32000000处。



uboot的命令: help//列出当前uboot所有支持的命令

help 命令//查看指定命令的帮助

reset//重启uboot

bootm//用于启动内核 用法: bootm0x42000000//从内存地址0x42000000启动内核, 启动前需把内核镜像uImage存放到指定的内存地址

printenv//打印所有环境变量的值

printenv 环境变量名//查看指定的环境变量值

bootdelay// uboot启动后,倒计时多少秒后自动执行环境变量bootcmd的语句

bootcmd// 倒计时到0后,自动执行里面的语句

bootargs// 是用于提供给内核的启动参数语句

setenv//设置/修改/删除环境变量的值用法: setenv 环境变量名//删除指定的环境变量setenv myargs"hello"//设置环境变量myargs=hello, 如果环境变量没有会创建出来,如果已存则会修改它的值saveenv//保存环境变量,环境变量修改过后必须执行此命令才可以保存起来,否则重启后环境变量就恢复了.loady//用于从uart线下载文件到板上内存里(loadb, loads, loadx基本一样)用法: loady0x40008000//把下载的文件从内存地址0x40008000开始存放执行"loady 0x40008000"后, uboot就会进入等待状态,等着接收数据 minicom具有通过uart传输文件的功能. 按"ctrl+a", 松手后再按"s", 选择"ymodem", 在弹出的界面里按空格键选中要传的文件. md 内存地址//用于查看内存地址上的值用法: md.b0x40008000100//从内存地址0x40008000开始,查看0x100个字节并输出值md.w0x40008000100//从内存地址0x40008000开始,查看0x100个16位值并输出值md.l0x40008000100//从内存地址0x40008000开始,查看0x100个32位值并输出值 mw//用于修改内存地址上的值用法: mw.b0x400080000xab100//从内存地址0x40008000开始的0x100字节空间,设值为0xabmw.w0x400080000xabcd100//从内存地址0x40008000开始的0x200字节空间,每16位值设为0xabcdmw.l0x400080000xabcdef88100//从内存地址0x40008000开始的0x400字节空间,每32位值设为0xabcdef88 go//执行指定内存地址上的指令用法:go0x40008000mmc// sd/mmc接口设备(sd卡, emmc)操作命令, 按扇区操作(每扇区512字节)用法: mmcread addr blk cnt//从mmc设备上的第blk个扇区开始,共读出cnt个扇区到内存地址addr上mmcwrite 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 mmc0:2//查看第0个存储设备的第二个分区ext4load//从ext2/3/4分区里读出文件到指定的内存地址用法: ext4load mmc0:20x40008000/uImage//从第0个存储设备的第2个分区的根目录读出uImage文件到内存地址0x40008000fatls//查看存储设备的fat分区里的内容用法: fatls mmc0:1//查看第0个存储设备的第1个分区(fat分区)fatload//从fat分区里读出文件到指定的内存地址用法: fatload mmc0:10x40008000/uImage//从第0个存储设备的第1个分区的根目录读出uImage文件到内存地址0x40008000 fatwrite//把内存上的数据存储到fat分区的一个文件里用法: fatwrite mmc0:10x40008000/my.txt0x35//把内存地址0x40008000开始的0x35个字节数据写入到第0个设备的第1个分区里,文件名为my.txtrun//执行指定的环境变量里的语句用法: run bootcmd//执行环境变量bootcmd里的语句//如uboot上已驱动好网络设备并环境变设好IP及PC端IP,还可以使用以下命令:tftpboot0x40008000文件名// 通过网络下载文件到内存地址0x40008000, PC端需配置好tftp服务器 nfs0x40008000pc端IP:/带路径的文件名//pc端需配置好nfs服务器ping ip//检测网络是否通


指令: bootm

bootm  用于将内核镜像加载到内存的指定地址处

例:

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个参数是环境变量的名称。

第2个参数是要设置的值,如果没有第2个参数,表示删除这个环境变量

例:

setenv serverip 192.168.1.12//添加环境变量serverip 其值为 192.168.1.12

setenv serverip 192.168.1.20//在上一行的基础上把环境变量serverip 值重新赋为 192.168.1.20

setenv serverip  //把 serverip 变量删除 

指令: saveenv保存环境变量

指令: printenv  查看环境变量

使用该命令返回:

bootdelay=1

baudrate=115200

bootfile="uImage"

filesize=6600EC

fileaddr=82000000

bootargs=mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),4M(kernel),27M(rootfs)

bootcmd=sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm 0x82000000

stdin=serial

stdout=serial

stderr=serial

verify=n

ver=U-Boot 2010.06 (Jan 20 2015 - 15:46:38)

serverip=192.168.1.12

ipaddr=192.168.1.129

ethaddr=00:01:02:11:88:91

netmask=255.255.255.0

gatewayip=192.168.1.1



查看和修改内存值指令

查看内存命令 md

修改内存命令 mm

填充内存命令 mw

复制内存命令 cp

这些命令都可以带上后缀 “.b”(字节 byte),  ”.w”(字 word),  ”.l”(4字节 long)  为单位进行操作

指令: mw填充内存命令

mw[.b,.w,.l] address value [count] 

表示以[.b,.w,.l]为单位往开始地址为address的内存填充count 个值为 value 的数据

例:

mw.b 82000000 ff 100000从地址0x82000000地址开始填充0x100000(1M字节)个值为0xff的数据

指令: md查看内存命令

md[.b,.w,.l] address [count] 

表示以[.b,.w,.l]为单位显示从地址address开始的内存数据,显示的数据个数为count

例:

md.b 82000000  10显示从地址0x82000000地址开始的0x10个字节的数据

返回信息:

82000000: d3 2c b4 4b 2c d3 4b b4 d3 d3 b4 b4 d3 2c b4 4b    .,.K,.K......,.K

指令: mm修改内存命令

mm[.b,.w,.l] address

表示以[.b,.w,.l]为单位从地址address开始修改内存数据,执行mm命令后,输入新数据后回车,地址会自动增加,按“CTRL + c”退出;

例: 把第一个字节数据0xd3修改为0xd4

mm.b 82000000

返回:

82000000: d3 ? d4

82000001: 2c ?

指令: cp复制内存命令

cp[.b,.w,.l] source target [count] 

表示以[.b,.w,.l]为单位从源地址source的内存复制count个数据到 目的地址 target的内存中去;

下载的指令

指令: tftp通过网口下载文件到设备

tftp  address  filename 把文件filename下载到地址address

例:

下载

tftp 0x82000000 u-boot-hi3520d.bin 把TFTP目录下名为u-boot-hi3520d.bin的文件拷贝到SDRAM的 82000000 地址

上传

tftp 0x82000000 flash 2000000 把SDRAM的 82000000 地址开始的 0x2000000(32M)字节的拷贝到把TFTP目录下命名为flash(flash名字是否可变)

Flash操作的指令(不同的Flash不同)

指令: eraseFlash擦除命令

erase  start  end 擦除的范围为 start – end

erase  start+len 擦除的范围为 start – (start+len-1)

erase  all 擦除所有

例:

对于SPI NOR FLASH

sf erase 0 100000 擦除flash 0 - 0x100000 的数据

指令: writeFlash烧写命令

write addr off size将SDRAM的 addr 地址处的 size 字节的数据烧写到 flash 的 off 偏移地址

例:

对于SPI NOR FLASH

sf write 82000000 0 100000 把SDRAM地址 0x82000000 处 0x100000(1M字节)的数据烧写到 flash 的 0 偏移地址

指令: readFlash读取命令

read addr off size从 Flash 的 off 偏移地址处读取 size 字节的数据到SDRAM的 addr地址

例:

对于SPI NOR FLASH

sf read 82000000 0 2000000 从 flash 的 0 偏移地址出读取 0x2000000(32M)字节的数据到 SDRAM的 82000000 地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352