飞腾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,可以得到命令的具体说明。
2.环境变量命令
printenv - print environment variables //打印当前的环境变量 setenv - set environment variables //修改环境变量(后需接变量名和变量) saveenv - save environment variables to persistent storage //保存修改以后的环境变量
举例:查看当前环境变量后,修改 server ip 地址,然后在保存
1)查看当前环境变量
2)修改地址和保存
修改就是重置,就是用setenv给变量重新赋值,新值需要用英文单引号’引起来。
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地址的。
如图:
当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 会有所有命令说明
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 数据库或其他参考资料将其转换为对应的字符串,以便更容易理解。
3)查看外设信息
"pci h"命令用于在PCI设备上执行总线控制器的操作。它可以用于扫描PCI总线,探测和配置PCI设备,设置中断路由等。这个命令可以用于操作和管理PCI总线上的设备。
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 控制器
2)usb reset 为复位 usb 控制器
3)usb info 为显示扫描到 usb 外设
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 盘
2)显示 SATA 控制下有几个 device 设备,示例硬件中连接一个 SATA 盘
"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 文件。
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命令请查看文章: