飞腾uboot命令简单介绍

简介: 飞腾uboot命令简单介绍

科技背景_副本 公众号_副本.png

飞腾uboot和开源uboot并无大差异,故飞腾uboot固件命令可以直接从网上搜索开源uboot相关命令。这里为了便于大家调试,将一些可能用到的命令说明一下。在 Uboot 命令行下,输入 help 将打印所有的可用命令,复杂命令操作,通过命令 help 的方式获取具体说明。

1.help命令

输入 help,可以得到命令简易说明。

FT2004C#help
?         - alias for 'help'
base      - print or set address offset
bdinfo    - print Board Info structure
blkcache  - block cache diagnostics and control
boot      - boot default, i.e., run 'bootcmd'
bootd     - boot default, i.e., run 'bootcmd'
bootefi   - Boots an EFI payload from memory
bootelf   - Boot from an ELF image in memory
bootelf_ft- Boot from an ELF image in memory
booti     - boot Linux kernel 'Image' format from memory
bootm     - boot application image from memory
bootp     - boot image via network using BOOTP/TFTP protocol
bootvx    - Boot vxWorks from an ELF image
bootvx32  - Boot vxWorks from an 32bit ELF image/bin
bootz     - boot Linux zImage image from memory
cmp       - memory compare
coninfo   - print console devices and information
cp        - memory copy
crc32     - checksum calculation
dcache    - enable or disable data cache
dhcp      - boot image via network using DHCP/TFTP protocol
e1000     - Intel e1000 controller management
echo      - echo args to console
editenv   - edit environment variable
env       - environment handling commands
erase     - erase FLASH memory
exit      - exit script
ext2load  - load binary file from a Ext2 filesystem
ext2ls    - list files in a directory (default /)
ext4load  - load binary file from a Ext4 filesystem
ext4ls    - list files in a directory (default /)
ext4size  - determine a file's size
false     - do nothing, unsuccessfully
fatinfo   - print information about filesystem
fatload   - load binary file from a dos filesystem
fatls     - list files in a directory (default /)
fatmkdir  - create a directory
fatrm     - delete a file
fatsize   - determine a file's size
fatwrite  - write file into a dos filesystem
fdt       - flattened device tree utility commands
flashe    - erase QSPI FLASH  
flashw    - qspi flash write
flid      - print FLASH ID
flinfo    - print FLASH memory information
fstype    - Look up a filesystem type
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
ln        - Create a symbolic link
load      - load binary file from a filesystem
loadb     - load binary file over serial line (kermit mode)
loads     - load S-Record file over serial line
loadx     - load binary file over serial line (xmodem mode)
loady     - load binary file over serial line (ymodem mode)
loop      - infinite loop on address range
ls        - list files in a directory (default /)
md        - memory display
mdio      - MDIO utility commands
mii       - MII utility commands
mm        - memory modify (auto-incrementing address)
mtest     - simple RAM read/write test
mw        - memory write (fill)
nfs       - boot image via network using NFS protocol
nm        - memory modify (constant address)
nvme      - NVM Express sub-system
part      - disk partition related commands
pci       - list and access PCI Configuration Space
pdmar     - pci_dma Read Test
pdmaw     - pci_dma Write Test
ping      - send ICMP ECHO_REQUEST to network host
poweroff  - Perform POWEROFF of the device
printenv  - print environment variables
protect   - enable or disable FLASH write protection
pxe       - commands to get and boot from pxe files
reset     - Perform RESET of the CPU
run       - run commands in an environment variable
save      - save file to a filesystem
saveenv   - save environment variables to persistent storage
scsi      - SCSI sub-system
scsiboot  - boot from SCSI device
se        - se md|mw|update [address] [data]
setenv    - set environment variables
setexpr   - set environment variable as the result of eval expression
showvar   - print local hushshell variables
size      - determine a file's size
sleep     - delay execution for some time
source    - run script from memory
sysboot   - command to get and boot from syslinux files
test      - minimal test like /bin/sh
tftpboot  - boot image via network using TFTP protocol
tftpput   - TFTP put command, for uploading files to a server
true      - do nothing, successfully
usb       - USB sub-system
usbboot   - boot from USB device
version   - print monitor, compiler and linker version

输入:命令 help,可以得到命令的具体说明。

        正面.png

2.环境变量命令

printenv  - print environment variables       //打印当前的环境变量
setenv  - set environment variables       //修改环境变量(后需接变量名和变量)
saveenv  - save environment variables to persistent storage //保存修改以后的环境变量

举例:查看当前环境变量后,修改 server ip 地址,然后在保存

1)查看当前环境变量

正面.png

2)修改地址和保存

修改就是重置,就是用setenv给变量重新赋值,新值需要用英文单引号引起来。

