0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Uboot命令应用

嵌入式技术 来源:嵌入式技术 作者:嵌入式技术 2022-09-15 12:34 次阅读

Uboot命令应用

U-Boot 是一个主要用于嵌入式系统的引导加载程序,可以支持多种不同的计算机系统结构,包括PPC、ARM、AVR32、MIPS、x86、68k、Nios与MicroBlaze。这也是一套在GNU通用公共许可证之下发布的自由软件。

U-Boot本质是一个裸机程序,是一种普遍用于嵌入式系统中的开源的Bootloader,作用是用来引导操作系统,以及给开发人员提供测试调试工具。主要负责基本硬件初始化,导启动内核启动。

U-Boot命令众多,通过uboot命令可完成系统环境变量设置。U-Boot本质就是一份裸机程序,这样可以在U-Boot命令下调试一些硬件设备问题。U-Boot命令行也是可以实现自动补全功能。

1.查看当前U-Boot支持命令:?或者help

TINY4412 # ? 
?       - alias for 'help'
base    - print or set address offset
bdinfo  - print Board Info structure
boot    - boot default, i.e., run 'bootcmd'
bootd   - boot default, i.e., run 'bootcmd'
bootelf - Boot from an ELF image in memory
bootm   - boot application image from memory
bootp   - boot image via network using BOOTP/TFTP protocol
bootvx  - Boot vxWorks from an ELF image
chpart  - change active partition
cmp     - memory compare
coninfo - print console devices and information
cp      - memory copy
crc32   - checksum calculation
dcache  - enable or disable data cache
dnw     - dnw     - initialize USB device and ready to receive for Windows server (specific)

echo    - echo args to console
editenv - edit environment variable
emmc    - Open/Close eMMC boot Partition
env     - environment handling commands
exit    - exit script
ext2format- ext2format - disk format by ext2

ext2load- load binary file from a Ext2 filesystem
ext2ls  - list files in a directory (default /)
ext3format- ext3format - disk format by ext3

false   - do nothing, unsuccessfully
fastboot- fastboot- use USB Fastboot protocol

fatformat- fatformat - disk format by FAT32

fatinfo - fatinfo - print information about filesystem
fatload - fatload - load binary file from a dos filesystem

fatls   - list files in a directory (default /)
fdisk   - fdisk for sd/mmc.

go      - start application at address 'addr'
help    - print command description/usage
icache  - enable or disable instruction cache
iminfo  - print header information for application image
imxtract- extract a part of a multi-image
itest   - return true/false on integer compare
loadb   - load binary file over serial line (kermit mode)

2.打印系统环境变量:print

TINY4412 # pr
baudrate=115200
bootargs=noinitrd root=/dev/nfs nfsroot=192.168.10.106:/root/work/root_nfs ip=192.168.10.123:192.168.10.106:192.168.10.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0 lcd=S702
bootcmd=movi read kernel 0 40008000;movi read rootfs 0 41000000 400000;bootm 40008000 41000000
bootdelay=3
ethaddr=00:40:5c:26:0a:5b
gatewayip=192.168.0.1
ipaddr=192.168.0.20
netmask=255.255.255.0
serverip=192.168.0.10

Environment size: 438/16380 bytes

3.设置保存环境变量

TINY4412 # set wbyq "uboot test" #设置环境变量
TINY4412 # save #保存环境变量
Saving Environment to SMDK bootable device...
done

4.串口传输二进制文件到DDR:laody

  用法:loady [内存地址] [波特率]

TINY4412 # ? loady
loady - load binary file over serial line (ymodem mode)

Usage:
loady [ off ] [ baud ]
    - load binary file over serial line with offset 'off' and baudrate 'baud'

  [ off ] [ baud ]为选填参数。不填则有由系统选择。

  • 示例:
pYYBAGMiq16ALsWFAAEnj-8P_7I875.png#pic_center
TINY4412 # loady 40008000  #启动接收
## Ready for binary (ymodem) download to 0x40008000 at 0 bps...
CCCCCC
  ymodem  trl+C ȡ
