飞腾uboot命令简单介绍

文摘   科技   2023-05-05 18:30   江苏  


以往飞腾相关文章:

==欢迎加入飞腾爱好者交流群==

【视频版】基于飞腾芯片的设计与调试入门指导

飞腾平台芯片测试固件(SFW)和开机启动log

飞腾CPU BIOS固件生成教程

飞腾FT-2000/4开发板上移植Ubuntu18.04.5且更换飞腾内核4.19.8教程

[飞腾]Trace32使用概述

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

飞腾X100 LPDDR颗粒线序配置辅助工具

飞腾平台SPI接口验证简介



          

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

1.help命令
输入 help,可以得到命令简易说明。
FT2004C#help?         - alias for 'help'base      - print or set address offsetbdinfo    - print Board Info structureblkcache  - block cache diagnostics and controlboot      - boot default, i.e., run 'bootcmd'bootd     - boot default, i.e., run 'bootcmd'bootefi   - Boots an EFI payload from memorybootelf   - Boot from an ELF image in memorybootelf_ft- Boot from an ELF image in memorybooti     - boot Linux kernel 'Image' format from memorybootm     - boot application image from memorybootp     - boot image via network using BOOTP/TFTP protocolbootvx    - Boot vxWorks from an ELF imagebootvx32  - Boot vxWorks from an 32bit ELF image/binbootz     - boot Linux zImage image from memorycmp       - memory compareconinfo   - print console devices and informationcp        - memory copycrc32     - checksum calculationdcache    - enable or disable data cachedhcp      - boot image via network using DHCP/TFTP protocole1000     - Intel e1000 controller managementecho      - echo args to consoleeditenv   - edit environment variableenv       - environment handling commandserase     - erase FLASH memoryexit      - exit scriptext2load  - load binary file from a Ext2 filesystemext2ls    - list files in a directory (default /)ext4load  - load binary file from a Ext4 filesystemext4ls    - list files in a directory (default /)ext4size  - determine a file's sizefalse     - do nothing, unsuccessfullyfatinfo   - print information about filesystemfatload   - load binary file from a dos filesystemfatls     - list files in a directory (default /)fatmkdir  - create a directoryfatrm     - delete a filefatsize   - determine a file's sizefatwrite  - write file into a dos filesystemfdt       - flattened device tree utility commandsflashe    - erase QSPI FLASH  flashw    - qspi flash writeflid      - print FLASH IDflinfo    - print FLASH memory informationfstype    - Look up a filesystem typego        - start application at address 'addr'help      - print command description/usageicache    - enable or disable instruction cacheiminfo    - print header information for application imageimxtract  - extract a part of a multi-imageitest     - return true/false on integer compareln        - Create a symbolic linkload      - load binary file from a filesystemloadb     - load binary file over serial line (kermit mode)loads     - load S-Record file over serial lineloadx     - load binary file over serial line (xmodem mode)loady     - load binary file over serial line (ymodem mode)loop      - infinite loop on address rangels        - list files in a directory (default /)md        - memory displaymdio      - MDIO utility commandsmii       - MII utility commandsmm        - memory modify (auto-incrementing address)mtest     - simple RAM read/write testmw        - memory write (fill)nfs       - boot image via network using NFS protocolnm        - memory modify (constant address)nvme      - NVM Express sub-systempart      - disk partition related commandspci       - list and access PCI Configuration Spacepdmar     - pci_dma Read Testpdmaw     - pci_dma Write Testping      - send ICMP ECHO_REQUEST to network hostpoweroff  - Perform POWEROFF of the deviceprintenv  - print environment variablesprotect   - enable or disable FLASH write protectionpxe       - commands to get and boot from pxe filesreset     - Perform RESET of the CPUrun       - run commands in an environment variablesave      - save file to a filesystemsaveenv   - save environment variables to persistent storagescsi      - SCSI sub-systemscsiboot  - boot from SCSI devicese        - se md|mw|update [address] [data]setenv    - set environment variablessetexpr   - set environment variable as the result of eval expressionshowvar   - print local hushshell variablessize      - determine a file's sizesleep     - delay execution for some timesource    - run script from memorysysboot   - command to get and boot from syslinux filestest      - minimal test like /bin/shtftpboot  - boot image via network using TFTP protocoltftpput   - TFTP put command, for uploading files to a servertrue      - do nothing, successfullyusb       - USB sub-systemusbboot   - boot from USB deviceversion   - 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 memorybooti  - 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#usbusb - USB sub-system       Usage:usb start - start (scan) USB controllerusb reset - reset (rescan) USB controllerusb stop [f] - stop USB [f]=force stopusb tree - show USB device treeusb info [dev] - show available USB devicesusb 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 devicesusb dev [dev] - show or set current USB storage deviceusb part [dev] - print partition table of one or all USB storage    devicesusb 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#scsiscsi - SCSI sub-system       Usage:scsi reset - reset SCSI controllerscsi info  - show available SCSI devicesscsi scan  - (re-)scan SCSI busscsi device [dev] - show or set current devicescsi part [dev] - print partition table of one or all SCSI devicesscsi 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 filesystemext4ls  - list files in a directory (default /)fatinfo  - print information about filesystemfatload  - load binary file from a dos filesystemfatls  - list files in a directory (default /)

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

示例如下:

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

ext4 格式容量为 1G;

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

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

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

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

         

         

9.nvme 命令

FT2004C#nvmenvme - NVM Express sub-system         
Usage:nvme scan - scan NVMe devicesnvme detail - show details of current NVMe devicenvme info - show all available NVMe devicesnvme device [dev] - show or set current NVMe devicenvme part [dev] - print partition table of one or all NVMe devicesnvme 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'

          命令的用法与 scsi 相似

               

10.mii命令

mii命令请查看文章:

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


欢迎飞腾爱好者加入微信交流群。
群内大家可以畅所欲言。
在群内不需要表露自己的公司和身份,可以群内交流遇到的问题,分享自己的调试心得。
希望大家共建飞腾友谊!

乌拉大喵喵
建立了飞腾爱好者技术交流群,公众号文章扫码进群,或私信加vx进群。
 最新文章