640.png

 3.开关机等操作命令

reset //重启
poweroff //关机

4.加载命令             

bootm  - boot application image from memory
booti  - boot Linux kernel 'Image' format from memory

启动 Image 文件使用 booti;

启动 uImage 文件,使用 bootm

       

booti 0x90100000 -:- 0x90000000 解释:引导 OS 的命令,booti参数一加载的内核镜像文件,这里是从0x90100000 地址加载;参数二是文件系统,这里写成“-:-”表示不用加载,表示使用默认的文件系统;参数三是设备树文件,这里是 0x90000000地址加载。        

那这个内核镜像、设备树是什么时候放到0x90100000 0x90000000地址呢?

是靠加载命令进去的。这个加载命令是后面要说的,它根据不同的存储介质是不一样的。

当前示例环境变量是从sata盘读取,加载到内存0x90100000 0x90000000地址的。

如图:

正面.png

当uboot去启动系统的时候,最先执行的环境变量为bootcmd。

通过上面可以看出,bootcmd是要去执行distro_bootcmd。distro_bootcmd又去执行boot_ft。

boot_ft调用了load_fdt_ft、load_kernel_ft。

load_fdt_ft用ext4load命令从sata盘(scsi就是sata接口)将dtb设备树加载到了0x90000000内存地址。

load_kernel_ft用ext4load命令从sata盘uImage内核镜像加载到了0x90100000内存地址。

之后再去按上面说的bootm,booti就可以了。

提示一句,加载的设备树是硬盘里存的,名字是啥就填啥,不是都叫图里的名字。

               

5.PCI(PCIe)相关命令

输入 pci help 会有所有命令说明

640.png

       

1)查看 PCIE 控制器情况以及扫到外设情况,例如 pci 3中3代表BUS号,

2)查看外设配置空间

"pci d"命令用于显示PCI设备的配置空间信息。"03.00.00" 是一个由三个部分组成的地址,分别表示 PCI 设备的总线号(bus number)、设备号(device number)和功能号(function number)。

"pci d 03.00.00" 的意思是在第三条总线上的第一个插槽中的第一个功能的 PCI 设备的配置空间信息。

执行该命令后,u-boot 将显示与该设备相关的详细信息,例如厂商ID、设备ID、设备类别等。通常情况下,这些信息以十六进制格式显示,以便更精确地表示数据。对于一些常见的字段,如厂商ID和设备ID,可以使用 PCI 数据库或其他参考资料将其转换为对应的字符串,以便更容易理解。

640.png

3)查看外设信息

"pci h"命令用于在PCI设备上执行总线控制器的操作。它可以用于扫描PCI总线,探测和配置PCI设备,设置中断路由等。这个命令可以用于操作和管理PCI总线上的设备。

正面.png

       

       

6.USB命令

FT2004C#usb
usb - USB sub-system
Usage:
usb start - start (scan) USB controller
usb reset - reset (rescan) USB controller
usb stop [f] - stop USB [f]=force stop
usb tree - show USB device tree
usb info [dev] - show available USB devices
usb test [dev] [port] [mode] - set USB 2.0 test mode
    (specify port 0 to indicate the device's upstream port)
    Available modes: J, K, S[E0_NAK], P[acket], F[orce_Enable]
usb storage - show details of USB storage devices
usb dev [dev] - show or set current USB storage device
usb part [dev] - print partition table of one or all USB storage    devices
usb read addr blk# cnt - read `cnt' blocks starting at block `blk#'
    to memory address `addr'
usb write addr blk# cnt - write `cnt' blocks starting at block `blk#'
from memory address `addr'

其中常用命令如下:      

1)usb start 为加载 usb 驱动,寻找 usb 控制器

正面.png

2)usb reset 为复位 usb 控制器

640.png

3)usb info 为显示扫描到 usb 外设

正面.png

       

7.scsi(sata)命令

FT2004C#scsi
scsi - SCSI sub-system
Usage:
scsi reset - reset SCSI controller
scsi info  - show available SCSI devices
scsi scan  - (re-)scan SCSI bus
scsi device [dev] - show or set current device
scsi part [dev] - print partition table of one or all SCSI devices
scsi read addr blk# cnt - read `cnt' blocks starting at block `blk#'
     to memory address `addr'
scsi write addr blk# cnt - write `cnt' blocks starting at block
     `blk#' from memory address `addr'

        其中常用如下:

1)查询 SATA 控制下有几个 device 设备,示例硬件中连接一个 SATA 盘

正面.png

2)显示 SATA 控制下有几个 device 设备,示例硬件中连接一个 SATA 盘

640.png

正面.png