正在传输 main.bin...
  100%     656   164 /0:00:04       1   

## Total Size      = 0x00000290 = 656 Bytes
TINY4412 # go 40008000 #调到指定地址执行
## Starting application at 0x40008000 ...
poYBAGMiq16AAoU3AAJf-dx6UV4938.png#pic_center

5.磁盘分区命令:fdisk

  • 用法:
      fdisk -p <设备号>
      fdisk -c <设备号> [<系统分区大小(MB)> <用户数据分区大小> <缓存分区大小>]
      fdisk命令一次实现4个分区
TINY4412 # ? fdisk
fdisk - fdisk for sd/mmc.


Usage:
fdisk -p    - print partition information
fdisk -c  []
        - create partition
  • 示例:
TINY4412 # fdisk -p 0 #查看设备0分区信息

partion #    size(MB)     block start #    block count    partition_Id 
   1         14764           309248        30236672          0x0C 
TINY4412 # fdisk -c 0 1024 1024 1024 #设置分区
fdisk is completed

partion #    size(MB)     block start #    block count    partition_Id 
   1         11715          6422528        23993344          0x0C 
   2          1024           131072         2097152          0x83 
   3          1024          2228224         2097152          0x83 
   4          1024          4325376         2097152          0x83    

6.安装文件系统

  当前uboot命令中支持文件系统格式有ext2、ext3、fat32。

pYYBAGMiq16AUBH_AACybA0ds3A363.png#pic_center
  • 安装文件示例
      下面以fat32为例安装文件系统。
       用法:fatformat mmc <设备号:分区号>
TINY4412 # ? fatformat
fatformat - fatformat - disk format by FAT32


Usage:
fatformat 
        - format by FAT32 on 'interface'
