嵌入式驱动开发之uboot---uboot 中的常见命令参数参数

摘要:
lsTI8148_ EVM#lsUnknowncommand'ls‘-try'help‘显示起始地址80000000的内存内容(按字节TI8148_EVM#md.l8000000080000000:05050505050500505550505050505…………U………80000010:0505ba05050505050550505050505550505………..U.80000020:050546050505005005050550550505005050505005.05.05.F………..80000030:05050500500505050505005c5c520505……..80000040:05050505400505050505050505058205.......@........80000050:05050505050505005005051b05050505…………..80000060:05050500505055050505360505050955……..6.U...80000070:4305050050505050501050050555051c……..U.80000080:050505050505b805600505050050055.………..…..80000090:05055505050505400505050005050505.U..@...........800000a0:05050505b005005050505a80505………….800000b0:670505050050505005005055500505……g……..U800000c0:8005050505055050555052808208001121020140010194010560088......@.....V.a0000010 :05002102880006800200418450820001.!
  1. Uboot相关命令介绍
    1. bootm
    2. bootp
    3. cmp
    4. cp
    5. crc32
    6. echo
    7. erase
    8. flinfo
    9. go
    10. minfo
    11. loadb
    12. loads
    13. mw
    14. 14mw 用指定的数据填充内存
    15. 15md 查看内存
    16. 16mm 内存修改地址自动递增
    17. nfs
    18. nm
    19. 19nm 修改内存值 指定地址
    20. printenv
    21. printenv 查看环境变量可以简写为pri
    22. protect
    23. rarpboot
    24. run
    25. saveenv 保存环境变量简写sa
    26. setenv
    27. setenv 添加修改删除环境变量
    28. sleep
    29. tftpboot
    30. 28bdinfo 查看开发板信息
    31. 29cp 内存的拷贝包括内存与Nor Flash间的数据拷贝
    32. 30protect 扇区写保护对Flash 写保护
    33. 31erase 擦除Flash的命令
    34. 32从Nand flash中读数据
    35. 对Nand flash擦除数据
    36. 向Nand flash中写数据
    37. bootcmd 保留的环境变量也是一种脚本
    38. 得到所有命令列表
    39. help  help usb 列出USB功能的使用说明
    40. ping  注只能开发板PING别的机器
    41. usb start  起动usb 功能 usb info  列出设备 usb scan  扫描usb storageu 盘设备
    42. kgo  起动没有压缩的linux内核
    43. kgo 32000000
    44. fatls 列出DOS FAT文件系统
    45. fatls usb 0列出第一块U盘中的文件
    46. fatload 读入FAT中的一个文件
    47. fatload usb 00 32000000 aatxt 把USB中的aatxt 读到物理内存0x32000000处
    48. nfs

应用背景:

(1)按字节修改内存

TI8148_EVM#mm.b 80000000

8000022f: 2c ?
80000230: 14 ?
80000231: 34 ? TI8148_EVM#
80000231: 34 ?
80000232: 36 ? ls
TI8148_EVM#ls
Unknown command 'ls' - try 'help'

(2)按字节显示开始地址80000000的内存内容
TI8148_EVM#md.l 80000000 
80000000: 05050505 05050505 05055505 05050505 .........U......
80000010: 0505ba05 05050505 05050505 05550505 ..............U.
80000020: 05054605 05050505 05050505 05050505 .F..............
80000030: 05050505 05050505 05050505 05c20505 ................
80000040: 05050505 40050505 05050505 05058205 .......@........
80000050: 05050505 05050505 0505051b 05050505 ................
80000060: 05050505 05050505 05053605 05050955 .........6..U...
80000070: 43050505 05050505 05050105 0555051c ...C..........U.
80000080: 05050505 0505b805 60050505 05050505 ...........`....
80000090: 05055505 05050540 05050500 05050505 .U..@...........
800000a0: 05050505 05b00505 05050505 05a80505 ................
800000b0: 67050505 05050505 05050505 55050505 ...g...........U
800000c0: 80050505 05050505 55050505 05550528 ...........U(.U.
800000d0: 0b050531 05050505 05050505 05050205 1...............
800000e0: 05050505 05050505 05050555 0505054b ........U...K...
800000f0: 05050505 05050505 05050505 05050505 ................
TI8148_EVM#md.l a0000000
a0000000: 08208001 12102014 00101940 10560088 .. .. ..@.....V.
a0000010: 05002102 88000680 02004184 50820001 .!.......A.....P
a0000020: 0a000804 04040010 00400004 0104c010 ..........@.....
a0000030: 80000002 02210088 00084185 00000000 ......!..A......
a0000040: 00012400 80000180 88000008 80000904 .$..............
a0000050: 40000180 00040400 40000100 00000000 ...@.......@....
a0000060: 08800080 00400820 04888400 4000033c .... .@.....<..@
a0000070: 00881840 02010082 21008000 00004705 @..........!.G..
a0000080: 28018008 42020882 0000a420 00040200 ...(...B .......
a0000090: 88aa0048 00020001 010061c6 04101000 H........a......
a00000a0: 58010588 20040044 52044000 04180162 ...XD.. .@.Rb...
a00000b0: 01622000 4449b208 85040004 01000af8 . b...ID........
a00000c0: 00010000 c0200023 08040008 01400080 ....#. .......@.
a00000d0: 08001060 804b0300 03100261 10083000 `.....K.a....0..
a00000e0: 10124091 08200420 00040180 00900031 .@.. . .....1...
a00000f0: 0842c02d 04001080 00000800 80809080 -.B.............
TI8148_EVM#mw.b 80000000
mw - memory write (fill)

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

