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


    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应用

  • 相关阅读:
    python基础练习5-9
    python安装
    python虚拟环境
    python基础语法--逻辑实现
    python基础语法
    IDE(vscode)
    pycharm使用
    复习
    环境搭建+python基础
    ASP.NET 5行代码搞二维码
  • 原文地址:https://www.cnblogs.com/pengkunfan/p/4511878.html
Copyright © 2020-2023  润新知