TINY4412 # fatformat mmc 0:1 
Start format MMC&d partition&d ...
Partition1: Start Address(0x620000), Size(0x16e1c00)
size checking ...
Under 16G
write FAT info: 32
Fat size : 0x2dc3
Erase FAT region...................................................................................................................................................
(only>
poYBAGMiq1-AYAW5AAEEcWVlOZ8691.png#pic_centerpYYBAGMiq1-APad5AAJ6K51BLh0452.png#pic_center

7.查看设备指定目录下文件:fatls

  • 用法:
      fatls <设备号:分区号> [目录路径]
TINY4412 # ? fatls
fatls - list files in a directory (default /)

Usage:
fatls  [directory]
    - list files from 'dev' on 'interface' in a 'directory'
//查看设备0的根目录下的文件
TINY4412 # fatls mmc 0 /  
Partition1: Start Address(0x4b800), Size(0x1cd6000)
            system volume information/
            images/

0 file(s), 2 dir(s)
[:part]>

7.加载设备中二进制文件到内存:fatload

  • 用法:
      fatls <设备号:分区号> <内存地址> <文件名> [加载字节数]
TINY4412 # ? fatload
fatload - fatload - load binary file from a dos filesystem


Usage:
fatload  [bytes]
    - load binary file 'filename' from 'dev' on 'interface'
      to address 'addr' from dos filesystem
//从设备0中读取mian.bin文件到40008000
TINY4412 # fatload  mmc 0 40008000 /main.bin 
Partition1: Start Address(0x4b800), Size(0x1cd6000)
reading /main.bin

656 bytes read
//跳转到40008000中执行main.bin文件
TINY4412 # go 40008000 
[:part]>

9.mmc子系统

  • mmc命令功能
  1. mmc read 从指定设备中读数据到内存
  2. mmc write 将指定内存中的数据写到设备中
  3. mmc rescan 扫描检测硬件改动
  4. mmc erase 擦除
  5. mmc list列举可用设备
TINY4412 # ? mmc 
mmc - MMC sub system

Usage:
mmc read  addr blk# cnt   #从设备中读取数据到内存中
mmc write  addr blk# cnt  #将地址中的数据写入到设备中 
mmc rescan 
mmc erase 
mmc list - lists available devices
//从设备0中第1057个扇区连续读12288个扇区到40009000地址中
TINY4412 # mmc read 0 40009000 421 3000  
MMC read: dev # 0, block # 1057, count 12288 ... 12288 blocks read: OK
//跳转到40009000中执行
TINY4412 # bootm 40009000

10.movi子系统

  • movi命令功能

movi init 初始化和显示设备信息。

movi read 从sd或mmc中读bl1.bin、bl2.bin、uboot、kernel、tzsw.bin文件到指定内存地址中。

movi write 将指定内存地址中bl1.bin、bl2.bin、uboot、kernel、tzsw.bin写入到sd或mmc中。

movi read rootfs读根文件系统到指定内存地址中。

movi write rootfs将指定内存地址中根文件系统写入到sd或mmc中。

TINY4412 # ? movi
movi - movi     - sd/mmc r/w sub system for SMDK board

Usage:
movi init - Initialize moviNAND and show card info
movi read zero {fwbl1 | u-boot} {device_number} {addr} - Read data from sd/mmc
movi write zero {fwbl1 | u-boot} {device_number} {addr} - Read data from sd/mmc
movi read {u-boot | kernel} {device_number} {addr} - Read data from sd/mmc
movi write {fwbl1 | u-boot | kernel} {device_number} {addr} - Write data to sd/mmc
movi read rootfs {device_number} {addr} [bytes(hex)] - Read rootfs data from sd/mmc by size
movi write rootfs {device_number} {addr} [bytes(hex)] - Write rootfs data to sd/mmc by size
movi read {sector#} {device_number} {bytes(hex)} {addr} - instead of this, you can use "mmc read"
movi write {sector#} {device_number} {bytes(hex)} {addr} - instead of this, you can use "mmc write"

  tiny4412开发板bl1、bl2、uboot、kernel、tzsw、rootfs在SD卡和EMMC中存储格式:

poYBAGMiq1-AbisLAACRnNui4z4039.png#pic_center

  将bl1、bl2、uboot、kernel从SD卡拷贝到EMMC中示例:

//从设备0读取bl1.bin到内存,再写入到设备1中
movi r f 0 40008000;emmc open 1;movi w z f 1 40008000;emmc close 1;  
//从设备0读取bl2.bin到内存,再写入到设备1中
movi r b 0 40008000;emmc open 1;movi w z b 1 40008000;emmc close 1;
//从设备0读取完整uboot到内存,再写入到设备1中
movi r u 0 40008000;emmc open 1;movi w z u 1 40008000;emmc close 1;
//从设备0读取kernel到内存,再写入到设备1中
movi r k 0 40008000;movi w k 1 40008000;

 注意:由于SD卡存储和EMMC存储bl1、bl2、uboot、tzsw这几个文件时总是相册一个扇区,所以从EMMC中读取bl1、bl2、uboot、tzsw这几个文件时要使用movi read zero命令来完成。写入bl1、bl2、uboot、tzsw这几个文件到EMMC时要使用movi write zero命令来完成 。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4981

    文章

    18274

    浏览量

    288361
  • 命令
    +关注

    关注

    5

    文章

    638

    浏览量

    21848
  • Uboot
    +关注

    关注

    4

    文章

    123

    浏览量

    27863
收藏 人收藏

    评论

    相关推荐

    DIY智能家居(三)UBoot命令添加方法

    讯为公司的资料包括源码部分,新接触就是比较吃力,上网找资料,QQ群中询问问题,磕磕绊绊的向前走,终于对uboot有了大概的了解,也学习了make编译命令,总之只是了解大概而已。 目标是智能家居,外设
    发表于 03-09 13:57

    Uboot命令之间有什么区别?

    我用的板子是SMDK2440,Uboot1.1.16版本就是和视频里是一样对于Uboot我有点疑惑,uboot不是有很多命令吗,bootm , nand,....这些
    发表于 07-26 05:45

    uboot命令解析字符串不对是怎么回事?

    在看uboot源文件中的main.c文件中的run_command函数时出现的疑问.有之前的函数配置可知,run_command函数中cmd所指向的内容就是nand read.jffs2
    发表于 08-07 05:45

    uboot命令是如何工作的?

    uboot命令是如何工作的?
    发表于 01-25 06:02

    如何在RK3288平台上去编译uboot命令

    如何在RK3288平台上去编译uboot命令呢?如何在RK3288平台上去编译kernel命令呢?
    发表于 02-10 06:38

    UBOOT命令总结

    分享到: 很好的UBOOT命令总结,起步时就是看的这篇东西,熟悉了以后就用?看自带帮助就行:) Printenv 打印环境变量。 Uboot》 printenv baudrate=115200
    发表于 11-08 10:24 18次下载

    AM335x如何在Uboot时增加自定义的命令控制LCD功能中文概述

    图片生成十六进制的数据数组四. 在新版本的processor SDK v3.0中,在uboot阶段如何实现增加LCD logo的显示五. 基于第四点内容,增加Uboot命令,效果是在Uboo
    发表于 04-23 17:09 10次下载
    AM335x如何在<b class='flag-5'>Uboot</b>时增加自定义的<b class='flag-5'>命令</b>控制LCD功能中文概述

    英创信息技术嵌入式Linux工控主板uboot命令简介

    在此基础上进行二次开发,从而快速完成应用产品的开发。 在本文中主要介绍其中uboot部分操作命令,即如何利用uboot命令进行启动参数的设置。EM9X60系列工控主板在
    的头像 发表于 01-15 14:01 1163次阅读
    英创信息技术嵌入式Linux工控主板<b class='flag-5'>uboot</b><b class='flag-5'>命令</b>简介

    2021-07-28-uboot-CC2640

    uboot命令开发指南:30.4 uboot命令一、uboot启动log简析需要调试性质的开发 ,ub
    发表于 11-30 09:51 11次下载
    2021-07-28-<b class='flag-5'>uboot</b>-CC2640

    嵌入式Linux开发-uboot常用命令介绍(下篇)

    这篇文章是UBOOT命令介绍的下篇,接着上篇文章介绍剩下的几个命令用法。
    的头像 发表于 08-14 08:55 1591次阅读

    嵌入式Linux开发-编写自定义uboot命令

    U-Boot的命令为用户提供了交互功能,并且已经实现了几十个常用的命令,前面两篇文章介绍了uboot自带的常用命令使用。
    的头像 发表于 08-14 08:56 839次阅读

    uboot自定义命令

    。 U-Boot命令众多,通过uboot命令可完成系统环境变量设置。U-Boot本质就是一份裸机程序,这样可以在U-Boot命令下调试一些硬件设备问题。U-Boot
    的头像 发表于 09-17 09:59 907次阅读

    Uboot命令实现大致流程图

    0x40。 (这里你应该知道了为什么要使用bootm命令,以及为什么要是有uImage格式) 在前面我们曾经分析过Uboot的启动流
    的头像 发表于 12-04 17:09 182次阅读
    <b class='flag-5'>Uboot</b><b class='flag-5'>命令</b>实现大致流程图

    Linux内核中Uboot命令处理

    命令处理 main.c中的代码实现了将一个命令的所有参数分离存放在argv数组中,参数的数目为argc,完成了读取命令行和解析命令行的工作。命令
    的头像 发表于 12-04 17:23 216次阅读

    uboot命令的执行过程是什么

    U-boot是通过执行u-boot提供的命令来加载Linux内核的,其中 命令bootm的功能 即为从memory启动Linux内核映像文件。 在讲解bootm加载内核之前,先来看看u-boot
    的头像 发表于 12-04 17:31 314次阅读