(3)修改内存地址8000000 的内容
TI8148_EVM#mw.b 80000000 6
TI8148_EVM#md.l 80000000
80000000: 05050506 05050505 05055505 05050505 .........U......
80000010: 0505ba05 05050505 05050505 05550505 ..............U.
80000020: 05054605 05050505 05050505 05050505 .F..............
80000030: 05050505 05050505 05050505 05c20505 ................
80000040: 05050505 40050505 05050505 05058205 .......@........
80000050: 05050505 05050505 0505051b 05050505 ................
80000060: 05050505 05050505 05053605 05050955 .........6..U...
80000070: 43050505 05050505 05050105 0555051c ...C..........U.
80000080: 05050505 0505b805 60050505 05050505 ...........`....
80000090: 05055505 05050540 05050500 05050505 .U..@...........
800000a0: 05050505 05b00505 05050505 05a80505 ................
800000b0: 67050505 05050505 05050505 55050505 ...g...........U
800000c0: 80050505 05050505 55050505 05550528 ...........U(.U.
800000d0: 0b050531 05050505 05050505 05050205 1...............
800000e0: 05050505 05050505 05050555 0505054b ........U...K...
800000f0: 05050505 05050505 05050505 05050505 ................
TI8148_EVM#mw.b 80000004 7
TI8148_EVM#md.l 80000000
80000000: 05050506 05050507 05055505 05050505 .........U......
80000010: 0505ba05 05050505 05050505 05550505 ..............U.
80000020: 05054605 05050505 05050505 05050505 .F..............
80000030: 05050505 05050505 05050505 05c20505 ................
80000040: 05050505 40050505 05050505 05058205 .......@........
80000050: 05050505 05050505 0505051b 05050505 ................
80000060: 05050505 05050505 05053605 05050955 .........6..U...
80000070: 43050505 05050505 05050105 0555051c ...C..........U.
80000080: 05050505 0505b805 60050505 05050505 ...........`....
80000090: 05055505 05050540 05050500 05050505 .U..@...........
800000a0: 05050505 05b00505 05050505 05a80505 ................
800000b0: 67050505 05050505 05050505 55050505 ...g...........U
800000c0: 80050505 05050505 55050505 05550528 ...........U(.U.
800000d0: 0b050531 05050505 05050505 05050205 1...............
800000e0: 05050505 05050505 05050555 0505054b ........U...K...
800000f0: 05050505 05050505 05050505 05050505 ................
TI8148_EVM#

Uboot相关命令介绍

1、bootm

bootm [addr [arg ...]]

    - boot application image stored in memory

          passing arguments 'arg ...'; when booting a Linux kernel,

          'arg' can be the address of an initrd image

bootm命令可以引导启动存储在内存中的程序映像。这些内存包括RAM和可以永久保存的Flash。

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

第2个参数对于引导Linux内核有用,通常作为U-Boot格式的RAMDISK映像存储地址;也可以是传递给Linux内核的参数(缺省情况下传递bootargs环境变量给内核)。

Bootm 执行内存中的二进制代码
要求二进制代码为制定格式的。通常为mkimage处理过的二进制文件。起动UBOOT TOOLS制作的压缩LINUX内核, bootm 3200000
Bootp 通过网络启动,需要提前设置好硬件地址。

2、bootp

bootp [loadAddress] [bootfilename]

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

第1个参数是下载文件存放的内存地址。

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

3、cmp

cmp [.b, .w, .l] addr1 addr2 count

     - compare memory

cmp命令可以比较2块内存中的内容。.b以字节为单位;.w以字为单位;.l以长字为单位。注意:cmp.b中间不能保留空格,需要连续敲入命令。

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

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

第3个参数count是要比较的数目,单位按照字节、字或者长字。

4、cp

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

       - copy memory

cp命令可以在内存中复制数据块,包括对Flash的读写操作。

第1个参数source是要复制的数据块起始地址。

第2个参数target是数据块要复制到的地址。这个地址如果在Flash中,那么会直接调用写Flash的函数操作。所以U-Boot写Flash就使用这个命令,当然需要先把对应Flash区域擦干净。

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

5、crc32

crc32 address count [addr]

     - compute CRC32 checksum [save at addr]  

crc32命令可以计算存储数据的校验和。

第1个参数address是需要校验的数据起始地址。

第2个参数count是要校验的数据字节数。

第3个参数addr用来指定保存结果的地址。

6、echo

echo [args..]

      - echo args to console; c suppresses newline

echo命令回显参数。

7、erase

erase start end

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

erase N:SF[-SL]

      - erase sectors SF-SL in FLASH bank # N

erase bank N

      - erase FLASH bank # N

erase all

      - erase all FLASH banks

erase命令可以擦Flash。

参数必须指定Flash擦除的范围。

按照起始地址和结束地址,start必须是擦除块的起始地址;end必须是擦除末尾块的结束地址。这种方式最常用。举例说明:擦除0x20000 – 0x3ffff区域命令为erase 20000 3ffff。

按照组和扇区,N表示Flash的组号,SF表示擦除起始扇区号,SL表示擦除结束扇区号。另外,还可以擦除整个组,擦除组号为N的整个Flash组。擦除全部Flash只要给出一个all的参数即可。

8、flinfo

flinfo

       - print information for all FLASH memory banks

flinfo N

       - print information for FLASH memory bank # N

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

9、go

go addr [arg ...]

      - start application at address 'addr'

        passing 'arg' as arguments

go命令可以执行应用程序。

第1个参数是要执行程序的入口地址。

第2个可选参数是传递给程序的参数,可以不用。

Go 执行内存中的二进制代码,一个简单的跳转到指定地址

10、minfo

iminfo addr [addr ...]

      - print header information for application image starting at

         address 'addr' in memory; this includes verification of the

         image contents (magic number, header and payload checksums)

iminfo可以打印程序映像的开头信息,包含了映像内容的校验(序列号、头和校验和)。

第1个参数指定映像的起始地址。

可选的参数是指定更多的映像地址。

11、loadb

loadb [ off ] [ baud ]

     - load binary file over serial line with offset 'off' and baudrate 'baud'


loadb命令可以通过串口线下载二进制格式文件。

12、loads

loads [ off ]

    - load S-Record file over serial line with offset 'off'

loads命令可以通过串口线下载S-Record格式文件。

13、mw

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

     - write memory


mw命令可以按照字节、字、长字写内存,.b .w .l的用法与cp命令相同。

第1个参数address是要写的内存地址。

第2个参数value是要写的值。

第3个可选参数count是要写单位值的数目。

14mw 用指定的数据填充内存

参数 mw.b [address value ] //按字节显示
mw.w [address value ] //按字显示 
mw.l [address value ] //按长字显示 

15md 查看内存

参数 md.b [address] //按字节显示 
md.w [address] //按字显示 
md.l [address] //按长字显示



16mm 内存修改,地址自动递增

参数 mm.b [address] //按字节显示 
mm.w [address] //按字显示 
mm.l [address] //按长字显示

17、nfs

nfs [loadAddress] [host ip addr:bootfilename]

nfs命令可以使用NFS网络协议通过网络启动映像。

18、nm

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

     - memory modify, read and keep address

nm命令可以修改内存,可以按照字节、字、长字操作。

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

19nm 修改内存值 (指定地址)

参数 nm.b [address] //按字节显示 
nm.w [address] //按字显示 
nm.l [address] //按长字显示

20、printenv

printenv

      - print values of all environment variables

printenv name ...

      - print value of environment variable 'name'

printenv命令打印环境变量。

可以打印全部环境变量,也可以只打印参数中列出的环境变量。

printenv 查看环境变量,可以简写为pri

21、protect

protect on  start end

      - protect Flash from addr 'start' to addr 'end'

protect on  N:SF[-SL]

      - protect sectors SF-SL in Flash bank # N

protect on  bank N

      - protect Flash bank # N

protect on  all

      - protect all Flash banks

protect off start end

      - make Flash from addr 'start' to addr 'end' writable

protect off N:SF[-SL]

     - make sectors SF-SL writable in Flash bank # N

protect off bank N

     - make Flash bank # N writable

protect off all

     - make all Flash banks writable

protect命令是对Flash写保护的操作,可以使能和解除写保护。

第1个参数on代表使能写保护;off代表解除写保护。

第2、3参数是指定Flash写保护操作范围,跟擦除的方式相同。

22、rarpboot

rarpboot [loadAddress] [bootfilename]

rarboot命令可以使用TFTP协议通过网络启动映像。也就是把指定的文件下载到指定地址,然后执行。

第1个参数是映像文件下载到的内存地址。

第2个参数是要下载执行的映像文件。

23、run

run var [...]

      - run the commands in the environment variable(s) 'var'

run命令可以执行环境变量中的命令,后面参数可以跟几个环境变量名。

run 执行设置好的脚本
Uboot> setenv flashit tftp 20000000 mycode.bin/; erase 10020000 1002FFFF/;cp.b 20000000 10020000 8000
Uboot> saveenv
Uboot> run flashit

24 saveenv 保存环境变量,简写sa

25、setenv

setenv name value ...

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

setenv name

      - delete environment variable 'name'

setenv命令可以设置环境变量。

第1个参数是环境变量的名称。

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

setenv 添加,修改,删除环境变量

例 setenv aaa 123 //添加环境变量aaa其值为123
setenv aaa 789 //在上行变量基础上把aaa的值修改(重设)为789

setenv aaa //把aaa变量删除

可以设置的环境变量:

环 境 变 量解 释 说 明
bootdelay定义执行自动启动的等候秒数
baudrate定义串口控制台的波特率
netmask定义以太网接口的掩码
ethaddr定义以太网接口的MAC地址
bootfile定义缺省的下载文件
bootargs定义传递给Linux内核的命令行参数
bootcmd定义自动启动时执行的几条命令
serverip定义tftp服务器端的IP地址
ipaddr定义本地的IP地址
stdin定义标准输入设备,一般是串口
stdout定义标准输出设备,一般是串口
stderr定义标准出错信息输出设备,一般是串口

26、sleep

sleep N

      - delay execution for N seconds (N is _decimal_ !!!)

sleep命令可以延迟N秒钟执行,N为十进制数。

27、tftpboot

tftpboot [loadAddress] [bootfilename]

tftpboot命令可以使用TFTP协议通过网络下载文件。按照二进制文件格式下载。另外使用这个命令,必须配置好相关的环境变量。例如serverip和ipaddr。

第1个参数loadAddress是下载到的内存地址。

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

这些U-Boot命令为嵌入式系统提供了丰富的开发和调试功能。在Linux内核启动和调试过程中,都可以用到U-Boot的命令。但是一般情况下,不需要使用全部命令。比如已经支持以太网接口,可以通过tftpboot命令来下载文件,那么还有必要使用串口下载的loadb吗?反过来,如果开发板需要特殊的调试功能,也可以添加新的命令。

28bdinfo 查看开发板信息

查看和修改内存值的指令(可以查看和修改SDRAM和寄存器值)
[.b, .w, .l]代表了查看和修改形式:bit、word、long


29cp 内存的拷贝(包括内存与Nor Flash间的数据拷贝)

参数 cp.b [source target count] //按字节显示
cp.w [source target count] //按字显示 
cp.l [source target count] //按长字显示

例 cp source dest len

30protect 扇区写保护(对Flash 写保护)


protect on all 保护全开
protect off all 保护解除

protect on start end //start end是照起始地址和结束地址定义范围,
protect off start end //start是保护块的起始地址;
//end 是保护末尾块的结束地址。
例如:保护Sector 2和Sector 3区域命令为protect 20000 3ffff 

protect on start +size //start +size是照起始地址和操作字节数定义范围
protect off start +size //start是保护块的起始地址;
//size 是保护的字节数。
例如:保护Sector 2和Sector 3区域命令为protect 20000 +20000

protect on N:SF[-SL] 
protect off N:SF[-SL] 
//N:SF[-SL]是按照组和扇区,N 表示Flash 的Block号,
//SF 表示保护起始Sector号,SL 表示保护结束Sector号。
例如:保护Block1 的Sector 2和Sector 3区域命令为protect 1:2-3

protect on bank N //bank N是保护整个Block,
protect off bank N //保护Block号为N 的整个Flash

31erase 擦除Flash的命令

erase all 擦除全部
erase start end //start end是照起始地址和结束地址定义范围,
//start是擦除块的起始地址;
//end 是擦除末尾块的结束地址。
例如:擦除Sector 2和Sector 3区域命令为erase 20000 3ffff 

erase start +size //start +size是照起始地址和操作字节数定义范围
//start是擦除块的起始地址;
//size 是擦除的字节数。
例如:擦除Sector 2和Sector 3区域命令为erase 20000 +20000

erase N:SF[-SL] 
//N:SF[-SL]是按照组和扇区,N 表示Flash 的Block号,
//SF 表示擦除起始Sector号,SL 表示擦除结束Sector号。
例如:保护Block1 的Sector 2和Sector 3区域命令为erase 1:2-3

erase bank N //bank N是擦除整个Block,
//擦除Block号为N 的整个Flash


32从Nand flash中读数据

Nand read dest(sdram) src(Flash) size

对Nand flash擦除数据

Nand erase start size

向Nand flash中写数据

Nand write src(sdram) dest size

bootcmd 保留的环境变量,也是一种脚本

如果定义了该变量,在autoboot模式下,将会执行该脚本的内容。

? 得到所有命令列表

help  help usb, 列出USB功能的使用说明

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

usb start:  起动usb 功能
usb info:  列出设备
usb scan:  扫描usb storage(u 盘)设备

kgo  起动没有压缩的linux内核

kgo 32000000

fatls 列出DOS FAT文件系统

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

fatload 读入FAT中的一个文件

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

nfs

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

http://blog.chinaunix.net/uid-13760159-id-2873259.html

http://blog.csdn.net/cgzhello1/article/details/7850685

http://www.cnblogs.com/squirrel_sc/p/4511096.html 神经网络分层还是不分层

http://www.cnblogs.com/huang0925/p/4505455.html github应用

免责声明:文章转载自《嵌入式驱动开发之uboot---uboot 中的常见命令参数参数》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇hsql整理Jenkins 安装 【版本:jenkinsci/blueocean】下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MSSQL无落地文件执行Rootkit-WarSQLKit

0x00 前言 在本文中,我们将处理一个很长时间以来一直待解决的问题:MSSQL Rootkit。到目前为止,针对MS-SQL所描述的大多数命令执行都是调用“xp_cmdshell”和“sp_OACreate”存储过程的。因此,如果在没有xp_cmdshell和sp_OACreate存储过程的MSSQL服务器上拥有“sa”帐户或任何具有“sysadmin”...

判断栈和堆的生长方向

如何判断栈的增长方向? 对于一个用惯了i386系列机器的人来说,这似乎是一个无聊的问题,因为栈就是从高地址向低地址增长。不过,显然这不是这个问题的目的,既然把这个问题拿出来,问的就不只是i386系列的机器,跨硬件平台是这个问题的首先要考虑到的因素。 在一个物质极大丰富的年代,除非无路可退,否则我们坚决不会使用汇编去解决问题,而对于这种有系统编程味道的问题,...

FTP 命令

一、FTP概述 FTP是文件传输协议(File Transfer Protocal)的简写,主要完成与远程计算机的文件传输。 FTP采用客户/服务器模式,客户机与服务器之间利用TCP建立连接,客户可以从服务器上下载文件,也可以把本地文件上传至服务器。 FTP服务器有匿名的和授权的两种。匿名的FTP服务器向公众开放,用户可以用“ftp”或“anonymo...

【SQL注入】之SQLMAP工具的使用

(本文仅为平时学习记录,若有错误请大佬指出,如果本文能帮到你那我也是很开心啦) 一、介绍 1.SQL注入工具:明小子、啊D、罗卜头、穿山甲、SQLMAP等等 2.SQLMAP:使用python开发,开源自动化注入利用工具,支持12种数据库 ,在/plugins/dbms中可以看到支持的数据库种类,在所有注入利用工具中它是最好用的!!! 3.支持的注入类型:...

MySQL下载安装、基本配置、问题处理

一 mysql介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 mysql是什么???...

redis list结构

一个功能肯定有其应用场景: PUSH和POP操作,其实是队列的基本操作。Redis的list就是一个极其强大的队列系统。我们在哪些地方会用到队列呢?下面,我们说两个例子: a,评论系统 逛过微博的筒子们应该都对评论系统有了解。我们在看完一条微博之后,常常会评论一番,或者看看其他人的吐槽。每条评论的记录都是按照时间顺序排序的。我们读的时候也是这个顺序。这时,...