"scsi device" 和 "scsi info" 是两个不同的命令,它们的作用和显示的信息有一些差别:

"scsi device" 命令用于设置当前的 SCSI 设备。它接受一个参数,该参数表示要选择的 SCSI 设备的索引号。索引号从 0 开始,代表第一个 SCSI 设备。该命令可以用于在多个 SCSI 设备之间进行切换,以便执行针对特定设备的操作。一旦设置了当前设备,后续的 SCSI 命令将应用于该设备。

"scsi info" 命令用于显示 SCSI 控制器和已连接的 SCSI 设备的信息。它会列出每个 SCSI 设备的详细信息,如设备号、设备类型、厂商等。此命令不需要参数,并且会显示当前系统中所有可用的 SCSI 设备的信息。

总的来说"scsi device" 命令用于设置当前的 SCSI 设备,而 "scsi info" 命令用于显示系统中所有 SCSI 设备的详细信息。

       

8.操作SATA 盘中文件的命令

ext4load  - load binary file from a Ext4 filesystem
ext4ls  - list files in a directory (default /)
fatinfo  - print information about filesystem
fatload  - load binary file from a dos filesystem
fatls  - list files in a directory (default /)

用于启动系统,具体可见环境变量中的设置

示例如下:

第一步,首先查看有几个 SATA 盘,device0 为 FAT 格式容量 250G,device1 为

ext4 格式容量为 1G;

第二步,查看 device0 中的文件;

第三步,加载 device0 中设备树;

第四步,查看 device1 中的文件;

第五步,加载 device1 中的 image 文件。

正面.png

       

       

9.nvme 命令

FT2004C#nvme
nvme - NVM Express sub-system         
Usage:
nvme scan - scan NVMe devices
nvme detail - show details of current NVMe device
nvme info - show all available NVMe devices
nvme device [dev] - show or set current NVMe device
nvme part [dev] - print partition table of one or all NVMe devices
nvme read addr blk# cnt - read `cnt' blocks starting at block
     `blk#' to memory address `addr'
nvme write addr blk# cnt - write `cnt' blocks starting at block
     `blk#' from memory address `addr'

             

10.mii命令

mii命令请查看文章:

飞腾CPU FT-2000/4 uboot下PHY调试记录

相关文章
|
Ubuntu Linux
荔枝派Zero(全志V3S)烧录Uboot、Kernel及rootfs到SD卡并运行在板子上
通过前面 Uboot编译及配置 我们获得了 u-boot-sunxi-with-spl.bin 通过前面 Kernel编译 我们获得了zImage镜像文件及sun8i-v3s-licheepi-zero-dock.dtb设备树文件
622 1
|
6月前
龙芯ejtag驱动安装
龙芯ejtag驱动安装
56 1
|
6月前
|
Linux 编译器 Windows
【Linux】新唐NUC977系统编译及烧写流程
【Linux】新唐NUC977系统编译及烧写流程
105 0
|
6月前
|
Linux 编译器 Go
Linux内核学习(四):Bootloader的特种兵-Uboot(二)
Linux内核学习(四):Bootloader的特种兵-Uboot(二)
637 0
|
6月前
|
存储 运维 Linux
Linux内核学习(三):Bootloader的特种兵-Uboot(一)
Linux内核学习(三):Bootloader的特种兵-Uboot(一)
82 0
|
Ubuntu Linux Shell
飞腾FT-2000/4开发板上移植Ubuntu18.04.5且更换飞腾内核4.19.8教程(1)
飞腾FT-2000/4开发板上移植Ubuntu18.04.5且更换飞腾内核4.19.8教程(1)
1421 0
飞腾FT-2000/4开发板上移植Ubuntu18.04.5且更换飞腾内核4.19.8教程(1)
|
Ubuntu Linux Shell
飞腾FT-2000/4开发板上移植Ubuntu18.04.5且更换飞腾内核4.19.8教程(2)
飞腾FT-2000/4开发板上移植Ubuntu18.04.5且更换飞腾内核4.19.8教程(2)
909 0
飞腾FT-2000/4开发板上移植Ubuntu18.04.5且更换飞腾内核4.19.8教程(2)
|
Ubuntu Linux
嵌入式Linux开发: 龙芯2K1000使用EJTAG烧写POPM
嵌入式Linux开发: 龙芯2K1000使用EJTAG烧写POPM
610 0
嵌入式Linux开发: 龙芯2K1000使用EJTAG烧写POPM
|
域名解析 Ubuntu 网络协议
移植BusyBox根文件系统到野火开发板
移植BusyBox根文件系统到野火开发板
184 0
linux4.1.15内核移植到野火PRO开发板开发板
linux4.1.15内核移植到野火PRO开发板开发板
223 0