From: Bin Meng Date: Mon, 28 Mar 2022 03:02:56 +0000 (+0800) Subject: doc: usage: Group all shell command docs into cmd/ sub-directory X-Git-Tag: baikal/mips/sdk5.9~7^2^2~3^2~7 X-Git-Url: https://git.baikalelectronics.ru/?a=commitdiff_plain;h=336a96a669a50e6ac29d4fed40d2e8818bd577c0;p=uboot.git doc: usage: Group all shell command docs into cmd/ sub-directory Currently all shell command docs are put in the doc/usage root. Let's group them into cmd/ sub-directory. Signed-off-by: Bin Meng Reviewed-by: Heinrich Schuchardt --- diff --git a/doc/usage/acpi.rst b/doc/usage/acpi.rst deleted file mode 100644 index 14bafc8e35..0000000000 --- a/doc/usage/acpi.rst +++ /dev/null @@ -1,235 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+: - -acpi command -============ - -Synopis -------- - -:: - - acpi list - acpi items [-d] - acpi dump - -Description ------------ - -The *acpi* command is used to dump the ACPI tables generated by U-Boot for passing -to the operating systems. - -ACPI tables can be generated by various output functions and even devices can -output material to include in the Differentiated System Description Table (DSDT) -and SSDT tables (Secondary System Description Table). U-Boot keeps track of -which device or table-writer produced each piece of the ACPI tables. - -The ACPI tables are stored contiguously in memory. - - -acpi list -~~~~~~~~~ - -List the ACPI tables that have been generated. Each table has a 4-character -table name (e.g. SSDT, FACS) and has a format defined by the -`ACPI specification`_. - -U-Boot does not currently support decoding the tables. Unlike devicetree, ACPI -tables have no regular schema and also some include bytecode, so decoding the -tables requires a lot of code. - -The table shows the following information: - -Name - Table name, e.g. `MCFG` - -Base - Base address of table in memory - -Size - Size of table in bytes - -Detail - More information depending on the table type - - Revision - Table revision number (two decimal digits) - - OEM ID - ID for the Original Equipment Manufacturer. Typically this is "U-BOOT". - - OEM Table ID - Table ID for the Original Equipment Manufacturer. Typically this is - "U-BOOTBL" (U-Boot bootloader) - - OEM Revision - Revision string for the Original Equipment Manufacturer. Typically this - is the U-Boot release number, e.g. 20220101 (meaning v2022.01 since the - final 01 is not used). For DSDT, this is set by the source code in - the parameters of DefinitionBlock(). - - ACPI compiler-vendor ID - This is normally `INTL` for Intel - - ACPI compiler revision - This is the compiler revision. It is set to the version string for the - DSDT table but other tables just use the value 0 or 1, since U-Boot does - not actually use the compiler in these cases. It generates the code - itself. - -acpi items -~~~~~~~~~~ - -List the ACPI data that was generated, broken down by item. An item is either -an ACPI table generated by a writer function, or the part of a table that was -generated by a particular device. - -The `-d` flag also shows a binary dump of the table. - -The table shows the following information about each item: - -Seq - Sequence number in hex - -Type - Type of item - - ===== ============================================================ - Type Meaning - ===== ============================================================ - dsdt Fragment of a DSDT table, as generated by a device - ssdt Fragment of a SSDT table, as generated by a device - other A whole table of a particular type. as generated by a writer - ===== ============================================================ - -Base - Base address of table in memory - -Size - Size of table in bytes - -Device / Writer - Name of device (for ssdt/dsdt) that wrong this fragment of the table, or - name of the registered writer function (otherwise) that wrote the table. - -acpi dump -~~~~~~~~~ - -Dump a paticular ACPI table in binary format. This can be used to read the table -if you have the specification handy. - - -Example -------- - -:: - - => acpi list - Name Base Size Detail - ---- -------- ----- ------ - RSDP 79925000 24 v02 U-BOOT - RSDT 79925030 48 v01 U-BOOT U-BOOTBL 20220101 INTL 0 - XSDT 799250e0 6c v01 U-BOOT U-BOOTBL 20220101 INTL 0 - FACP 79929570 f4 v04 U-BOOT U-BOOTBL 20220101 INTL 1 - DSDT 79925280 32ea v02 U-BOOT U-BOOTBL 20110725 INTL 20180105 - FACS 79925240 40 - MCFG 79929670 2c v01 U-BOOT U-BOOTBL 20220101 INTL 0 - SPCR 799296a0 50 v02 U-BOOT U-BOOTBL 20220101 INTL 0 - TPM2 799296f0 4c v04 U-BOOT U-BOOTBL 20220101 INTL 0 - APIC 79929740 6c v02 U-BOOT U-BOOTBL 20220101 INTL 0 - SSDT 799297b0 1523 v02 U-BOOT U-BOOTBL 20220101 INTL 1 - NHLT 7992ace0 e60 v05 coral coral 3 INTL 0 - DBG2 7992db40 61 v00 U-BOOT U-BOOTBL 20220101 INTL 0 - HPET 7992dbb0 38 v01 U-BOOT U-BOOTBL 20220101 INTL 0 - => acpi items - Seq Type Base Size Device/Writer - --- ----- -------- ---- ------------- - 0 other 79925000 240 0base - 1 other 79925240 40 1facs - 2 dsdt 799252a4 58 board - 3 dsdt 799252fc 10 lpc - 4 other 79925280 32f0 3dsdt - 5 other 79928570 1000 4gnvs - 6 other 79929570 100 5fact - 7 other 79929670 30 5mcfg - 8 other 799296a0 50 5spcr - 9 other 799296f0 50 5tpm2 - a other 79929740 70 5x86 - b ssdt 799297d4 fe maxim-codec - c ssdt 799298d2 28 i2c2@16,0 - d ssdt 799298fa 270 da-codec - e ssdt 79929b6a 28 i2c2@16,1 - f ssdt 79929b92 28 i2c2@16,2 - 10 ssdt 79929bba 83 tpm@50 - 11 ssdt 79929c3d 28 i2c2@16,3 - 12 ssdt 79929c65 282 elan-touchscreen@10 - 13 ssdt 79929ee7 285 raydium-touchscreen@39 - 14 ssdt 7992a16c 28 i2c2@17,0 - 15 ssdt 7992a194 d8 elan-touchpad@15 - 16 ssdt 7992a26c 163 synaptics-touchpad@2c - 17 ssdt 7992a3cf 28 i2c2@17,1 - 18 ssdt 7992a3f7 111 wacom-digitizer@9 - 19 ssdt 7992a508 8f sdmmc@1b,0 - 1a ssdt 7992a597 4b wifi - 1b ssdt 7992a5e2 1a0 cpu@0 - 1c ssdt 7992a782 1a0 cpu@1 - 1d ssdt 7992a922 1a0 cpu@2 - 1e ssdt 7992aac2 211 cpu@3 - 1f other 799297b0 1530 6ssdt - 20 other 7992ace0 2f10 8dev - => acpi dump mcfg - MCFG @ 79929670 - 00000000: 4d 43 46 47 2c 00 00 00 01 41 55 2d 42 4f 4f 54 MCFG,....AU-BOOT - 00000010: 55 2d 42 4f 4f 54 42 4c 01 01 22 20 49 4e 54 4c U-BOOTBL.." INTL - 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 ............ - => acpi items -d - Seq Type Base Size Device/Writer - --- ----- -------- ---- ------------- - 0 other 79925000 240 0base - 00000000: 52 53 44 20 50 54 52 20 9e 55 2d 42 4f 4f 54 02 RSD PTR .U-BOOT. - 00000010: 30 50 92 79 24 00 00 00 e0 50 92 79 00 00 00 00 0P.y$....P.y.... - 00000020: a1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 00000030: 52 53 44 54 48 00 00 00 01 8b 55 2d 42 4f 4f 54 RSDTH.....U-BOOT - 00000040: 55 2d 42 4f 4f 54 42 4c 01 01 22 20 49 4e 54 4c U-BOOTBL.." INTL - 00000050: 00 00 00 00 70 95 92 79 70 96 92 79 a0 96 92 79 ....p..yp..y...y - 00000060: f0 96 92 79 40 97 92 79 b0 97 92 79 e0 ac 92 79 ...y@..y...y...y - 00000070: 40 db 92 79 b0 db 92 79 00 00 00 00 00 00 00 00 @..y...y........ - 00000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 00000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 000000a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 000000b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 000000c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 000000d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 000000e0: 58 53 44 54 6c 00 00 00 01 61 55 2d 42 4f 4f 54 XSDTl....aU-BOOT - 000000f0: 55 2d 42 4f 4f 54 42 4c 01 01 22 20 49 4e 54 4c U-BOOTBL.." INTL - 00000100: 00 00 00 00 70 95 92 79 00 00 00 00 70 96 92 79 ....p..y....p..y - 00000110: 00 00 00 00 a0 96 92 79 00 00 00 00 f0 96 92 79 .......y.......y - 00000120: 00 00 00 00 40 97 92 79 00 00 00 00 b0 97 92 79 ....@..y.......y - 00000130: 00 00 00 00 e0 ac 92 79 00 00 00 00 40 db 92 79 .......y....@..y - 00000140: 00 00 00 00 b0 db 92 79 00 00 00 00 00 00 00 00 .......y........ - 00000150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 00000160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - ... - - 1 other 79925240 40 1facs - 00000000: 46 41 43 53 40 00 00 00 00 00 00 00 00 00 00 00 FACS@........... - 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 00000020: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - - 2 dsdt 799252a4 58 board - 00000000: 10 87 05 00 5c 00 08 4f 49 50 47 12 8c 04 00 03 ....\..OIPG..... - 00000010: 12 8b 01 00 04 01 01 0e ff ff ff ff ff ff ff ff ................ - 00000020: 0d 49 4e 54 33 34 35 32 3a 30 31 00 12 85 01 00 .INT3452:01..... - 00000030: 04 0a 03 01 0a 23 0d 49 4e 54 33 34 35 32 3a 30 .....#.INT3452:0 - 00000040: 31 00 12 85 01 00 04 0a 04 01 0a 0a 0d 49 4e 54 1............INT - 00000050: 33 34 35 32 3a 30 30 00 3452:00. - - 3 dsdt 799252fc 10 lpc - 00000000: 10 8f 00 00 5c 00 08 4e 56 53 41 0c 10 50 93 79 ....\..NVSA..P.y - - 4 other 79925280 32f0 3dsdt - 00000000: 44 53 44 54 ea 32 00 00 02 eb 55 2d 42 4f 4f 54 DSDT.2....U-BOOT - 00000010: 55 2d 42 4f 4f 54 42 4c 25 07 11 20 49 4e 54 4c U-BOOTBL%.. INTL - - -.. _`ACPI specification`: https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf diff --git a/doc/usage/addrmap.rst b/doc/usage/addrmap.rst deleted file mode 100644 index 472fd547f3..0000000000 --- a/doc/usage/addrmap.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+ - -addrmap command -=============== - -Synopsis --------- - -:: - - addrmap - -Description ------------ - -The addrmap command is used to display non-identity virtual-physical memory -mappings for 32-bit CPUs. - -The output may look like: - -:: - - => addrmap - vaddr paddr size - ================ ================ ================ - e0000000 fe0000000 00100000 - 00000000 00000000 04000000 - 04000000 04000000 04000000 - 80000000 c00000000 10000000 - 90000000 c10000000 10000000 - a0000000 fe1000000 00010000 - -The first column indicates the virtual address. -The second column indicates the physical address. -The third column indicates the mapped size. - -Configuration -------------- - -To use the addrmap command you must specify CONFIG_CMD_ADDRMAP=y. -It is automatically turned on when CONFIG_ADDR_MAP is set. diff --git a/doc/usage/askenv.rst b/doc/usage/askenv.rst deleted file mode 100644 index 5c4ca35d4c..0000000000 --- a/doc/usage/askenv.rst +++ /dev/null @@ -1,87 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+: - -askenv command -=============== - -Synopsis --------- - -:: - - askenv name [message] [size] - -Description ------------ - -Display message and get environment variable name of max size characters -from stdin. - -name - name of the environment variable - -message - message is displayed while the command waits for the value to be - entered from stdin.if no message is specified,a default message - "Please enter name:" will be displayed. - -size - maximum number of characters that will be stored in environment - variable name.this is in decimal number format (unlike in - other commands where size values are in hexa-decimal). Default - value of size is 1023 (CONFIG_SYS_CBSIZE - 1). - -Example -------- - -Value of a environment variable env1 without message and size parameters: - -:: - - => askenv env1;echo $? - Please enter 'env1': val1 - 0 - => printenv env1 - env1=val1 - -Value of a environment variable env2 with message and size parameters: - -:: - - => askenv env2 Please type-in a value for env2: 10;echo $? - Please type-in a value for env2: 1234567890123 - 0 - => printenv env2 - env2=1234567890 - -Value of a environment variable env3 with size parameter only: - -:: - - => askenv env3 10;echo $? - Please enter 'env3': val3 - 0 - => printenv env3 - env3=val3 - -Return Value of askenv command, when used without any other arguments: - -:: - - => askenv;echo $? - askenv - get environment variables from stdin - - Usage: - askenv name [message] [size] - - display 'message' and get environment variable 'name' from stdin (max 'size' chars) - 1 - -Configuration -------------- - -The askenv command is only available if CMD_ASKENV=y - -Return value ------------- - -The return value $? is set to 0 (true). -If no other arguments are specified (along with askenv), it is set to 1 (false). diff --git a/doc/usage/base.rst b/doc/usage/base.rst deleted file mode 100644 index db9cd4d978..0000000000 --- a/doc/usage/base.rst +++ /dev/null @@ -1,23 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+ - -base command -============ - -Synopsis --------- - -:: - - base [address] - -Description ------------ - -The *base* command sets or displays the address offset used by the memory -commands *cmp, cp, md, mdc, mm, ms, mw, mwc*. - -All other commands ignore the address defined by *base*. - -address - new base address as hexadecimal number. If no value is provided, the current - value is displayed. diff --git a/doc/usage/bootefi.rst b/doc/usage/bootefi.rst deleted file mode 100644 index 282f22aac9..0000000000 --- a/doc/usage/bootefi.rst +++ /dev/null @@ -1,135 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+ -.. Copyright 2020, Heinrich Schuchardt - -bootefi command -=============== - -Synopsis --------- - -:: - - bootefi [image_addr] [fdt_addr] - bootefi bootmgr [fdt_addr] - bootefi hello [fdt_addr] - bootefi selftest [fdt_addr] - -Description ------------ - -The *bootefi* command is used to launch a UEFI binary which can be either of - -* UEFI application -* UEFI boot services driver -* UEFI run-time services driver - -An operating system requires a hardware description which can either be -presented as ACPI table (CONFIG\_GENERATE\_ACPI\_TABLE=y) or as device-tree -The load address of the device-tree may be provided as parameter *fdt\_addr*. If -this address is not specified, the bootefi command will try to fall back in -sequence to: - -* the device-tree specified by environment variable *fdt\_addr* -* the device-tree specified by environment variable *fdtcontroladdr* - -The load address of the binary is specified by parameter *image_address*. A -command sequence to run a UEFI application might look like - -:: - - load mmc 0:2 $fdt_addr_r dtb - load mmc 0:1 $kernel_addr_r /EFI/grub/grubaa64.efi - bootefi $kernel_addr_r $fdt_addr_r - -The last file loaded defines the image file path in the loaded image protocol. -Hence the executable should always be loaded last. - -The value of the environment variable *bootargs* is converted from UTF-8 to -UTF-16 and passed as load options in the loaded image protocol to the UEFI -binary. - -Note - UEFI binaries that are contained in FIT images are launched via the - *bootm* command. - -UEFI boot manager -''''''''''''''''' - -The UEFI boot manager is invoked by the *bootefi bootmgr* sub-command. -Here boot options are defined by UEFI variables with a name consisting of the -letters *Boot* followed by a four digit hexadecimal number, e.g. *Boot0001* or -*BootA03E*. The boot variable defines a label, the device path of the binary to -execute as well as the load options passed in the loaded image protocol. - -If the UEFI variable *BootNext* is defined, it specifies the number of the boot -option to execute next. If no binary can be loaded via *BootNext* the variable -*BootOrder* specifies in which sequence boot options shalled be tried. - -The values of these variables can be managed using the U-Boot command -*efidebug*. - -UEFI hello world application -'''''''''''''''''''''''''''' - -U-Boot can be compiled with a hello world application that can be launched using -the *bootefi hello* sub-command. A session might look like - -:: - - => setenv bootargs 'Greetings to the world' - => bootefi hello - Booting /MemoryMapped(0x0,0x10001000,0x1000) - Hello, world! - Running on UEFI 2.8 - Have SMBIOS table - Have device tree - Load options: Greetings to the world - -UEFI selftest -''''''''''''' - -U-Boot can be compiled with UEFI unit tests. These unit tests are invoked using -the *bootefi selftest* sub-command. - -Which unit test is executed is controlled by the environment variable -*efi\_selftest*. If this variable is not set, all unit tests that are not marked -as 'on request' are executed. - -To show a list of the available unit tests the value *list* can be used - -:: - - => setenv efi_selftest list - => bootefi selftest - - Available tests: - 'block image transfer' - on request - 'block device' - 'configuration tables' - ... - -A single test is selected for execution by setting the *efi\_selftest* -environment variable to match one of the listed identifiers - -:: - - => setenv efi_selftest 'block image transfer' - => bootefi selftest - -Some of the tests execute the ExitBootServices() UEFI boot service and will not -return to the command line but require a board reset. - -Configuration -------------- - -To use the *bootefi* command you must specify CONFIG\_CMD\_BOOTEFI=y. -The *bootefi hello* sub-command requries CMD\_BOOTEFI\_HELLO=y. -The *bootefi selftest* sub-command depends on CMD\_BOOTEFI\_SELFTEST=y. - -See also --------- - -* *bootm* for launching UEFI binaries packed in FIT images -* *booti*, *bootm*, *bootz* for launching a Linux kernel without using the - UEFI sub-system -* *efidebug* for setting UEFI boot variables diff --git a/doc/usage/booti.rst b/doc/usage/booti.rst deleted file mode 100644 index d631fb571d..0000000000 --- a/doc/usage/booti.rst +++ /dev/null @@ -1,114 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+: - -booti command -============= - -Synopsis --------- - -:: - - booti [ [[:]] []] - -Description ------------ - -The booti command is used to boot a Linux kernel in flat or compressed -'Image' format. Which compressed formats are supported is configurable. - -addr - address of kernel image, defaults to CONFIG_SYS_LOAD_ADDR. - -initrd - address of the initial RAM disk. Use '-' to boot a kernel with a device - tree but without an initial RAM disk. - -size - size of the initial RAM disk. This parameter must be specified for raw - initial RAM disks. - -fdt - address of the device tree. - -To support compressed Image files the following environment variables must be -set: - -kernel_comp_addr_r - start of memory area used for decompression - -kernel_comp_size - size of the compressed file. The value has to be at least the size of - loaded image for decompression to succeed. For the booti command the - maximum decompressed size is 10 times this value. - -Example -------- - -This is the boot log of an Odroid C2 board: - -:: - - => load mmc 0:1 $fdt_addr_r dtb-5.10.0-3-arm64 - 27530 bytes read in 7 ms (3.7 MiB/s) - => load mmc 0:1 $kernel_addr_r vmlinuz-5.10.0-3-arm64 - 26990448 bytes read in 1175 ms (21.9 MiB/s) - => load mmc 0:1 $ramdisk_addr_r initrd.img-5.10.0-3-arm64 - 27421776 bytes read in 1209 ms (21.6 MiB/s) - => booti $kernel_addr_r $ramdisk_addr_r:$filesize $fdt_addr_r - Moving Image from 0x8080000 to 0x8200000, end=9c60000 - ## Flattened Device Tree blob at 08008000 - Booting using the fdt blob at 0x8008000 - Loading Ramdisk to 7a52a000, end 7bf50c50 ... OK - Loading Device Tree to 000000007a520000, end 000000007a529b89 ... OK - - Starting kernel ... - -The kernel can be compressed with gzip: - -.. code-block:: bash - - cd /boot - gzip -k vmlinuz-5.10.0-3-arm64 - -Here is the boot log for the compressed kernel: - -:: - - => setenv kernel_comp_addr_r 0x50000000 - => setenv kernel_comp_size 0x04000000 - => load mmc 0:1 $fdt_addr_r dtb-5.10.0-3-arm64 - 27530 bytes read in 6 ms (4.4 MiB/s) - => load mmc 0:1 $kernel_addr_r vmlinuz-5.10.0-3-arm64.gz - 9267730 bytes read in 402 ms (22 MiB/s) - => load mmc 0:1 $ramdisk_addr_r initrd.img-5.10.0-3-arm64 - 27421776 bytes read in 1181 ms (22.1 MiB/s) - => booti $kernel_addr_r $ramdisk_addr_r:$filesize $fdt_addr_r - Uncompressing Kernel Image - Moving Image from 0x8080000 to 0x8200000, end=9c60000 - ## Flattened Device Tree blob at 08008000 - Booting using the fdt blob at 0x8008000 - Loading Ramdisk to 7a52a000, end 7bf50c50 ... OK - Loading Device Tree to 000000007a520000, end 000000007a529b89 ... OK - - Starting kernel ... - -Configuration -------------- - -The booti command is only available if CONFIG_CMD_BOOTI=y. - -Which compression types are supported depends on: - -* CONFIG_BZIP2 -* CONFIG_GZIP -* CONFIG_LZ4 -* CONFIG_LZMA -* CONFIG_LZO -* CONFIG_ZSTD - -Return value ------------- - -Normally this command does not return. If an error occurs, the return value $? -is set to 1 (false). If the operating system returns to U-Boot, the system is -reset. diff --git a/doc/usage/bootmenu.rst b/doc/usage/bootmenu.rst deleted file mode 100644 index 1f094ad6ed..0000000000 --- a/doc/usage/bootmenu.rst +++ /dev/null @@ -1,95 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+ -.. (C) Copyright 2011-2012 Pali Rohár - -bootmenu command -================ - -The "bootmenu" command uses U-Boot menu interfaces and provides -a simple mechanism for creating menus with different boot items. -The cursor keys "Up" and "Down" are used for navigation through -the items. Current active menu item is highlighted and can be -selected using the "Enter" key. The selection of the highlighted -menu entry invokes an U-Boot command (or a list of commands) -associated with this menu entry. - -The "bootmenu" command interprets ANSI escape sequencies, so -an ANSI terminal is required for proper menu rendering and item -selection. - -The assembling of the menu is done via a set of environment variables -"bootmenu_" and "bootmenu_delay", i.e.:: - - bootmenu_delay= - bootmenu_="=<commands>" - -<delay> - is the autoboot delay in seconds, after which the first - menu entry will be selected automatically - -<num> - is the boot menu entry number, starting from zero - -<title> - is the text of the menu entry shown on the console - or on the boot screen - -<commands> - are commands which will be executed when a menu - entry is selected - -Title and commands are separated by the first appearance of a '=' -character in the value of the environment variable. - -The first (optional) argument of the "bootmenu" command is a delay specifier -and it overrides the delay value defined by "bootmenu_delay" environment -variable. If the environment variable "bootmenu_delay" is not set or if -the argument of the "bootmenu" command is not specified, the default delay -will be CONFIG_BOOTDELAY. If delay is 0, no menu entries will be shown on -the console (or on the screen) and the command of the first menu entry will -be called immediately. If delay is less then 0, bootmenu will be shown and -autoboot will be disabled. - -Bootmenu always adds menu entry "U-Boot console" at the end of all menu -entries specified by environment variables. When selecting this entry -the bootmenu terminates and the usual U-Boot command prompt is presented -to the user. - -Example environment:: - - setenv bootmenu_0 Boot 1. kernel=bootm 0x82000000 # Set first menu entry - setenv bootmenu_1 Boot 2. kernel=bootm 0x83000000 # Set second menu entry - setenv bootmenu_2 Reset board=reset # Set third menu entry - setenv bootmenu_3 U-Boot boot order=boot # Set fourth menu entry - bootmenu 20 # Run bootmenu with autoboot delay 20s - - -The above example will be rendered as below:: - - *** U-Boot Boot Menu *** - - Boot 1. kernel - Boot 2. kernel - Reset board - U-Boot boot order - U-Boot console - - Hit any key to stop autoboot: 20 - Press UP/DOWN to move, ENTER to select - -The selected menu entry will be highlighted - it will have inverted -background and text colors. - -The "bootmenu" cammand is enabled by:: - - CONFIG_CMD_BOOTMENU=y - -To run the bootmenu at startup add these additional settings:: - - CONFIG_AUTOBOOT_KEYED=y - CONFIG_BOOTDELAY=30 - CONFIG_AUTOBOOT_MENU_SHOW=y - -When you intend to use the bootmenu on a color frame buffer console, -make sure to additionally define:: - - CONFIG_CFB_CONSOLE_ANSI=y diff --git a/doc/usage/button.rst b/doc/usage/button.rst deleted file mode 100644 index ea41762757..0000000000 --- a/doc/usage/button.rst +++ /dev/null @@ -1,64 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+ - -button command -============== - -Synopsis --------- - -:: - - button list - button <name> - -Description ------------ - -The button command is used to retrieve the status of a button. To show the -status of a button with name 'button1' you would issue the command - -:: - - button button1 - -The status of the button is both written to the console as *ON* or *OFF* and -set in the return value variable *$?* as 0 (true) or 1 (false). To retrieve -the status of a button with name *button1* and to write it to environment -variable *status1* you would execute the commands - -:: - - button button1 - setenv status1 $? - -A list of all available buttons and their status can be displayed using - -:: - - button list - -If a button device has not been probed yet, its status will be shown as -*<inactive>* in the list. - -Configuration -------------- - -To use the button command you must specify CONFIG_CMD_BUTTON=y and enable a -button driver. The available buttons are defined in the device-tree. - -Return value ------------- - -The variable *$?* takes the following values - -+---+-----------------------------+ -| 0 | ON, the button is pressed | -+---+-----------------------------+ -| 1 | OFF, the button is released | -+---+-----------------------------+ -| 0 | button list was shown | -+---+-----------------------------+ -| 1 | button not found | -+---+-----------------------------+ -| 1 | invalid arguments | -+---+-----------------------------+ diff --git a/doc/usage/cmd/acpi.rst b/doc/usage/cmd/acpi.rst new file mode 100644 index 0000000000..14bafc8e35 --- /dev/null +++ b/doc/usage/cmd/acpi.rst @@ -0,0 +1,235 @@ +.. SPDX-License-Identifier: GPL-2.0+: + +acpi command +============ + +Synopis +------- + +:: + + acpi list + acpi items [-d] + acpi dump <name> + +Description +----------- + +The *acpi* command is used to dump the ACPI tables generated by U-Boot for passing +to the operating systems. + +ACPI tables can be generated by various output functions and even devices can +output material to include in the Differentiated System Description Table (DSDT) +and SSDT tables (Secondary System Description Table). U-Boot keeps track of +which device or table-writer produced each piece of the ACPI tables. + +The ACPI tables are stored contiguously in memory. + + +acpi list +~~~~~~~~~ + +List the ACPI tables that have been generated. Each table has a 4-character +table name (e.g. SSDT, FACS) and has a format defined by the +`ACPI specification`_. + +U-Boot does not currently support decoding the tables. Unlike devicetree, ACPI +tables have no regular schema and also some include bytecode, so decoding the +tables requires a lot of code. + +The table shows the following information: + +Name + Table name, e.g. `MCFG` + +Base + Base address of table in memory + +Size + Size of table in bytes + +Detail + More information depending on the table type + + Revision + Table revision number (two decimal digits) + + OEM ID + ID for the Original Equipment Manufacturer. Typically this is "U-BOOT". + + OEM Table ID + Table ID for the Original Equipment Manufacturer. Typically this is + "U-BOOTBL" (U-Boot bootloader) + + OEM Revision + Revision string for the Original Equipment Manufacturer. Typically this + is the U-Boot release number, e.g. 20220101 (meaning v2022.01 since the + final 01 is not used). For DSDT, this is set by the source code in + the parameters of DefinitionBlock(). + + ACPI compiler-vendor ID + This is normally `INTL` for Intel + + ACPI compiler revision + This is the compiler revision. It is set to the version string for the + DSDT table but other tables just use the value 0 or 1, since U-Boot does + not actually use the compiler in these cases. It generates the code + itself. + +acpi items +~~~~~~~~~~ + +List the ACPI data that was generated, broken down by item. An item is either +an ACPI table generated by a writer function, or the part of a table that was +generated by a particular device. + +The `-d` flag also shows a binary dump of the table. + +The table shows the following information about each item: + +Seq + Sequence number in hex + +Type + Type of item + + ===== ============================================================ + Type Meaning + ===== ============================================================ + dsdt Fragment of a DSDT table, as generated by a device + ssdt Fragment of a SSDT table, as generated by a device + other A whole table of a particular type. as generated by a writer + ===== ============================================================ + +Base + Base address of table in memory + +Size + Size of table in bytes + +Device / Writer + Name of device (for ssdt/dsdt) that wrong this fragment of the table, or + name of the registered writer function (otherwise) that wrote the table. + +acpi dump +~~~~~~~~~ + +Dump a paticular ACPI table in binary format. This can be used to read the table +if you have the specification handy. + + +Example +------- + +:: + + => acpi list + Name Base Size Detail + ---- -------- ----- ------ + RSDP 79925000 24 v02 U-BOOT + RSDT 79925030 48 v01 U-BOOT U-BOOTBL 20220101 INTL 0 + XSDT 799250e0 6c v01 U-BOOT U-BOOTBL 20220101 INTL 0 + FACP 79929570 f4 v04 U-BOOT U-BOOTBL 20220101 INTL 1 + DSDT 79925280 32ea v02 U-BOOT U-BOOTBL 20110725 INTL 20180105 + FACS 79925240 40 + MCFG 79929670 2c v01 U-BOOT U-BOOTBL 20220101 INTL 0 + SPCR 799296a0 50 v02 U-BOOT U-BOOTBL 20220101 INTL 0 + TPM2 799296f0 4c v04 U-BOOT U-BOOTBL 20220101 INTL 0 + APIC 79929740 6c v02 U-BOOT U-BOOTBL 20220101 INTL 0 + SSDT 799297b0 1523 v02 U-BOOT U-BOOTBL 20220101 INTL 1 + NHLT 7992ace0 e60 v05 coral coral 3 INTL 0 + DBG2 7992db40 61 v00 U-BOOT U-BOOTBL 20220101 INTL 0 + HPET 7992dbb0 38 v01 U-BOOT U-BOOTBL 20220101 INTL 0 + => acpi items + Seq Type Base Size Device/Writer + --- ----- -------- ---- ------------- + 0 other 79925000 240 0base + 1 other 79925240 40 1facs + 2 dsdt 799252a4 58 board + 3 dsdt 799252fc 10 lpc + 4 other 79925280 32f0 3dsdt + 5 other 79928570 1000 4gnvs + 6 other 79929570 100 5fact + 7 other 79929670 30 5mcfg + 8 other 799296a0 50 5spcr + 9 other 799296f0 50 5tpm2 + a other 79929740 70 5x86 + b ssdt 799297d4 fe maxim-codec + c ssdt 799298d2 28 i2c2@16,0 + d ssdt 799298fa 270 da-codec + e ssdt 79929b6a 28 i2c2@16,1 + f ssdt 79929b92 28 i2c2@16,2 + 10 ssdt 79929bba 83 tpm@50 + 11 ssdt 79929c3d 28 i2c2@16,3 + 12 ssdt 79929c65 282 elan-touchscreen@10 + 13 ssdt 79929ee7 285 raydium-touchscreen@39 + 14 ssdt 7992a16c 28 i2c2@17,0 + 15 ssdt 7992a194 d8 elan-touchpad@15 + 16 ssdt 7992a26c 163 synaptics-touchpad@2c + 17 ssdt 7992a3cf 28 i2c2@17,1 + 18 ssdt 7992a3f7 111 wacom-digitizer@9 + 19 ssdt 7992a508 8f sdmmc@1b,0 + 1a ssdt 7992a597 4b wifi + 1b ssdt 7992a5e2 1a0 cpu@0 + 1c ssdt 7992a782 1a0 cpu@1 + 1d ssdt 7992a922 1a0 cpu@2 + 1e ssdt 7992aac2 211 cpu@3 + 1f other 799297b0 1530 6ssdt + 20 other 7992ace0 2f10 8dev + => acpi dump mcfg + MCFG @ 79929670 + 00000000: 4d 43 46 47 2c 00 00 00 01 41 55 2d 42 4f 4f 54 MCFG,....AU-BOOT + 00000010: 55 2d 42 4f 4f 54 42 4c 01 01 22 20 49 4e 54 4c U-BOOTBL.." INTL + 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 ............ + => acpi items -d + Seq Type Base Size Device/Writer + --- ----- -------- ---- ------------- + 0 other 79925000 240 0base + 00000000: 52 53 44 20 50 54 52 20 9e 55 2d 42 4f 4f 54 02 RSD PTR .U-BOOT. + 00000010: 30 50 92 79 24 00 00 00 e0 50 92 79 00 00 00 00 0P.y$....P.y.... + 00000020: a1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 00000030: 52 53 44 54 48 00 00 00 01 8b 55 2d 42 4f 4f 54 RSDTH.....U-BOOT + 00000040: 55 2d 42 4f 4f 54 42 4c 01 01 22 20 49 4e 54 4c U-BOOTBL.." INTL + 00000050: 00 00 00 00 70 95 92 79 70 96 92 79 a0 96 92 79 ....p..yp..y...y + 00000060: f0 96 92 79 40 97 92 79 b0 97 92 79 e0 ac 92 79 ...y@..y...y...y + 00000070: 40 db 92 79 b0 db 92 79 00 00 00 00 00 00 00 00 @..y...y........ + 00000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 00000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 000000a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 000000b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 000000c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 000000d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 000000e0: 58 53 44 54 6c 00 00 00 01 61 55 2d 42 4f 4f 54 XSDTl....aU-BOOT + 000000f0: 55 2d 42 4f 4f 54 42 4c 01 01 22 20 49 4e 54 4c U-BOOTBL.." INTL + 00000100: 00 00 00 00 70 95 92 79 00 00 00 00 70 96 92 79 ....p..y....p..y + 00000110: 00 00 00 00 a0 96 92 79 00 00 00 00 f0 96 92 79 .......y.......y + 00000120: 00 00 00 00 40 97 92 79 00 00 00 00 b0 97 92 79 ....@..y.......y + 00000130: 00 00 00 00 e0 ac 92 79 00 00 00 00 40 db 92 79 .......y....@..y + 00000140: 00 00 00 00 b0 db 92 79 00 00 00 00 00 00 00 00 .......y........ + 00000150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 00000160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + ... + + 1 other 79925240 40 1facs + 00000000: 46 41 43 53 40 00 00 00 00 00 00 00 00 00 00 00 FACS@........... + 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 00000020: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + + 2 dsdt 799252a4 58 board + 00000000: 10 87 05 00 5c 00 08 4f 49 50 47 12 8c 04 00 03 ....\..OIPG..... + 00000010: 12 8b 01 00 04 01 01 0e ff ff ff ff ff ff ff ff ................ + 00000020: 0d 49 4e 54 33 34 35 32 3a 30 31 00 12 85 01 00 .INT3452:01..... + 00000030: 04 0a 03 01 0a 23 0d 49 4e 54 33 34 35 32 3a 30 .....#.INT3452:0 + 00000040: 31 00 12 85 01 00 04 0a 04 01 0a 0a 0d 49 4e 54 1............INT + 00000050: 33 34 35 32 3a 30 30 00 3452:00. + + 3 dsdt 799252fc 10 lpc + 00000000: 10 8f 00 00 5c 00 08 4e 56 53 41 0c 10 50 93 79 ....\..NVSA..P.y + + 4 other 79925280 32f0 3dsdt + 00000000: 44 53 44 54 ea 32 00 00 02 eb 55 2d 42 4f 4f 54 DSDT.2....U-BOOT + 00000010: 55 2d 42 4f 4f 54 42 4c 25 07 11 20 49 4e 54 4c U-BOOTBL%.. INTL + + +.. _`ACPI specification`: https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf diff --git a/doc/usage/cmd/addrmap.rst b/doc/usage/cmd/addrmap.rst new file mode 100644 index 0000000000..472fd547f3 --- /dev/null +++ b/doc/usage/cmd/addrmap.rst @@ -0,0 +1,41 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +addrmap command +=============== + +Synopsis +-------- + +:: + + addrmap + +Description +----------- + +The addrmap command is used to display non-identity virtual-physical memory +mappings for 32-bit CPUs. + +The output may look like: + +:: + + => addrmap + vaddr paddr size + ================ ================ ================ + e0000000 fe0000000 00100000 + 00000000 00000000 04000000 + 04000000 04000000 04000000 + 80000000 c00000000 10000000 + 90000000 c10000000 10000000 + a0000000 fe1000000 00010000 + +The first column indicates the virtual address. +The second column indicates the physical address. +The third column indicates the mapped size. + +Configuration +------------- + +To use the addrmap command you must specify CONFIG_CMD_ADDRMAP=y. +It is automatically turned on when CONFIG_ADDR_MAP is set. diff --git a/doc/usage/cmd/askenv.rst b/doc/usage/cmd/askenv.rst new file mode 100644 index 0000000000..5c4ca35d4c --- /dev/null +++ b/doc/usage/cmd/askenv.rst @@ -0,0 +1,87 @@ +.. SPDX-License-Identifier: GPL-2.0+: + +askenv command +=============== + +Synopsis +-------- + +:: + + askenv name [message] [size] + +Description +----------- + +Display message and get environment variable name of max size characters +from stdin. + +name + name of the environment variable + +message + message is displayed while the command waits for the value to be + entered from stdin.if no message is specified,a default message + "Please enter name:" will be displayed. + +size + maximum number of characters that will be stored in environment + variable name.this is in decimal number format (unlike in + other commands where size values are in hexa-decimal). Default + value of size is 1023 (CONFIG_SYS_CBSIZE - 1). + +Example +------- + +Value of a environment variable env1 without message and size parameters: + +:: + + => askenv env1;echo $? + Please enter 'env1': val1 + 0 + => printenv env1 + env1=val1 + +Value of a environment variable env2 with message and size parameters: + +:: + + => askenv env2 Please type-in a value for env2: 10;echo $? + Please type-in a value for env2: 1234567890123 + 0 + => printenv env2 + env2=1234567890 + +Value of a environment variable env3 with size parameter only: + +:: + + => askenv env3 10;echo $? + Please enter 'env3': val3 + 0 + => printenv env3 + env3=val3 + +Return Value of askenv command, when used without any other arguments: + +:: + + => askenv;echo $? + askenv - get environment variables from stdin + + Usage: + askenv name [message] [size] + - display 'message' and get environment variable 'name' from stdin (max 'size' chars) + 1 + +Configuration +------------- + +The askenv command is only available if CMD_ASKENV=y + +Return value +------------ + +The return value $? is set to 0 (true). +If no other arguments are specified (along with askenv), it is set to 1 (false). diff --git a/doc/usage/cmd/base.rst b/doc/usage/cmd/base.rst new file mode 100644 index 0000000000..db9cd4d978 --- /dev/null +++ b/doc/usage/cmd/base.rst @@ -0,0 +1,23 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +base command +============ + +Synopsis +-------- + +:: + + base [address] + +Description +----------- + +The *base* command sets or displays the address offset used by the memory +commands *cmp, cp, md, mdc, mm, ms, mw, mwc*. + +All other commands ignore the address defined by *base*. + +address + new base address as hexadecimal number. If no value is provided, the current + value is displayed. diff --git a/doc/usage/cmd/bootefi.rst b/doc/usage/cmd/bootefi.rst new file mode 100644 index 0000000000..282f22aac9 --- /dev/null +++ b/doc/usage/cmd/bootefi.rst @@ -0,0 +1,135 @@ +.. SPDX-License-Identifier: GPL-2.0+ +.. Copyright 2020, Heinrich Schuchardt <xypron.glpk@gmx.de> + +bootefi command +=============== + +Synopsis +-------- + +:: + + bootefi [image_addr] [fdt_addr] + bootefi bootmgr [fdt_addr] + bootefi hello [fdt_addr] + bootefi selftest [fdt_addr] + +Description +----------- + +The *bootefi* command is used to launch a UEFI binary which can be either of + +* UEFI application +* UEFI boot services driver +* UEFI run-time services driver + +An operating system requires a hardware description which can either be +presented as ACPI table (CONFIG\_GENERATE\_ACPI\_TABLE=y) or as device-tree +The load address of the device-tree may be provided as parameter *fdt\_addr*. If +this address is not specified, the bootefi command will try to fall back in +sequence to: + +* the device-tree specified by environment variable *fdt\_addr* +* the device-tree specified by environment variable *fdtcontroladdr* + +The load address of the binary is specified by parameter *image_address*. A +command sequence to run a UEFI application might look like + +:: + + load mmc 0:2 $fdt_addr_r dtb + load mmc 0:1 $kernel_addr_r /EFI/grub/grubaa64.efi + bootefi $kernel_addr_r $fdt_addr_r + +The last file loaded defines the image file path in the loaded image protocol. +Hence the executable should always be loaded last. + +The value of the environment variable *bootargs* is converted from UTF-8 to +UTF-16 and passed as load options in the loaded image protocol to the UEFI +binary. + +Note + UEFI binaries that are contained in FIT images are launched via the + *bootm* command. + +UEFI boot manager +''''''''''''''''' + +The UEFI boot manager is invoked by the *bootefi bootmgr* sub-command. +Here boot options are defined by UEFI variables with a name consisting of the +letters *Boot* followed by a four digit hexadecimal number, e.g. *Boot0001* or +*BootA03E*. The boot variable defines a label, the device path of the binary to +execute as well as the load options passed in the loaded image protocol. + +If the UEFI variable *BootNext* is defined, it specifies the number of the boot +option to execute next. If no binary can be loaded via *BootNext* the variable +*BootOrder* specifies in which sequence boot options shalled be tried. + +The values of these variables can be managed using the U-Boot command +*efidebug*. + +UEFI hello world application +'''''''''''''''''''''''''''' + +U-Boot can be compiled with a hello world application that can be launched using +the *bootefi hello* sub-command. A session might look like + +:: + + => setenv bootargs 'Greetings to the world' + => bootefi hello + Booting /MemoryMapped(0x0,0x10001000,0x1000) + Hello, world! + Running on UEFI 2.8 + Have SMBIOS table + Have device tree + Load options: Greetings to the world + +UEFI selftest +''''''''''''' + +U-Boot can be compiled with UEFI unit tests. These unit tests are invoked using +the *bootefi selftest* sub-command. + +Which unit test is executed is controlled by the environment variable +*efi\_selftest*. If this variable is not set, all unit tests that are not marked +as 'on request' are executed. + +To show a list of the available unit tests the value *list* can be used + +:: + + => setenv efi_selftest list + => bootefi selftest + + Available tests: + 'block image transfer' - on request + 'block device' + 'configuration tables' + ... + +A single test is selected for execution by setting the *efi\_selftest* +environment variable to match one of the listed identifiers + +:: + + => setenv efi_selftest 'block image transfer' + => bootefi selftest + +Some of the tests execute the ExitBootServices() UEFI boot service and will not +return to the command line but require a board reset. + +Configuration +------------- + +To use the *bootefi* command you must specify CONFIG\_CMD\_BOOTEFI=y. +The *bootefi hello* sub-command requries CMD\_BOOTEFI\_HELLO=y. +The *bootefi selftest* sub-command depends on CMD\_BOOTEFI\_SELFTEST=y. + +See also +-------- + +* *bootm* for launching UEFI binaries packed in FIT images +* *booti*, *bootm*, *bootz* for launching a Linux kernel without using the + UEFI sub-system +* *efidebug* for setting UEFI boot variables diff --git a/doc/usage/cmd/booti.rst b/doc/usage/cmd/booti.rst new file mode 100644 index 0000000000..d631fb571d --- /dev/null +++ b/doc/usage/cmd/booti.rst @@ -0,0 +1,114 @@ +.. SPDX-License-Identifier: GPL-2.0+: + +booti command +============= + +Synopsis +-------- + +:: + + booti [<addr> [<initrd>[:<size>]] [<fdt>]] + +Description +----------- + +The booti command is used to boot a Linux kernel in flat or compressed +'Image' format. Which compressed formats are supported is configurable. + +addr + address of kernel image, defaults to CONFIG_SYS_LOAD_ADDR. + +initrd + address of the initial RAM disk. Use '-' to boot a kernel with a device + tree but without an initial RAM disk. + +size + size of the initial RAM disk. This parameter must be specified for raw + initial RAM disks. + +fdt + address of the device tree. + +To support compressed Image files the following environment variables must be +set: + +kernel_comp_addr_r + start of memory area used for decompression + +kernel_comp_size + size of the compressed file. The value has to be at least the size of + loaded image for decompression to succeed. For the booti command the + maximum decompressed size is 10 times this value. + +Example +------- + +This is the boot log of an Odroid C2 board: + +:: + + => load mmc 0:1 $fdt_addr_r dtb-5.10.0-3-arm64 + 27530 bytes read in 7 ms (3.7 MiB/s) + => load mmc 0:1 $kernel_addr_r vmlinuz-5.10.0-3-arm64 + 26990448 bytes read in 1175 ms (21.9 MiB/s) + => load mmc 0:1 $ramdisk_addr_r initrd.img-5.10.0-3-arm64 + 27421776 bytes read in 1209 ms (21.6 MiB/s) + => booti $kernel_addr_r $ramdisk_addr_r:$filesize $fdt_addr_r + Moving Image from 0x8080000 to 0x8200000, end=9c60000 + ## Flattened Device Tree blob at 08008000 + Booting using the fdt blob at 0x8008000 + Loading Ramdisk to 7a52a000, end 7bf50c50 ... OK + Loading Device Tree to 000000007a520000, end 000000007a529b89 ... OK + + Starting kernel ... + +The kernel can be compressed with gzip: + +.. code-block:: bash + + cd /boot + gzip -k vmlinuz-5.10.0-3-arm64 + +Here is the boot log for the compressed kernel: + +:: + + => setenv kernel_comp_addr_r 0x50000000 + => setenv kernel_comp_size 0x04000000 + => load mmc 0:1 $fdt_addr_r dtb-5.10.0-3-arm64 + 27530 bytes read in 6 ms (4.4 MiB/s) + => load mmc 0:1 $kernel_addr_r vmlinuz-5.10.0-3-arm64.gz + 9267730 bytes read in 402 ms (22 MiB/s) + => load mmc 0:1 $ramdisk_addr_r initrd.img-5.10.0-3-arm64 + 27421776 bytes read in 1181 ms (22.1 MiB/s) + => booti $kernel_addr_r $ramdisk_addr_r:$filesize $fdt_addr_r + Uncompressing Kernel Image + Moving Image from 0x8080000 to 0x8200000, end=9c60000 + ## Flattened Device Tree blob at 08008000 + Booting using the fdt blob at 0x8008000 + Loading Ramdisk to 7a52a000, end 7bf50c50 ... OK + Loading Device Tree to 000000007a520000, end 000000007a529b89 ... OK + + Starting kernel ... + +Configuration +------------- + +The booti command is only available if CONFIG_CMD_BOOTI=y. + +Which compression types are supported depends on: + +* CONFIG_BZIP2 +* CONFIG_GZIP +* CONFIG_LZ4 +* CONFIG_LZMA +* CONFIG_LZO +* CONFIG_ZSTD + +Return value +------------ + +Normally this command does not return. If an error occurs, the return value $? +is set to 1 (false). If the operating system returns to U-Boot, the system is +reset. diff --git a/doc/usage/cmd/bootmenu.rst b/doc/usage/cmd/bootmenu.rst new file mode 100644 index 0000000000..1f094ad6ed --- /dev/null +++ b/doc/usage/cmd/bootmenu.rst @@ -0,0 +1,95 @@ +.. SPDX-License-Identifier: GPL-2.0+ +.. (C) Copyright 2011-2012 Pali Rohár <pali@kernel.org> + +bootmenu command +================ + +The "bootmenu" command uses U-Boot menu interfaces and provides +a simple mechanism for creating menus with different boot items. +The cursor keys "Up" and "Down" are used for navigation through +the items. Current active menu item is highlighted and can be +selected using the "Enter" key. The selection of the highlighted +menu entry invokes an U-Boot command (or a list of commands) +associated with this menu entry. + +The "bootmenu" command interprets ANSI escape sequencies, so +an ANSI terminal is required for proper menu rendering and item +selection. + +The assembling of the menu is done via a set of environment variables +"bootmenu_<num>" and "bootmenu_delay", i.e.:: + + bootmenu_delay=<delay> + bootmenu_<num>="<title>=<commands>" + +<delay> + is the autoboot delay in seconds, after which the first + menu entry will be selected automatically + +<num> + is the boot menu entry number, starting from zero + +<title> + is the text of the menu entry shown on the console + or on the boot screen + +<commands> + are commands which will be executed when a menu + entry is selected + +Title and commands are separated by the first appearance of a '=' +character in the value of the environment variable. + +The first (optional) argument of the "bootmenu" command is a delay specifier +and it overrides the delay value defined by "bootmenu_delay" environment +variable. If the environment variable "bootmenu_delay" is not set or if +the argument of the "bootmenu" command is not specified, the default delay +will be CONFIG_BOOTDELAY. If delay is 0, no menu entries will be shown on +the console (or on the screen) and the command of the first menu entry will +be called immediately. If delay is less then 0, bootmenu will be shown and +autoboot will be disabled. + +Bootmenu always adds menu entry "U-Boot console" at the end of all menu +entries specified by environment variables. When selecting this entry +the bootmenu terminates and the usual U-Boot command prompt is presented +to the user. + +Example environment:: + + setenv bootmenu_0 Boot 1. kernel=bootm 0x82000000 # Set first menu entry + setenv bootmenu_1 Boot 2. kernel=bootm 0x83000000 # Set second menu entry + setenv bootmenu_2 Reset board=reset # Set third menu entry + setenv bootmenu_3 U-Boot boot order=boot # Set fourth menu entry + bootmenu 20 # Run bootmenu with autoboot delay 20s + + +The above example will be rendered as below:: + + *** U-Boot Boot Menu *** + + Boot 1. kernel + Boot 2. kernel + Reset board + U-Boot boot order + U-Boot console + + Hit any key to stop autoboot: 20 + Press UP/DOWN to move, ENTER to select + +The selected menu entry will be highlighted - it will have inverted +background and text colors. + +The "bootmenu" cammand is enabled by:: + + CONFIG_CMD_BOOTMENU=y + +To run the bootmenu at startup add these additional settings:: + + CONFIG_AUTOBOOT_KEYED=y + CONFIG_BOOTDELAY=30 + CONFIG_AUTOBOOT_MENU_SHOW=y + +When you intend to use the bootmenu on a color frame buffer console, +make sure to additionally define:: + + CONFIG_CFB_CONSOLE_ANSI=y diff --git a/doc/usage/cmd/button.rst b/doc/usage/cmd/button.rst new file mode 100644 index 0000000000..ea41762757 --- /dev/null +++ b/doc/usage/cmd/button.rst @@ -0,0 +1,64 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +button command +============== + +Synopsis +-------- + +:: + + button list + button <name> + +Description +----------- + +The button command is used to retrieve the status of a button. To show the +status of a button with name 'button1' you would issue the command + +:: + + button button1 + +The status of the button is both written to the console as *ON* or *OFF* and +set in the return value variable *$?* as 0 (true) or 1 (false). To retrieve +the status of a button with name *button1* and to write it to environment +variable *status1* you would execute the commands + +:: + + button button1 + setenv status1 $? + +A list of all available buttons and their status can be displayed using + +:: + + button list + +If a button device has not been probed yet, its status will be shown as +*<inactive>* in the list. + +Configuration +------------- + +To use the button command you must specify CONFIG_CMD_BUTTON=y and enable a +button driver. The available buttons are defined in the device-tree. + +Return value +------------ + +The variable *$?* takes the following values + ++---+-----------------------------+ +| 0 | ON, the button is pressed | ++---+-----------------------------+ +| 1 | OFF, the button is released | ++---+-----------------------------+ +| 0 | button list was shown | ++---+-----------------------------+ +| 1 | button not found | ++---+-----------------------------+ +| 1 | invalid arguments | ++---+-----------------------------+ diff --git a/doc/usage/cmd/cbsysinfo.rst b/doc/usage/cmd/cbsysinfo.rst new file mode 100644 index 0000000000..8c03a85169 --- /dev/null +++ b/doc/usage/cmd/cbsysinfo.rst @@ -0,0 +1,25 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +cbsysinfo +========= + +Synopis +------- + +:: + + cbsysinfo + + +Description +----------- + +This displays information obtained from the coreboot sysinfo table. It is only +useful when booting U-Boot from coreboot. + +Example +------- + +:: + + => cbsysinfo diff --git a/doc/usage/cmd/conitrace.rst b/doc/usage/cmd/conitrace.rst new file mode 100644 index 0000000000..d9916c865e --- /dev/null +++ b/doc/usage/cmd/conitrace.rst @@ -0,0 +1,54 @@ +conitrace command +================= + +Synopsis +-------- + +:: + + conitrace + +Description +----------- + +The conitrace command is used to test the correct function of the console input +driver. It is especially valuable for checking the support for special keys like +<F1> or <POS1>. + +To display escape sequences on a single line the output only advances to the +next line after detecting a pause of a few milliseconds. + +The output is hexadecimal. + +Examples +-------- + +Entering keys <B><SHIFT-B><CTRL-B><X> + +:: + + => conitrace + Waiting for your input + To terminate type 'x' + 62 + 42 + 02 + => + +Entering keys <F1><POS1><DEL><BACKSPACE><X> + +:: + + => conitrace + Waiting for your input + To terminate type 'x' + 1b 4f 50 + 1b 5b 48 + 1b 5b 33 7e + 7f + => + +Configuration +------------- + +The conitrace command is only available if CONFIG_CMD_CONITRACE=y. diff --git a/doc/usage/cmd/echo.rst b/doc/usage/cmd/echo.rst new file mode 100644 index 0000000000..861abdfd1e --- /dev/null +++ b/doc/usage/cmd/echo.rst @@ -0,0 +1,65 @@ +echo command +============ + +Synopsis +-------- + +:: + + echo [-n] [args ...] + +Description +----------- + +The echo command prints its arguments to the console separated by spaces. + +-n + Do not print a line feed after the last argument. + +args + Arguments to be printed. The arguments are evaluated before being passed to + the command. + +Examples +-------- + +Strings are parsed before the arguments are passed to the echo command: + +:: + + => echo "a" 'b' c + a b c + => + +Observe how variables included in strings are handled: + +:: + + => setenv var X; echo "a)" ${var} 'b)' '${var}' c) ${var} + a) X b) ${var} c) X + => + + +-n suppresses the line feed: + +:: + + => echo -n 1 2 3; echo a b c + 1 2 3a b c + => echo -n 1 2 3 + 1 2 3=> + +A more complex example: + +:: + + => for i in a b c; do for j in 1 2 3; do echo -n "${i}${j}, "; done; echo; done; + a1, a2, a3, + b1, b2, b3, + c1, c2, c3, + => + +Return value +------------ + +The return value $? is always set to 0 (true). diff --git a/doc/usage/cmd/exception.rst b/doc/usage/cmd/exception.rst new file mode 100644 index 0000000000..27df88bd5c --- /dev/null +++ b/doc/usage/cmd/exception.rst @@ -0,0 +1,66 @@ +exception command +================= + +Synopsis +-------- + +:: + + exception <type> + +Description +----------- + +The exception command is used to test the handling of exceptions like undefined +instructions, segmentation faults or alignment faults. + +type + type of exception to be generated. The available types are architecture + dependent. Use 'help exception' to determine which are available. + + **ARM:** + + breakpoint + prefetch abort + + unaligned + data abort + + undefined + undefined instruction + + **RISC-V:** + + ebreak + breakpoint exception + + unaligned + load address misaligned + + undefined + undefined instruction + + **Sandbox:** + + sigsegv + illegal memory access + + undefined + undefined instruction + + **x86:** + + undefined + undefined instruction + +Examples +-------- + +:: + + => exception undefined + + Illegal instruction + pc = 0x56076dd1a0f9, pc_reloc = 0x540f9 + + resetting ... diff --git a/doc/usage/cmd/exit.rst b/doc/usage/cmd/exit.rst new file mode 100644 index 0000000000..769223c477 --- /dev/null +++ b/doc/usage/cmd/exit.rst @@ -0,0 +1,40 @@ +exit command +============ + +Synopsis +-------- + +:: + + exit + +Description +----------- + +The exit command terminates a script started via the run or source command. +If scripts are nested, only the innermost script is left. + +:: + + => setenv inner 'echo entry inner; exit; echo inner done' + => setenv outer 'echo entry outer; run inner; echo outer done' + => run outer + entry outer + entry inner + outer done + => + +When executed outside a script a warning is written. Following commands are not +executed. + +:: + + => echo first; exit; echo last + first + exit not allowed from main input shell. + => + +Return value +------------ + +$? is always set to 0 (true). diff --git a/doc/usage/cmd/extension.rst b/doc/usage/cmd/extension.rst new file mode 100644 index 0000000000..2b88398b18 --- /dev/null +++ b/doc/usage/cmd/extension.rst @@ -0,0 +1,111 @@ +.. SPDX-License-Identifier: GPL-2.0+ +.. Copyright 2021, Kory Maincent <kory.maincent@bootlin.com> + +U-Boot extension board usage (CONFIG_EXTENSION) +=============================================== + +Synopsis +-------- + +:: + + extension scan + extension list + extension apply <extension number|all> + +Description +----------- + +The "extension" command proposes a generic U-Boot mechanism to detect +extension boards connected to the HW platform, and apply the appropriate +Device Tree overlays depending on the detected extension boards. + +The "extension" command comes with three sub-commands: + + - "extension scan" makes the generic code call the board-specific + extension_board_scan() function to retrieve the list of detected + extension boards. + + - "extension list" allows to list the detected extension boards. + + - "extension apply <number>|all" allows to apply the Device Tree + overlay(s) corresponding to one, or all, extension boards + +The latter requires two environment variables to exist: + + - extension_overlay_addr: the RAM address where to load the Device + Tree overlays + + - extension_overlay_cmd: the U-Boot command to load one overlay. + Indeed, the location and mechanism to load DT overlays is very setup + specific. + +In order to enable this mechanism, board-specific code must implement +the extension_board_scan() function that fills in a linked list of +"struct extension", each describing one extension board. In addition, +the board-specific code must select the SUPPORT_EXTENSION_SCAN Kconfig +boolean. + +Usage example +------------- + +1. Make sure your devicetree is loaded and set as the working fdt tree. + +:: + + => run loadfdt + => fdt addr $fdtaddr + +2. Prepare the environment variables + +:: + + => setenv extension_overlay_addr 0x88080000 + => setenv extension_overlay_cmd 'load mmc 0:1 ${extension_overlay_addr} /boot/${extension_overlay_name}' + +3. Detect the plugged extension board + +:: + + => extension scan + +4. List the plugged extension board information and the devicetree + overlay name + +:: + + => extension list + +5. Apply the appropriate devicetree overlay + +For apply the selected overlay: + +:: + + => extension apply 0 + +For apply all the overlays: + +:: + + => extension apply all + +Simple extension_board_scan function example +-------------------------------------------- + +.. code-block:: c + + int extension_board_scan(struct list_head *extension_list) + { + struct extension *extension; + + extension = calloc(1, sizeof(struct extension)); + snprintf(extension->overlay, sizeof(extension->overlay), "overlay.dtbo"); + snprintf(extension->name, sizeof(extension->name), "extension board"); + snprintf(extension->owner, sizeof(extension->owner), "sandbox"); + snprintf(extension->version, sizeof(extension->version), "1.1"); + snprintf(extension->other, sizeof(extension->other), "Extension board information"); + list_add_tail(&extension->list, extension_list); + + return 1; + } diff --git a/doc/usage/cmd/false.rst b/doc/usage/cmd/false.rst new file mode 100644 index 0000000000..a17fe86021 --- /dev/null +++ b/doc/usage/cmd/false.rst @@ -0,0 +1,28 @@ +false command +============= + +Synopsis +-------- + +:: + + false + +Description +----------- + +The false command sets the return value $? to 1 (false). + +Example +------- + +:: + + => false; echo $? + 1 + => + +Configuration +------------- + +The false command is only available if CONFIG_HUSH_PARSER=y. diff --git a/doc/usage/cmd/fatinfo.rst b/doc/usage/cmd/fatinfo.rst new file mode 100644 index 0000000000..af2eba4344 --- /dev/null +++ b/doc/usage/cmd/fatinfo.rst @@ -0,0 +1,51 @@ +.. SPDX-License-Identifier: GPL-2.0+: + +fatinfo command +=============== + +Synopsis +-------- + +:: + + fatinfo <interface> <dev[:part]> + +Description +----------- + +The fatinfo command displays information about a FAT partition. + +interface + interface for accessing the block device (mmc, sata, scsi, usb, ....) + +dev + device number + +part + partition number, defaults to 1 + +Example +------- + +Here is the output for a partition on a 32 GB SD-Card: + +:: + + => fatinfo mmc 0:1 + Interface: MMC + Device 0: Vendor: Man 00001b Snr 97560602 Rev: 13.8 Prod: EB1QT0 + Type: Removable Hard Disk + Capacity: 30528.0 MB = 29.8 GB (62521344 x 512) + Filesystem: FAT32 "MYDISK " + => + +Configuration +------------- + +The fatinfo command is only available if CONFIG_CMD_FAT=y. + +Return value +------------ + +The return value $? is set to 0 (true) if the partition is a FAT partition. +Otherwise it is set to 1 (false). diff --git a/doc/usage/cmd/fatload.rst b/doc/usage/cmd/fatload.rst new file mode 100644 index 0000000000..93acb27a53 --- /dev/null +++ b/doc/usage/cmd/fatload.rst @@ -0,0 +1,80 @@ +.. SPDX-License-Identifier: GPL-2.0+: + +fatload command +=============== + +Synopsis +-------- + +:: + + fatload <interface> [<dev[:part]> [<addr> [<filename> [bytes [pos]]]]] + +Description +----------- + +The fatload command is used to read a file from a FAT filesystem into memory. +You can always use the :doc:`load command <load>` instead. + +The number of transferred bytes is saved in the environment variable filesize. +The load address is saved in the environment variable fileaddr. + +interface + interface for accessing the block device (mmc, sata, scsi, usb, ....) + +dev + device number + +part + partition number, defaults to 0 (whole device) + +addr + load address, defaults to environment variable loadaddr or if loadaddr is + not set to configuration variable CONFIG_SYS_LOAD_ADDR + +filename + path to file, defaults to environment variable bootfile + +bytes + maximum number of bytes to load + +pos + number of bytes to skip + +addr, bytes, pos are hexadecimal numbers. + +If either 'pos' or 'bytes' are not aligned according to the minimum alignment +requirement for DMA transfer (ARCH_DMA_MINALIGN) additional buffering will be +used, a misaligned buffer warning will be printed, and performance will suffer +for the load. + +Example +------- + +:: + + => fatload mmc 0:1 ${kernel_addr_r} snp.efi + 149280 bytes read in 11 ms (12.9 MiB/s) + => + => fatload mmc 0:1 ${kernel_addr_r} snp.efi 1000000 + 149280 bytes read in 9 ms (15.8 MiB/s) + => + => fatload mmc 0:1 ${kernel_addr_r} snp.efi 1000000 100 + 149024 bytes read in 10 ms (14.2 MiB/s) + => + => fatload mmc 0:1 ${kernel_addr_r} snp.efi 10 + 16 bytes read in 1 ms (15.6 KiB/s) + => + +Configuration +------------- + +The fatload command is only available if CONFIG_CMD_FAT=y. + +Return value +------------ + +The return value $? is set to 0 (true) if the file was successfully loaded +even if the number of bytes is less then the specified length. + +If an error occurs, the return value $? is set to 1 (false). diff --git a/doc/usage/cmd/for.rst b/doc/usage/cmd/for.rst new file mode 100644 index 0000000000..f9e504979c --- /dev/null +++ b/doc/usage/cmd/for.rst @@ -0,0 +1,65 @@ +for command +=========== + +Synopis +------- + +:: + + for <variable> in <items>; do <commands>; done + +Description +----------- + +The for command is used to loop over a list of values and execute a series of +commands for each of these. + +The counter variable of the loop is a shell variable. Please, keep in mind that +an environment variable takes precedence over a shell variable of the same name. + +variable + name of the counter variable + +items + space separated item list + +commands + commands to execute + +Example +------- + +:: + + => setenv c + => for c in 1 2 3; do echo item ${c}; done + item 1 + item 2 + item 3 + => echo ${c} + 3 + => setenv c x + => for c in 1 2 3; do echo item ${c}; done + item x + item x + item x + => + +The first line ensures that there is no environment variable *c*. Hence in the +first loop the shell variable *c* is printed. + +After defining an environment variable of name *c* it takes precedence over the +shell variable and the environment variable is printed. + +Return value +------------ + +The return value $? after the done statement is the return value of the last +statement executed in the loop. + +:: + + => for i in true false; do ${i}; done; echo $? + 1 + => for i in false true; do ${i}; done; echo $? + 0 diff --git a/doc/usage/cmd/load.rst b/doc/usage/cmd/load.rst new file mode 100644 index 0000000000..1efee77317 --- /dev/null +++ b/doc/usage/cmd/load.rst @@ -0,0 +1,74 @@ +.. SPDX-License-Identifier: GPL-2.0+: + +load command +============ + +Synopsis +-------- + +:: + + load <interface> [<dev[:part]> [<addr> [<filename> [bytes [pos]]]]] + +Description +----------- + +The load command is used to read a file from a filesystem into memory. + +The number of transferred bytes is saved in the environment variable filesize. +The load address is saved in the environment variable fileaddr. + +interface + interface for accessing the block device (mmc, sata, scsi, usb, ....) + +dev + device number + +part + partition number, defaults to 0 (whole device) + +addr + load address, defaults to environment variable loadaddr or if loadaddr is + not set to configuration variable CONFIG_SYS_LOAD_ADDR + +filename + path to file, defaults to environment variable bootfile + +bytes + maximum number of bytes to load + +pos + number of bytes to skip + +addr, bytes, pos are hexadecimal numbers. + +Example +------- + +:: + + => load mmc 0:1 ${kernel_addr_r} snp.efi + 149280 bytes read in 11 ms (12.9 MiB/s) + => + => load mmc 0:1 ${kernel_addr_r} snp.efi 1000000 + 149280 bytes read in 9 ms (15.8 MiB/s) + => + => load mmc 0:1 ${kernel_addr_r} snp.efi 1000000 100 + 149024 bytes read in 10 ms (14.2 MiB/s) + => + => load mmc 0:1 ${kernel_addr_r} snp.efi 10 + 16 bytes read in 1 ms (15.6 KiB/s) + => + +Configuration +------------- + +The load command is only available if CONFIG_CMD_FS_GENERIC=y. + +Return value +------------ + +The return value $? is set to 0 (true) if the file was successfully loaded +even if the number of bytes is less then the specified length. + +If an error occurs, the return value $? is set to 1 (false). diff --git a/doc/usage/cmd/loady.rst b/doc/usage/cmd/loady.rst new file mode 100644 index 0000000000..2819cc72ae --- /dev/null +++ b/doc/usage/cmd/loady.rst @@ -0,0 +1,67 @@ +.. SPDX-License-Identifier: GPL-2.0+: + +loady command +============= + +Synopsis +-------- + +:: + + loady [addr [baud]] + +Description +----------- + +The loady command is used to transfer a file to the device via the serial line +using the YMODEM protocol. + +The number of transferred bytes is saved in environment variable filesize. + +addr + load address, defaults to environment variable loadaddr or if loadaddr is + not set to configuration variable CONFIG_SYS_LOAD_ADDR + +baud + baud rate for the ymodem transmission. After the transmission the baud + rate is reset to the original value. + +Example +------- + +In the example below the terminal emulation program picocom was used to +transfer a file to the device. + +After entering the loady command the key sequence <CTRL-A><CTRL-S> is used to +let picocom prompt for the file name. Picocom invokes the program sz for the +file transfer. + +:: + + => loady 80064000 115200 + ## Ready for binary (ymodem) download to 0x80064000 at 115200 bps... + C + *** file: BOOTRISCV64.EFI + $ sz -b -vv BOOTRISCV64.EFI + Sending: BOOTRISCV64.EFI + Bytes Sent: 398976 BPS:7883 + Sending: + Ymodem sectors/kbytes sent: 0/ 0k + Transfer complete + + *** exit status: 0 *** + /1(CAN) packets, 4 retries + ## Total Size = 0x0006165f = 398943 Bytes + => echo ${filesize} + 6165f + => + +Configuration +------------- + +The command is only available if CONFIG_CMD_LOADB=y. + +Return value +------------ + +The return value $? is always 0 (true). diff --git a/doc/usage/cmd/mbr.rst b/doc/usage/cmd/mbr.rst new file mode 100644 index 0000000000..bddf2f612a --- /dev/null +++ b/doc/usage/cmd/mbr.rst @@ -0,0 +1,94 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +mbr command +=========== + +Synopsis +-------- + +:: + + mbr verify [interface] [device no] [partition list] + mbr write [interface] [device no] [partition list] + +Description +----------- + +The mbr command lets users create or verify the MBR (Master Boot Record) +partition layout based on the provided text description. The partition +layout is alternatively read from the 'mbr_parts' environment variable. +This can be used in scripts to help system image flashing tools to ensure +proper partition layout. + +The syntax of the text description of the partition list is similar to +the one used by the 'gpt' command. + +Supported partition parameters are: + +* name (currently ignored) +* start (partition start offset in bytes) +* size (in bytes or '-' to expand it to the whole free area) +* bootable (boolean flag) +* id (MBR partition type) + +If one wants to create more than 4 partitions, an 'Extended' primary +partition (with 0x05 ID) has to be explicitly provided as a one of the +first 4 entries. + +Here is an example how to create a 6 partitions (3 on the 'extended +volume'), some of the predefined sizes: + +:: + + => setenv mbr_parts 'name=boot,start=4M,size=128M,bootable,id=0x0e; + name=rootfs,size=3072M,id=0x83; + name=system-data,size=512M,id=0x83; + name=[ext],size=-,id=0x05; + name=user,size=-,id=0x83; + name=modules,size=100M,id=0x83; + name=ramdisk,size=8M,id=0x83' + => mbr write mmc 0 + +To check if the layout on the MMC #0 storage device matches the provided +text description one has to issue following command (assuming that +mbr_parts environment variable is set): + +:: + + => mbr verify mmc 0 + +The verify sub-command is especially useful in the system update scripts: + +:: + + => if mbr verify mmc 0; then + echo MBR layout needs to be updated + ... + fi + +The 'mbr write' command returns 0 on success write or 1 on failure. + +The 'mbr verify' returns 0 if the layout matches the one on the storage +device or 1 if not. + +Configuration +------------- + +To use the mbr command you must specify CONFIG_CMD_MBR=y. + +Return value +------------ + +The variable *$?* takes the following values + ++---+------------------------------+ +| 0 | mbr write was succesful | ++---+------------------------------+ +| 1 | mbr write failed | ++---+------------------------------+ +| 0 | mbr verify was succesful | ++---+------------------------------+ +| 1 | mbr verify was not succesful | ++---+------------------------------+ +|-1 | invalid arguments | ++---+------------------------------+ diff --git a/doc/usage/cmd/md.rst b/doc/usage/cmd/md.rst new file mode 100644 index 0000000000..7e9944e0dc --- /dev/null +++ b/doc/usage/cmd/md.rst @@ -0,0 +1,104 @@ +.. SPDX-License-Identifier: GPL-2.0+: + +md command +========== + +Synopis +------- + +:: + + md <address>[<data_size>] [<length>] + +Description +----------- + +The md command is used to dump the contents of memory. It uses a standard +format that includes the address, hex data and ASCII display. It supports +various data sizes and uses the endianness of the target. + +The specified data_size and length become the defaults for future memory +commands commands. + +address + start address to display + +data_size + size of each value to display (defaults to .l): + + ========= =================== + data_size Output size + ========= =================== + .b byte + .w word (16 bits) + .l long (32 bits) + .q quadword (64 bits) + ========= =================== + +length + number of values to dump. Defaults to 40 (0d64). Note that this is not + the same as the number of bytes, unless .b is used. + +Note that the format of 'md.b' can be emulated from linux with:: + + # This works but requires using sed to get the extra spaces + # <addr> is the address, <f> is the filename + xxd -o <addr> -g1 <f> |sed 's/ / /' >bad + + # This uses a single tool but the offset always starts at 0 + # <f> is the filename + hexdump -v -e '"%08.8_ax: " 16/1 "%02x " " "' -e '16/1 "%_p" "\n" ' <f> + + +Example +------- + +:: + + => md 10000 + 00010000: 00010000 00000000 f0f30f00 00005596 .............U.. + 00010010: 10011010 00000000 10011010 00000000 ................ + 00010020: 10011050 00000000 b96d4cd8 00007fff P........Lm..... + 00010030: 00000000 00000000 f0f30f18 00005596 .............U.. + 00010040: 10011040 00000000 10011040 00000000 @.......@....... + 00010050: b96d4cd8 00007fff 10011020 00000000 .Lm..... ....... + 00010060: 00000003 000000c3 00000000 00000000 ................ + 00010070: 00000000 00000000 f0e892f3 00005596 .............U.. + 00010080: 00000000 000000a1 00000000 00000000 ................ + 00010090: 00000000 00000000 f0e38aa6 00005596 .............U.. + 000100a0: 00000000 000000a6 00000022 00000000 ........"....... + 000100b0: 00000001 00000000 f0e38aa1 00005596 .............U.. + 000100c0: 00000000 000000be 00000000 00000000 ................ + 000100d0: 00000000 00000000 00000000 00000000 ................ + 000100e0: 00000000 00000000 00000000 00000000 ................ + 000100f0: 00000000 00000000 00000000 00000000 ................ + => md.b 10000 + 00010000: 00 00 01 00 00 00 00 00 00 0f f3 f0 96 55 00 00 .............U.. + 00010010: 10 10 01 10 00 00 00 00 10 10 01 10 00 00 00 00 ................ + 00010020: 50 10 01 10 00 00 00 00 d8 4c 6d b9 ff 7f 00 00 P........Lm..... + 00010030: 00 00 00 00 00 00 00 00 18 0f f3 f0 96 55 00 00 .............U.. + => md.b 10000 10 + 00010000: 00 00 01 00 00 00 00 00 00 0f f3 f0 96 55 00 00 .............U.. + => + 00010010: 10 10 01 10 00 00 00 00 10 10 01 10 00 00 00 00 ................ + => + 00010020: 50 10 01 10 00 00 00 00 d8 4c 6d b9 ff 7f 00 00 P........Lm..... + => + => md.q 10000 + 00010000: 0000000000010000 00005596f0f30f00 .............U.. + 00010010: 0000000010011010 0000000010011010 ................ + 00010020: 0000000010011050 00007fffb96d4cd8 P........Lm..... + 00010030: 0000000000000000 00005596f0f30f18 .............U.. + 00010040: 0000000010011040 0000000010011040 @.......@....... + 00010050: 00007fffb96d4cd8 0000000010011020 .Lm..... ....... + 00010060: 000000c300000003 0000000000000000 ................ + 00010070: 0000000000000000 00005596f0e892f3 .............U.. + +The empty commands cause a 'repeat', so that md shows the next available data +in the same format as before. + + +Return value +------------ + +The return value $? is always 0 (true). diff --git a/doc/usage/cmd/mmc.rst b/doc/usage/cmd/mmc.rst new file mode 100644 index 0000000000..55e3f9cf98 --- /dev/null +++ b/doc/usage/cmd/mmc.rst @@ -0,0 +1,268 @@ +.. SPDX-License-Identifier: GPL-2.0+: + +mmc command +============ + +Synopsis +-------- + +:: + + mmc info + mmc read addr blk# cnt + mmc write addr blk# cnt + mmc erase blk# cnt + mmc rescan [mode] + mmc part + mmc dev [dev] [part] [mode] + mmc list + mmc wp + mmc bootbus <dev> <boot_bus_width> <reset_boot_bus_width> <boot_mode> + mmc bootpart-resize <dev> <dev part size MB> <RPMB part size MB> + mmc partconf <dev> [[varname] | [<boot_ack> <boot_partition> <partition_access>]] + mmc rst-function <dev> <value> + +Description +----------- + +The mmc command is used to control MMC(eMMC/SD) device. + +The 'mmc info' command displays information (Manufacturer ID, OEM, Name, Bus Speed, Mode, ...) of MMC device. + +The 'mmc read' command reads raw data to memory address from MMC device with block offset and count. + +The 'mmc write' command writes raw data to MMC device from memory address with block offset and count. + + addr + memory address + blk# + start block offset + cnt + block count + +The 'mmc erase' command erases *cnt* blocks on the MMC device starting at block *blk#*. + + blk# + start block offset + cnt + block count + +The 'mmc rescan' command scans the available MMC device. + + mode + speed mode to set. + CONFIG_MMC_SPEED_MODE_SET should be enabled. The requested speed mode is + passed as a decimal number according to the following table: + + ========== ========================== + Speed mode Description + ========== ========================== + 0 MMC legacy + 1 MMC High Speed (26MHz) + 2 SD High Speed (50MHz) + 3 MMC High Speed (52MHz) + 4 MMC DDR52 (52MHz) + 5 UHS SDR12 (25MHz) + 6 UHS SDR25 (50MHz) + 7 UHS SDR50 (100MHz) + 8 UHS DDR50 (50MHz) + 9 UHS SDR104 (208MHz) + 10 HS200 (200MHz) + 11 HS400 (200MHz) + 12 HS400ES (200MHz) + ========== ========================== + + A speed mode can be set only if it has already been enabled in the device tree + +The 'mmc part' command displays the list available partition on current mmc device. + +The 'mmc dev' command shows or set current mmc device. + + dev + device number to change + part + partition number to change + + mode + speed mode to set. + CONFIG_MMC_SPEED_MODE_SET should be enabled. The requested speed mode is + passed as a decimal number according to the following table: + + ========== ========================== + Speed mode Description + ========== ========================== + 0 MMC legacy + 1 MMC High Speed (26MHz) + 2 SD High Speed (50MHz) + 3 MMC High Speed (52MHz) + 4 MMC DDR52 (52MHz) + 5 UHS SDR12 (25MHz) + 6 UHS SDR25 (50MHz) + 7 UHS SDR50 (100MHz) + 8 UHS DDR50 (50MHz) + 9 UHS SDR104 (208MHz) + 10 HS200 (200MHz) + 11 HS400 (200MHz) + 12 HS400ES (200MHz) + ========== ========================== + + A speed mode can be set only if it has already been enabled in the device tree + +The 'mmc list' command displays the list available devices. + +The 'mmc wp' command enables "power on write protect" function for boot partitions. + +The 'mmc bootbus' command sets the BOOT_BUS_WIDTH field. (*Refer to eMMC specification*) + + boot_bus_width + 0x0 + x1 (sdr) or x4(ddr) buswidth in boot operation mode (default) + 0x1 + x4 (sdr/ddr) buswidth in boot operation mode + 0x2 + x8 (sdr/ddr) buswidth in boot operation mode + 0x3 + Reserved + + reset_boot_bus_width + 0x0 + Reset buswidth to x1, Single data reate and backward compatible timing after boot operation (default) + 0x1 + Retain BOOT_BUS_WIDTH and BOOT_MODE value after boot operation. This is relevant to Push-pull mode operation only + + boot_mode + 0x0 + Use single data rate + backward compatible timing in boot operation (default) + 0x1 + Use single data rate + High Speed timing in boot operation mode + 0x2 + Use dual data rate in boot operation + 0x3 + Reserved + +The 'mmc partconf' command shows or changes PARTITION_CONFIG field. + + varname + When showing the PARTITION_CONFIG, an optional environment variable to store the current boot_partition value into. + boot_ack + boot acknowledge value + boot_partition + boot partition to enable for boot + 0x0 + Device not boot enabled(default) + 0x1 + Boot partition1 enabled for boot + 0x2 + Boot partition2 enabled for boot + 0x7 + User area enabled for boot + others + Reserved + partition_access + partitions to access + +The 'mmc bootpart-resize' command changes sizes of boot and RPMB partitions. + + dev + device number + boot part size MB + target size of boot partition + RPMB part size MB + target size of RPMB partition + +The 'mmc rst-function' command changes the RST_n_FUNCTION field. +**WARNING** : This is a write-once field. (*Refer to eMMC specification*) + + value + 0x0 + RST_n signal is temporarily disabled (default) + 0x1 + RST_n signal is permanently enabled + 0x2 + RST_n signal is permanently disabled + 0x3 + Reserved + + +Examples +-------- + +The 'mmc info' command displays device's capabilities: +:: + + => mmc info + Device: EXYNOS DWMMC + Manufacturer ID: 45 + OEM: 100 + Name: SDW16 + Bus Speed: 52000000 + Mode: MMC DDR52 (52MHz) + Rd Block Len: 512 + MMC version 5.0 + High Capacity: Yes + Capacity: 14.7 GiB + Bus Width: 8-bit DDR + Erase Group Size: 512 KiB + HC WP Group Size: 8 MiB + User Capacity: 14.7 GiB WRREL + Boot Capacity: 4 MiB ENH + RPMB Capacity: 4 MiB ENH + Boot area 0 is not write protected + Boot area 1 is not write protected + +The raw data can be read/written via 'mmc read/write' command: +:: + + => mmc read 0x40000000 0x5000 0x100 + MMC read: dev # 0, block # 20480, count 256 ... 256 blocks read: OK + + => mmc write 0x40000000 0x5000 0x10 + MMC write: dev # 0, block # 20480, count 256 ... 256 blocks written: OK + +The partition list can be shown via 'mmc part' command: +:: + + => mmc part + Partition Map for MMC device 0 -- Partition Type: DOS + + Part Start Sector Num Sectors UUID Type + 1 8192 131072 dff8751a-01 0e Boot + 2 139264 6291456 dff8751a-02 83 + 3 6430720 1048576 dff8751a-03 83 + 4 7479296 23298048 dff8751a-04 05 Extd + 5 7481344 307200 dff8751a-05 83 + 6 7790592 65536 dff8751a-06 83 + 7 7858176 16384 dff8751a-07 83 + 8 7876608 22900736 dff8751a-08 83 + +The current device can be shown or set via 'mmc dev' command: +:: + + => mmc dev + switch to partitions #0, OK + mmc0(part0) is current device + => mmc dev 2 0 + switch to partitions #0, OK + mmc2 is current device + => mmc dev 0 1 4 + switch to partitions #1, OK + mmc0(part 1) is current device + +The list of available devices can be shown via 'mmc list' command: +:: + + => mmc list + mmc list + EXYNOS DWMMC: 0 (eMMC) + EXYNOS DWMMC: 2 (SD) + +Configuration +------------- + +The mmc command is only available if CONFIG_CMD_MMC=y. +Some commands need to enable more configuration. + +write, erase + CONFIG_MMC_WRITE +bootbus, bootpart-resize, partconf, rst-function + CONFIG_SUPPORT_EMMC_BOOT=y diff --git a/doc/usage/cmd/pinmux.rst b/doc/usage/cmd/pinmux.rst new file mode 100644 index 0000000000..9f4392cd0d --- /dev/null +++ b/doc/usage/cmd/pinmux.rst @@ -0,0 +1,95 @@ +.. SPDX-License-Identifier: GPL-2.0+: + +pinmux command +============== + +Synopsis +-------- + +:: + + pinmux list + pinmux dev [pincontroller-name] + pinmux status [-a | pin-name] + +Description +----------- + +The pinmux command is used to show the pin-controller muxing. + +The 'pinmux list' command diplays the available pin-controller. + +The 'pinmux dev' command selects the pin-controller for next commands. + + pincontroller-name + name of the pin-controller to select + +The 'pinmux status' command displays the pin muxing information. + + \-a + display pin muxing of all pin-controllers. + pin-name + name of the pin to display + +Example +------- + +:: + + => pinmux list + | Device | Driver | Parent + | pinctrl-gpio | sandbox_pinctrl_gpio | root_driver + | pinctrl | sandbox_pinctrl | root_driver + => + => pinmux dev pinctrl + dev: pinctrl + => + => pinmux status + P0 : UART TX. + P1 : UART RX. + P2 : I2S SCK. + P3 : I2S SD. + P4 : I2S WS. + P5 : GPIO0 bias-pull-up input-disable. + P6 : GPIO1 drive-open-drain. + P7 : GPIO2 bias-pull-down input-enable. + P8 : GPIO3 bias-disable. + => + => pinmux status P0 + P0 : UART TX. + => + => pinmux status -a + -------------------------- + pinctrl-gpio: + a0 : gpio input . + a1 : gpio input . + a2 : gpio input . + a3 : gpio input . + a4 : gpio input . + a5 : gpio output . + a6 : gpio output . + a7 : gpio input . + a8 : gpio input . + a9 : gpio input . + -------------------------- + pinctrl: + P0 : UART TX. + P1 : UART RX. + P2 : I2S SCK. + P3 : I2S SD. + P4 : I2S WS. + P5 : GPIO0 bias-pull-up input-disable. + P6 : GPIO1 drive-open-drain. + P7 : GPIO2 bias-pull-down input-enable. + P8 : GPIO3 bias-disable. + +Configuration +------------- + +The pinmux command is only available if CONFIG_CMD_PINMUX=y. + +Return value +------------ + +The return value $? is set to 0 (true) if the command succeded and to 1 (false) +otherwise. diff --git a/doc/usage/cmd/pstore.rst b/doc/usage/cmd/pstore.rst new file mode 100644 index 0000000000..1c8374513a --- /dev/null +++ b/doc/usage/cmd/pstore.rst @@ -0,0 +1,93 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +pstore command +============== + +Synopsis +-------- + +:: + + pstore set <addr> <len> [record-size] [console-size] [ftrace-size] [pmsg_size] [ecc-size] + pstore display [record-type] [nb] + pstore save <interface> <dev[:part]> <directory-path> + +Design +------ + +Linux PStore and Ramoops modules (Linux config options PSTORE and PSTORE_RAM) +allow to use memory to pass data from the dying breath of a crashing kernel to +its successor. This command allows to read those records from U-Boot command +line. + +Ramoops is an oops/panic logger that writes its logs to RAM before the system +crashes. It works by logging oopses and panics in a circular buffer. Ramoops +needs a system with persistent RAM so that the content of that area can survive +after a restart. + +Ramoops uses a predefined memory area to store the dump. + +Ramoops parameters can be passed as kernel parameters or through Device Tree, +i.e.:: + + ramoops.mem_address=0x30000000 ramoops.mem_size=0x100000 ramoops.record_size=0x2000 ramoops.console_size=0x2000 memmap=0x100000$0x30000000 + +The same values should be set in U-Boot to be able to retrieve the records. +This values can be set at build time in U-Boot configuration file, or at runtime. +U-Boot automatically patches the Device Tree to pass the Ramoops parameters to +the kernel. + +The PStore configuration parameters are: + +======================= ========== + Name Default +======================= ========== +CMD_PSTORE_MEM_ADDR +CMD_PSTORE_MEM_SIZE 0x10000 +CMD_PSTORE_RECORD_SIZE 0x1000 +CMD_PSTORE_CONSOLE_SIZE 0x1000 +CMD_PSTORE_FTRACE_SIZE 0x1000 +CMD_PSTORE_PMSG_SIZE 0x1000 +CMD_PSTORE_ECC_SIZE 0 +======================= ========== + +Records sizes should be a power of 2. +The memory size and the record/console size must be non-zero. + +Multiple 'dump' records can be stored in the memory reserved for PStore. +The memory size has to be larger than the sum of the record sizes, i.e.:: + + MEM_SIZE >= RECORD_SIZE * n + CONSOLE_SIZE + FTRACE_SIZE + PMSG_SIZE + +Usage +----- + +Generate kernel crash +~~~~~~~~~~~~~~~~~~~~~ + +For test purpose, you can generate a kernel crash by setting reboot timeout to +10 seconds and trigger a panic + +.. code-block:: console + + $ sudo sh -c "echo 1 > /proc/sys/kernel/sysrq" + $ sudo sh -c "echo 10 > /proc/sys/kernel/panic" + $ sudo sh -c "echo c > /proc/sysrq-trigger" + +Retrieve logs in U-Boot +~~~~~~~~~~~~~~~~~~~~~~~ + +First of all, unless PStore parameters as been set during U-Boot configuration +and match kernel ramoops parameters, it needs to be set using 'pstore set', e.g.:: + + => pstore set 0x30000000 0x100000 0x2000 0x2000 + +Then all available dumps can be displayed +using:: + + => pstore display + +Or saved to an existing directory in an Ext2 or Ext4 partition, e.g. on root +directory of 1st partition of the 2nd MMC:: + + => pstore save mmc 1:1 / diff --git a/doc/usage/cmd/qfw.rst b/doc/usage/cmd/qfw.rst new file mode 100644 index 0000000000..b3704b92d6 --- /dev/null +++ b/doc/usage/cmd/qfw.rst @@ -0,0 +1,89 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +qfw command +=========== + +Synopsis +-------- + +:: + + qfw list + qfw cpus + qfw load [kernel_addr [initrd_addr]] + +Description +----------- + +The *qfw* command is used to retrieve information form the QEMU firmware. + +The *qfw list* sub-command displays the QEMU firmware files. + +The *qfw cpus* sub-command displays the available CPUs. + +The *qfw load* command is used to load a kernel and an initial RAM disk. + +kernel_addr + address to which the file specified by the -kernel parameter of QEMU shall + be loaded. Defaults to environment variable *loadaddr* and further to + the value of *CONFIG_SYS_LOAD_ADDR*. + +initrd_addr + address to which the file specified by the -initrd parameter of QEMU shall + be loaded. Defaults to environment variable *ramdiskaddr* and further to + the value of *CONFIG_RAMDISK_ADDR*. + +Examples +-------- + +QEMU firmware files are listed via the *qfw list* command: + +:: + + => qfw list + etc/boot-fail-wait + etc/smbios/smbios-tables + etc/smbios/smbios-anchor + etc/e820 + genroms/kvmvapic.bin + genroms/linuxboot.bin + etc/system-states + etc/acpi/tables + etc/table-loader + etc/tpm/log + etc/acpi/rsdp + bootorder + +The available CPUs can be shown via the *qfw cpus* command: + +:: + + => qfw cpu + 2 cpu(s) online + +The *-kernel* and *-initrd* parameters allow to specify a kernel and an +initial RAM disk for QEMU: + +.. code-block:: bash + + $ qemu-system-x86_64 -machine pc-i440fx-2.5 -bios u-boot.rom -m 1G \ + -nographic -kernel vmlinuz -initrd initrd + +Now the kernel and the initial RAM disk can be loaded to the U-Boot memory via +the *qfw load* command and booted thereafter. + +:: + + => qfw load ${kernel_addr_r} ${ramdisk_addr_r} + loading kernel to address 0000000001000000 size 5048f0 initrd 0000000004000000 size 3c94891 + => zboot 1000000 5048f0 4000000 3c94891 + Valid Boot Flag + Magic signature found + Linux kernel version 4.19.0-14-amd64 (debian-kernel@lists.debian.org) #1 SMP Debian 4.19.171-2 (2021-01-30) + Building boot_params at 0x00090000 + Loading bzImage at address 100000 (5260160 bytes) + +Configuration +------------- + +The qfw command is only available if CONFIG_CMD_QFW=y. diff --git a/doc/usage/cmd/reset.rst b/doc/usage/cmd/reset.rst new file mode 100644 index 0000000000..384d5d60f8 --- /dev/null +++ b/doc/usage/cmd/reset.rst @@ -0,0 +1,26 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +reset command +============= + +Synopsis +-------- + +:: + + reset [-w] + +Description +----------- + +Perform reset of the CPU. By default does COLD reset, which resets CPU, +DDR and peripherals, on some boards also resets external PMIC. + +-w + Do warm WARM, reset CPU but keep peripheral/DDR/PMIC active. + + +Return value +------------ + +The return value $? is always set to 0 (true). diff --git a/doc/usage/cmd/sbi.rst b/doc/usage/cmd/sbi.rst new file mode 100644 index 0000000000..96d8861057 --- /dev/null +++ b/doc/usage/cmd/sbi.rst @@ -0,0 +1,49 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +sbi command +=========== + +Synopsis +-------- + +:: + + sbi + +Description +----------- + +The sbi command is used to display information about the SBI (Supervisor Binary +Interface) implementation on RISC-V systems. + +The output may look like: + +:: + + => sbi + SBI 0.2 + OpenSBI + Extensions: + sbi_set_timer + sbi_console_putchar + sbi_console_getchar + sbi_clear_ipi + sbi_send_ipi + sbi_remote_fence_i + sbi_remote_sfence_vma + sbi_remote_sfence_vma_asid + sbi_shutdown + SBI Base Functionality + Timer Extension + IPI Extension + RFENCE Extension + Hart State Management Extension + +The first line indicates the version of the RISC-V SBI specification. +The second line indicates the implementation. +The further lines enumerate the implemented extensions. + +Configuration +------------- + +To use the sbi command you must specify CONFIG_CMD_SBI=y. diff --git a/doc/usage/cmd/scp03.rst b/doc/usage/cmd/scp03.rst new file mode 100644 index 0000000000..7ff87ed85a --- /dev/null +++ b/doc/usage/cmd/scp03.rst @@ -0,0 +1,33 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +scp03 command +============= + +Synopsis +-------- + +:: + + scp03 enable + scp03 provision + +Description +----------- + +The *scp03* command calls into a Trusted Application executing in a +Trusted Execution Environment to enable (if present) the Secure +Channel Protocol 03 stablished between the processor and the secure +element. + +This protocol encrypts all the communication between the processor and +the secure element using a set of pre-defined keys. These keys can be +rotated (provisioned) using the *provision* request. + +See also +-------- + +For some information on the internals implemented in the TEE, please +check the GlobalPlatform documentation on `Secure Channel Protocol '03'`_ + +.. _Secure Channel Protocol '03': + https://globalplatform.org/wp-content/uploads/2014/07/GPC_2.3_D_SCP03_v1.1.2_PublicRelease.pdf diff --git a/doc/usage/cmd/setexpr.rst b/doc/usage/cmd/setexpr.rst new file mode 100644 index 0000000000..2e511b1290 --- /dev/null +++ b/doc/usage/cmd/setexpr.rst @@ -0,0 +1,148 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +setexpr command +=============== + +Synopsis +-------- + +:: + + setexpr[.b, .w, .l .s] <name> [*]<value> <op> [*]<value2> + setexpr[.b, .w, .l] <name> [*]<value> + setexpr <name> fmt <format> [value]... + setexpr <name> gsub r s [t] + setexpr <name> sub r s [t] + +Description +----------- + +The setexpr command is used to set an environment variable to the result +of an evaluation. + +setexpr[.b, .w, .l .s] <name> [*]<value> <op> [*]<value2> + Set environment variable <name> to the result of the evaluated + expression specified by <op>. + +setexpr[.b, .w, .l] name [*]value + Load <value> into environment variable <name> + +setexpr name fmt <format> value + Set environment variable <name> to the result of the C like + format string <format> evaluation of <value>. + +setexpr name gsub <r> <s> [<t>] + For each substring matching the regular expression <r> in the + string <t>, substitute the string <s>. + The result is assigned to <name>. + If <t> is not supplied, use the old value of <name>. + +setexpr name sub <r> <s> [<t>] + Just like gsub(), but replace only the first matching substring + +The setexpr command takes the following arguments: + +format + This parameter contains a C or Bash like format string. + The number of arguments is limited to 4. + The following format types are supported: + + c + single character + d, i + decimal value + o + octal value + s + string + u + unsigned decimal value + x, X + hexadecimal value + '%' + no conversion, instead a % character will be written + + Backslash escapes: + + \" = double quote + \\ = backslash + \a = alert (bell) + \b = backspace + \c = produce no further output + \f = form feed + \n = new line + \r = carriage return + \t = horizontal tab + \v = vertical tab + \NNN = octal number (NNN is 0 to 3 digits) + +name + The name of the environment variable to be set + +op + '|' + name = value | value2 + '&' + name = value & value2 + '+' + name = value + value2 + (This is the only operator supported for strings. + It acts as concatenation operator on strings) + '^' + name = value ^ value2 + '-' + name = value - value2 + '*' + name = value * value2 + '/' + name = value / value2 + '%' + name = value % value2 + +r + Regular expression + +s + Substitution string + +t + string + +value + Can either be an integer value, a string. + If the pointer prefix '*' is given value is treated as memory address. + +value2 + See value + +Example +------- + +:: + + => setexpr foo fmt %d 0x100 + => echo $foo + 256 + => + + => setexpr foo fmt 0x%08x 63 + => echo $foo + 0x00000063 + => + + => setexpr foo fmt %%%o 8 + => echo $foo + %10 + => + +Configuration +------------- + +The setexpr gsub and sub operations are only available if CONFIG_REGEX=y. + +Return value +------------ + +The return value $? is set to 0 (true) if the operation was successful. + +If an error occurs, the return value $? is set to 1 (false). diff --git a/doc/usage/cmd/sf.rst b/doc/usage/cmd/sf.rst new file mode 100644 index 0000000000..71bd1be517 --- /dev/null +++ b/doc/usage/cmd/sf.rst @@ -0,0 +1,245 @@ +.. SPDX-License-Identifier: GPL-2.0+: + +sf command +========== + +Synopis +------- + +:: + + sf probe [[[<bus>:]<cs>] [<hz> [<mode>]]] + sf read <addr> <offset>|<partition> <len> + sf write <addr> <offset>|<partition> <len> + sf erase <offset>|<partition> <len> + sf update <addr> <offset>|<partition> <len> + sf protect lock|unlock <sector> <len> + sf test <offset>|<partition> <len> + +Description +----------- + +The *sf* command is used to access SPI flash, supporting read/write/erase and +a few other functions. + +Probe +----- + +The flash must first be probed with *sf probe* before any of the other +subcommands can be used. All of the parameters are optional: + +bus + SPI bus number containing the SPI-flash chip, e.g. 0. If you don't know + the number, you can use 'dm uclass' to see all the spi devices, + and check the value for 'seq' for each one (here 0 and 2):: + + uclass 89: spi + 0 spi@0 @ 05484960, seq 0 + 1 spi@1 @ 05484b40, seq 2 + +cs + SPI chip-select to use for the chip. This is often 0 and can be omitted, + but in some cases multiple slaves are attached to a SPI controller, + selected by a chip-select line for each one. + +hz + Speed of the SPI bus in hertz. This normally defaults to 100000, i.e. + 100KHz, which is very slow. Note that if the device exists in the + device tree, there might be a speed provided there, in which case this + setting is ignored. + +mode + SPI mode to use: + + ===== ================ + Mode Meaning + ===== ================ + 0 CPOL=0, CPHA=0 + 1 CPOL=0, CPHA=1 + 2 CPOL=1, CPHA=0 + 3 CPOL=1, CPHA=1 + ===== ================ + + Clock phase (CPHA) 0 means that data is transferred (sampled) on the + first clock edge; 1 means the second. + + Clock polarity (CPOL) controls the idle state of the clock, 0 for low, + 1 for high. + The active state is the opposite of idle. + + You may find this `SPI documentation`_ useful. + +Parameters for other subcommands (described below) are as follows: + +addr + Memory address to start transfer + +offset + Flash offset to start transfer + +partition + If the parameter is not numeric, it is assumed to be a partition + description in the format <dev_type><dev_num>,<part_num> which is not + covered here. This requires CONFIG_CMD_MTDPARTS. + +len + Number of bytes to transfer + +Read +~~~~ + +Use *sf read* to read from SPI flash to memory. The read will fail if an +attempt is made to read past the end of the flash. + + +Write +~~~~~ + +Use *sf write* to write from memory to SPI flash. The SPI flash should be +erased first, since otherwise the result is undefined. + +The write will fail if an attempt is made to read past the end of the flash. + + +Erase +~~~~~ + +Use *sf erase* to erase a region of SPI flash. The erase will fail if any part +of the region to be erased is protected or lies past the end of the flash. It +may also fail if the start offset or length are not aligned to an erase region +(e.g. 256 bytes). + + +Update +~~~~~~ + +Use *sf update* to automatically erase and update a region of SPI flash from +memory. This works a sector at a time (typical 4KB or 64KB). For each +sector it first checks if the sector already has the right data. If so it is +skipped. If not, the sector is erased and the new data written. Note that if +the length is not a multiple of the erase size, the space after the data in +the last sector will be erased. If the offset does not start at the beginning +of an erase block, the operation will fail. + +Speed statistics are shown including the number of bytes that were already +correct. + + +Protect +~~~~~~~ + +SPI-flash chips often have a protection feature where the chip is split up into +regions which can be locked or unlocked. With *sf protect* it is possible to +change these settings, if supported by the driver. + +lock|unlock + Selects whether to lock or unlock the sectors + +<sector> + Start sector number to lock/unlock. This may be the byte offset or some + other value, depending on the chip. + +<len> + Number of bytes to lock/unlock + + +Test +~~~~ + +A convenient and fast *sf test* subcommand provides a way to check that SPI +flash is working as expected. This works in four stages: + + * erase - erases the entire region + * check - checks that the region is erased + * write - writes a test pattern to the region, consisting of the U-Boot code + * read - reads back the test pattern to check that it was written correctly + +Memory is allocated for two buffers, each <len> bytes in size. At typical +size is 64KB to 1MB. The offset and size must be aligned to an erase boundary. + +Note that this test will fail if any part of the SPI flash is write-protected. + + +Examples +-------- + +This first example uses sandbox:: + + => sf probe + SF: Detected m25p16 with page size 256 Bytes, erase size 64 KiB, total 2 MiB + => sf read 1000 1100 80000 + device 0 offset 0x1100, size 0x80000 + SF: 524288 bytes @ 0x1100 Read: OK + => md 1000 + 00001000: edfe0dd0 f33a0000 78000000 84250000 ......:....x..%. + 00001010: 28000000 11000000 10000000 00000000 ...(............ + 00001020: 6f050000 0c250000 00000000 00000000 ...o..%......... + 00001030: 00000000 00000000 00000000 00000000 ................ + 00001040: 00000000 00000000 00000000 00000000 ................ + 00001050: 00000000 00000000 00000000 00000000 ................ + 00001060: 00000000 00000000 00000000 00000000 ................ + 00001070: 00000000 00000000 01000000 00000000 ................ + 00001080: 03000000 04000000 00000000 01000000 ................ + 00001090: 03000000 04000000 0f000000 01000000 ................ + 000010a0: 03000000 08000000 1b000000 646e6173 ............sand + 000010b0: 00786f62 03000000 08000000 21000000 box............! + 000010c0: 646e6173 00786f62 01000000 61696c61 sandbox.....alia + 000010d0: 00736573 03000000 07000000 2c000000 ses............, + 000010e0: 6332692f 00003040 03000000 07000000 /i2c@0.......... + 000010f0: 31000000 6963702f 00003040 03000000 ...1/pci@0...... + => sf erase 0 80000 + SF: 524288 bytes @ 0x0 Erased: OK + => sf read 1000 1100 80000 + device 0 offset 0x1100, size 0x80000 + SF: 524288 bytes @ 0x1100 Read: OK + => md 1000 + 00001000: ffffffff ffffffff ffffffff ffffffff ................ + 00001010: ffffffff ffffffff ffffffff ffffffff ................ + 00001020: ffffffff ffffffff ffffffff ffffffff ................ + 00001030: ffffffff ffffffff ffffffff ffffffff ................ + 00001040: ffffffff ffffffff ffffffff ffffffff ................ + 00001050: ffffffff ffffffff ffffffff ffffffff ................ + 00001060: ffffffff ffffffff ffffffff ffffffff ................ + 00001070: ffffffff ffffffff ffffffff ffffffff ................ + 00001080: ffffffff ffffffff ffffffff ffffffff ................ + 00001090: ffffffff ffffffff ffffffff ffffffff ................ + 000010a0: ffffffff ffffffff ffffffff ffffffff ................ + 000010b0: ffffffff ffffffff ffffffff ffffffff ................ + 000010c0: ffffffff ffffffff ffffffff ffffffff ................ + 000010d0: ffffffff ffffffff ffffffff ffffffff ................ + 000010e0: ffffffff ffffffff ffffffff ffffffff ................ + 000010f0: ffffffff ffffffff ffffffff ffffffff ................ + +This second example is running on coral, an x86 Chromebook:: + + => sf probe + SF: Detected w25q128fw with page size 256 Bytes, erase size 4 KiB, total 16 MiB + => sf erase 300000 80000 + SF: 524288 bytes @ 0x300000 Erased: OK + => sf update 1110000 300000 80000 + device 0 offset 0x300000, size 0x80000 + 524288 bytes written, 0 bytes skipped in 0.457s, speed 1164578 B/s + + # This does nothing as the flash is already updated + => sf update 1110000 300000 80000 + device 0 offset 0x300000, size 0x80000 + 0 bytes written, 524288 bytes skipped in 0.196s, speed 2684354 B/s + => sf test 00000 80000 # try a protected region + SPI flash test: + Erase failed (err = -5) + Test failed + => sf test 800000 80000 + SPI flash test: + 0 erase: 18 ticks, 28444 KiB/s 227.552 Mbps + 1 check: 192 ticks, 2666 KiB/s 21.328 Mbps + 2 write: 227 ticks, 2255 KiB/s 18.040 Mbps + 3 read: 189 ticks, 2708 KiB/s 21.664 Mbps + Test passed + 0 erase: 18 ticks, 28444 KiB/s 227.552 Mbps + 1 check: 192 ticks, 2666 KiB/s 21.328 Mbps + 2 write: 227 ticks, 2255 KiB/s 18.040 Mbps + 3 read: 189 ticks, 2708 KiB/s 21.664 Mbps + + +.. _SPI documentation: + https://en.wikipedia.org/wiki/Serial_Peripheral_Interface diff --git a/doc/usage/cmd/size.rst b/doc/usage/cmd/size.rst new file mode 100644 index 0000000000..f0c35e4826 --- /dev/null +++ b/doc/usage/cmd/size.rst @@ -0,0 +1,40 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +size command +============ + +Synopsis +-------- + +:: + + size <interface> <dev[:part]> <filename> + +Description +----------- + +The size command determines the size of a file and sets the environment variable +filesize to this value. If filename points to a directory, the value is set to +zero. + +If the command fails, the filesize environment variable is not changed. + +dev + device number + +part + partition number, defaults to 1 + +filename + path to file + +Configuration +------------- + +The size command is only available if CONFIG_CMD_FS_GENERIC=y. + +Return value +------------ + +The return value $? is set to 0 (true) if the command succeded and to 1 (false) +otherwise. diff --git a/doc/usage/cmd/true.rst b/doc/usage/cmd/true.rst new file mode 100644 index 0000000000..f9ef71b2d1 --- /dev/null +++ b/doc/usage/cmd/true.rst @@ -0,0 +1,28 @@ +true command +============ + +Synopsis +-------- + +:: + + true + +Description +----------- + +The true command sets the return value $? to 0 (true). + +Example +------- + +:: + + => true; echo $? + 0 + => + +Configuration +------------- + +The true command is only available if CONFIG_HUSH_PARSER=y. diff --git a/doc/usage/cmd/ums.rst b/doc/usage/cmd/ums.rst new file mode 100644 index 0000000000..3cde5fa1f2 --- /dev/null +++ b/doc/usage/cmd/ums.rst @@ -0,0 +1,57 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +ums command +=========== + +Synopsis +-------- + +:: + + ums <dev> [<interface>] <devnum[:partnum]> + +Description +----------- + +Use the USB Mass Storage class (also known as UMS) to make accessible an U-Boot +block device (fully or with :ref:`U-Boot's partition syntax <partitions>`) +to a USB host and to enable file transfers. U-Boot, the USB device, acts as a +simple external hard drive plugged on the host USB port. + +This command "ums" stays in the USB's treatment loop until user enters Ctrl-C. + +dev + USB gadget device number + +interface + interface for accessing the block device (mmc, sata, scsi, usb, ....) + defaults is "mmc" + +devnum + device number for selected interface + +partnum + partition number or 0 to expose all partitions, defaults to 0 + +Example +------- + +:: + + => ums 0 mmc 0 + => ums 0 usb 1:2 + +Configuration +------------- + +The ums command is only available if CONFIG_CMD_USB_MASS_STORAGE=y +and depends on CONFIG_USB_USB_GADGET and CONFIG_BLK. + +Return value +------------ + +The return value $? is set to 0 (true) when the USB stack was successfully +started and interrupted, with Ctrl-C or after USB cable issue (detection +timeout or cable removal). + +If an error occurs, the return value $? is set to 1 (false). diff --git a/doc/usage/cmd/wdt.rst b/doc/usage/cmd/wdt.rst new file mode 100644 index 0000000000..8d80433c1f --- /dev/null +++ b/doc/usage/cmd/wdt.rst @@ -0,0 +1,77 @@ +.. SPDX-License-Identifier: GPL-2.0+: + +wdt command +============ + +Synopsis +-------- + +:: + + wdt list + wdt dev [<name>] + wdt start <timeout_ms> [flags] + wdt stop + wdt reset + wdt expirer [flags] + +Description +----------- + +The wdt command is used to control watchdog timers. + +The 'wdt list' command shows a list of all watchdog devices. + +The 'wdt dev' command called without argument shows the current watchdog device. +The current device is set when passing the name of the device as argument. + +The 'wdt start' command starts the current watchdog timer. + +The 'wdt stop' command stops the current watchdog timer. + +The 'wdt reset' command resets the current watchdog timer without stopping it. + +The 'wdt expire' command let's the current watchdog timer expire immediately. +This will lead to a reset. + +name + name of the watchdog device + +timeout_ms + timeout interval in milliseconds + +flags + unsigned long value passed to the driver. The usage is driver specific. + The value is ignored by most drivers. + +Example +------- + +:: + + => wdt dev + No watchdog timer device set! + => wdt list + watchdog@1c20ca0 (sunxi_wdt) + => wdt dev watchdog@1c20ca0 + => wdt dev + dev: watchdog@1c20ca0 + => wdt start 3000 + => wdt reset + => wdt stop + => wdt expire + + U-Boot SPL 2022.04-rc3 (Mar 25 2022 - 13:48:33 +0000) + + In the example above '(sunxi_wdt)' refers to the driver for the watchdog + device. + +Configuration +------------- + +The command is only available if CONFIG_CMD_WDT=y. + +Return value +------------ + +The return value $? is 0 if the command succeeds, 1 upon failure. diff --git a/doc/usage/conitrace.rst b/doc/usage/conitrace.rst deleted file mode 100644 index d9916c865e..0000000000 --- a/doc/usage/conitrace.rst +++ /dev/null @@ -1,54 +0,0 @@ -conitrace command -================= - -Synopsis --------- - -:: - - conitrace - -Description ------------ - -The conitrace command is used to test the correct function of the console input -driver. It is especially valuable for checking the support for special keys like -<F1> or <POS1>. - -To display escape sequences on a single line the output only advances to the -next line after detecting a pause of a few milliseconds. - -The output is hexadecimal. - -Examples --------- - -Entering keys <B><SHIFT-B><CTRL-B><X> - -:: - - => conitrace - Waiting for your input - To terminate type 'x' - 62 - 42 - 02 - => - -Entering keys <F1><POS1><DEL><BACKSPACE><X> - -:: - - => conitrace - Waiting for your input - To terminate type 'x' - 1b 4f 50 - 1b 5b 48 - 1b 5b 33 7e - 7f - => - -Configuration -------------- - -The conitrace command is only available if CONFIG_CMD_CONITRACE=y. diff --git a/doc/usage/echo.rst b/doc/usage/echo.rst deleted file mode 100644 index 861abdfd1e..0000000000 --- a/doc/usage/echo.rst +++ /dev/null @@ -1,65 +0,0 @@ -echo command -============ - -Synopsis --------- - -:: - - echo [-n] [args ...] - -Description ------------ - -The echo command prints its arguments to the console separated by spaces. - --n - Do not print a line feed after the last argument. - -args - Arguments to be printed. The arguments are evaluated before being passed to - the command. - -Examples --------- - -Strings are parsed before the arguments are passed to the echo command: - -:: - - => echo "a" 'b' c - a b c - => - -Observe how variables included in strings are handled: - -:: - - => setenv var X; echo "a)" ${var} 'b)' '${var}' c) ${var} - a) X b) ${var} c) X - => - - --n suppresses the line feed: - -:: - - => echo -n 1 2 3; echo a b c - 1 2 3a b c - => echo -n 1 2 3 - 1 2 3=> - -A more complex example: - -:: - - => for i in a b c; do for j in 1 2 3; do echo -n "${i}${j}, "; done; echo; done; - a1, a2, a3, - b1, b2, b3, - c1, c2, c3, - => - -Return value ------------- - -The return value $? is always set to 0 (true). diff --git a/doc/usage/exception.rst b/doc/usage/exception.rst deleted file mode 100644 index 27df88bd5c..0000000000 --- a/doc/usage/exception.rst +++ /dev/null @@ -1,66 +0,0 @@ -exception command -================= - -Synopsis --------- - -:: - - exception <type> - -Description ------------ - -The exception command is used to test the handling of exceptions like undefined -instructions, segmentation faults or alignment faults. - -type - type of exception to be generated. The available types are architecture - dependent. Use 'help exception' to determine which are available. - - **ARM:** - - breakpoint - prefetch abort - - unaligned - data abort - - undefined - undefined instruction - - **RISC-V:** - - ebreak - breakpoint exception - - unaligned - load address misaligned - - undefined - undefined instruction - - **Sandbox:** - - sigsegv - illegal memory access - - undefined - undefined instruction - - **x86:** - - undefined - undefined instruction - -Examples --------- - -:: - - => exception undefined - - Illegal instruction - pc = 0x56076dd1a0f9, pc_reloc = 0x540f9 - - resetting ... diff --git a/doc/usage/exit.rst b/doc/usage/exit.rst deleted file mode 100644 index 769223c477..0000000000 --- a/doc/usage/exit.rst +++ /dev/null @@ -1,40 +0,0 @@ -exit command -============ - -Synopsis --------- - -:: - - exit - -Description ------------ - -The exit command terminates a script started via the run or source command. -If scripts are nested, only the innermost script is left. - -:: - - => setenv inner 'echo entry inner; exit; echo inner done' - => setenv outer 'echo entry outer; run inner; echo outer done' - => run outer - entry outer - entry inner - outer done - => - -When executed outside a script a warning is written. Following commands are not -executed. - -:: - - => echo first; exit; echo last - first - exit not allowed from main input shell. - => - -Return value ------------- - -$? is always set to 0 (true). diff --git a/doc/usage/extension.rst b/doc/usage/extension.rst deleted file mode 100644 index 2b88398b18..0000000000 --- a/doc/usage/extension.rst +++ /dev/null @@ -1,111 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+ -.. Copyright 2021, Kory Maincent <kory.maincent@bootlin.com> - -U-Boot extension board usage (CONFIG_EXTENSION) -=============================================== - -Synopsis --------- - -:: - - extension scan - extension list - extension apply <extension number|all> - -Description ------------ - -The "extension" command proposes a generic U-Boot mechanism to detect -extension boards connected to the HW platform, and apply the appropriate -Device Tree overlays depending on the detected extension boards. - -The "extension" command comes with three sub-commands: - - - "extension scan" makes the generic code call the board-specific - extension_board_scan() function to retrieve the list of detected - extension boards. - - - "extension list" allows to list the detected extension boards. - - - "extension apply <number>|all" allows to apply the Device Tree - overlay(s) corresponding to one, or all, extension boards - -The latter requires two environment variables to exist: - - - extension_overlay_addr: the RAM address where to load the Device - Tree overlays - - - extension_overlay_cmd: the U-Boot command to load one overlay. - Indeed, the location and mechanism to load DT overlays is very setup - specific. - -In order to enable this mechanism, board-specific code must implement -the extension_board_scan() function that fills in a linked list of -"struct extension", each describing one extension board. In addition, -the board-specific code must select the SUPPORT_EXTENSION_SCAN Kconfig -boolean. - -Usage example -------------- - -1. Make sure your devicetree is loaded and set as the working fdt tree. - -:: - - => run loadfdt - => fdt addr $fdtaddr - -2. Prepare the environment variables - -:: - - => setenv extension_overlay_addr 0x88080000 - => setenv extension_overlay_cmd 'load mmc 0:1 ${extension_overlay_addr} /boot/${extension_overlay_name}' - -3. Detect the plugged extension board - -:: - - => extension scan - -4. List the plugged extension board information and the devicetree - overlay name - -:: - - => extension list - -5. Apply the appropriate devicetree overlay - -For apply the selected overlay: - -:: - - => extension apply 0 - -For apply all the overlays: - -:: - - => extension apply all - -Simple extension_board_scan function example --------------------------------------------- - -.. code-block:: c - - int extension_board_scan(struct list_head *extension_list) - { - struct extension *extension; - - extension = calloc(1, sizeof(struct extension)); - snprintf(extension->overlay, sizeof(extension->overlay), "overlay.dtbo"); - snprintf(extension->name, sizeof(extension->name), "extension board"); - snprintf(extension->owner, sizeof(extension->owner), "sandbox"); - snprintf(extension->version, sizeof(extension->version), "1.1"); - snprintf(extension->other, sizeof(extension->other), "Extension board information"); - list_add_tail(&extension->list, extension_list); - - return 1; - } diff --git a/doc/usage/false.rst b/doc/usage/false.rst deleted file mode 100644 index a17fe86021..0000000000 --- a/doc/usage/false.rst +++ /dev/null @@ -1,28 +0,0 @@ -false command -============= - -Synopsis --------- - -:: - - false - -Description ------------ - -The false command sets the return value $? to 1 (false). - -Example -------- - -:: - - => false; echo $? - 1 - => - -Configuration -------------- - -The false command is only available if CONFIG_HUSH_PARSER=y. diff --git a/doc/usage/fatinfo.rst b/doc/usage/fatinfo.rst deleted file mode 100644 index af2eba4344..0000000000 --- a/doc/usage/fatinfo.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+: - -fatinfo command -=============== - -Synopsis --------- - -:: - - fatinfo <interface> <dev[:part]> - -Description ------------ - -The fatinfo command displays information about a FAT partition. - -interface - interface for accessing the block device (mmc, sata, scsi, usb, ....) - -dev - device number - -part - partition number, defaults to 1 - -Example -------- - -Here is the output for a partition on a 32 GB SD-Card: - -:: - - => fatinfo mmc 0:1 - Interface: MMC - Device 0: Vendor: Man 00001b Snr 97560602 Rev: 13.8 Prod: EB1QT0 - Type: Removable Hard Disk - Capacity: 30528.0 MB = 29.8 GB (62521344 x 512) - Filesystem: FAT32 "MYDISK " - => - -Configuration -------------- - -The fatinfo command is only available if CONFIG_CMD_FAT=y. - -Return value ------------- - -The return value $? is set to 0 (true) if the partition is a FAT partition. -Otherwise it is set to 1 (false). diff --git a/doc/usage/fatload.rst b/doc/usage/fatload.rst deleted file mode 100644 index 93acb27a53..0000000000 --- a/doc/usage/fatload.rst +++ /dev/null @@ -1,80 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+: - -fatload command -=============== - -Synopsis --------- - -:: - - fatload <interface> [<dev[:part]> [<addr> [<filename> [bytes [pos]]]]] - -Description ------------ - -The fatload command is used to read a file from a FAT filesystem into memory. -You can always use the :doc:`load command <load>` instead. - -The number of transferred bytes is saved in the environment variable filesize. -The load address is saved in the environment variable fileaddr. - -interface - interface for accessing the block device (mmc, sata, scsi, usb, ....) - -dev - device number - -part - partition number, defaults to 0 (whole device) - -addr - load address, defaults to environment variable loadaddr or if loadaddr is - not set to configuration variable CONFIG_SYS_LOAD_ADDR - -filename - path to file, defaults to environment variable bootfile - -bytes - maximum number of bytes to load - -pos - number of bytes to skip - -addr, bytes, pos are hexadecimal numbers. - -If either 'pos' or 'bytes' are not aligned according to the minimum alignment -requirement for DMA transfer (ARCH_DMA_MINALIGN) additional buffering will be -used, a misaligned buffer warning will be printed, and performance will suffer -for the load. - -Example -------- - -:: - - => fatload mmc 0:1 ${kernel_addr_r} snp.efi - 149280 bytes read in 11 ms (12.9 MiB/s) - => - => fatload mmc 0:1 ${kernel_addr_r} snp.efi 1000000 - 149280 bytes read in 9 ms (15.8 MiB/s) - => - => fatload mmc 0:1 ${kernel_addr_r} snp.efi 1000000 100 - 149024 bytes read in 10 ms (14.2 MiB/s) - => - => fatload mmc 0:1 ${kernel_addr_r} snp.efi 10 - 16 bytes read in 1 ms (15.6 KiB/s) - => - -Configuration -------------- - -The fatload command is only available if CONFIG_CMD_FAT=y. - -Return value ------------- - -The return value $? is set to 0 (true) if the file was successfully loaded -even if the number of bytes is less then the specified length. - -If an error occurs, the return value $? is set to 1 (false). diff --git a/doc/usage/for.rst b/doc/usage/for.rst deleted file mode 100644 index f9e504979c..0000000000 --- a/doc/usage/for.rst +++ /dev/null @@ -1,65 +0,0 @@ -for command -=========== - -Synopis -------- - -:: - - for <variable> in <items>; do <commands>; done - -Description ------------ - -The for command is used to loop over a list of values and execute a series of -commands for each of these. - -The counter variable of the loop is a shell variable. Please, keep in mind that -an environment variable takes precedence over a shell variable of the same name. - -variable - name of the counter variable - -items - space separated item list - -commands - commands to execute - -Example -------- - -:: - - => setenv c - => for c in 1 2 3; do echo item ${c}; done - item 1 - item 2 - item 3 - => echo ${c} - 3 - => setenv c x - => for c in 1 2 3; do echo item ${c}; done - item x - item x - item x - => - -The first line ensures that there is no environment variable *c*. Hence in the -first loop the shell variable *c* is printed. - -After defining an environment variable of name *c* it takes precedence over the -shell variable and the environment variable is printed. - -Return value ------------- - -The return value $? after the done statement is the return value of the last -statement executed in the loop. - -:: - - => for i in true false; do ${i}; done; echo $? - 1 - => for i in false true; do ${i}; done; echo $? - 0 diff --git a/doc/usage/index.rst b/doc/usage/index.rst index 630a6cb28a..5bfe31a496 100644 --- a/doc/usage/index.rst +++ b/doc/usage/index.rst @@ -18,38 +18,38 @@ Shell commands .. toctree:: :maxdepth: 1 - acpi - addrmap - askenv - base - bootefi - booti - bootmenu - button - x86/cbsysinfo - conitrace - echo - exception - extension - exit - false - fatinfo - fatload - for - load - loady - mbr - md - mmc - pinmux - pstore - qfw - reset - sbi - sf - scp03 - setexpr - size - true - ums - wdt + cmd/acpi + cmd/addrmap + cmd/askenv + cmd/base + cmd/bootefi + cmd/booti + cmd/bootmenu + cmd/button + cmd/cbsysinfo + cmd/conitrace + cmd/echo + cmd/exception + cmd/extension + cmd/exit + cmd/false + cmd/fatinfo + cmd/fatload + cmd/for + cmd/load + cmd/loady + cmd/mbr + cmd/md + cmd/mmc + cmd/pinmux + cmd/pstore + cmd/qfw + cmd/reset + cmd/sbi + cmd/sf + cmd/scp03 + cmd/setexpr + cmd/size + cmd/true + cmd/ums + cmd/wdt diff --git a/doc/usage/load.rst b/doc/usage/load.rst deleted file mode 100644 index 1efee77317..0000000000 --- a/doc/usage/load.rst +++ /dev/null @@ -1,74 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+: - -load command -============ - -Synopsis --------- - -:: - - load <interface> [<dev[:part]> [<addr> [<filename> [bytes [pos]]]]] - -Description ------------ - -The load command is used to read a file from a filesystem into memory. - -The number of transferred bytes is saved in the environment variable filesize. -The load address is saved in the environment variable fileaddr. - -interface - interface for accessing the block device (mmc, sata, scsi, usb, ....) - -dev - device number - -part - partition number, defaults to 0 (whole device) - -addr - load address, defaults to environment variable loadaddr or if loadaddr is - not set to configuration variable CONFIG_SYS_LOAD_ADDR - -filename - path to file, defaults to environment variable bootfile - -bytes - maximum number of bytes to load - -pos - number of bytes to skip - -addr, bytes, pos are hexadecimal numbers. - -Example -------- - -:: - - => load mmc 0:1 ${kernel_addr_r} snp.efi - 149280 bytes read in 11 ms (12.9 MiB/s) - => - => load mmc 0:1 ${kernel_addr_r} snp.efi 1000000 - 149280 bytes read in 9 ms (15.8 MiB/s) - => - => load mmc 0:1 ${kernel_addr_r} snp.efi 1000000 100 - 149024 bytes read in 10 ms (14.2 MiB/s) - => - => load mmc 0:1 ${kernel_addr_r} snp.efi 10 - 16 bytes read in 1 ms (15.6 KiB/s) - => - -Configuration -------------- - -The load command is only available if CONFIG_CMD_FS_GENERIC=y. - -Return value ------------- - -The return value $? is set to 0 (true) if the file was successfully loaded -even if the number of bytes is less then the specified length. - -If an error occurs, the return value $? is set to 1 (false). diff --git a/doc/usage/loady.rst b/doc/usage/loady.rst deleted file mode 100644 index 2819cc72ae..0000000000 --- a/doc/usage/loady.rst +++ /dev/null @@ -1,67 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+: - -loady command -============= - -Synopsis --------- - -:: - - loady [addr [baud]] - -Description ------------ - -The loady command is used to transfer a file to the device via the serial line -using the YMODEM protocol. - -The number of transferred bytes is saved in environment variable filesize. - -addr - load address, defaults to environment variable loadaddr or if loadaddr is - not set to configuration variable CONFIG_SYS_LOAD_ADDR - -baud - baud rate for the ymodem transmission. After the transmission the baud - rate is reset to the original value. - -Example -------- - -In the example below the terminal emulation program picocom was used to -transfer a file to the device. - -After entering the loady command the key sequence <CTRL-A><CTRL-S> is used to -let picocom prompt for the file name. Picocom invokes the program sz for the -file transfer. - -:: - - => loady 80064000 115200 - ## Ready for binary (ymodem) download to 0x80064000 at 115200 bps... - C - *** file: BOOTRISCV64.EFI - $ sz -b -vv BOOTRISCV64.EFI - Sending: BOOTRISCV64.EFI - Bytes Sent: 398976 BPS:7883 - Sending: - Ymodem sectors/kbytes sent: 0/ 0k - Transfer complete - - *** exit status: 0 *** - /1(CAN) packets, 4 retries - ## Total Size = 0x0006165f = 398943 Bytes - => echo ${filesize} - 6165f - => - -Configuration -------------- - -The command is only available if CONFIG_CMD_LOADB=y. - -Return value ------------- - -The return value $? is always 0 (true). diff --git a/doc/usage/mbr.rst b/doc/usage/mbr.rst deleted file mode 100644 index bddf2f612a..0000000000 --- a/doc/usage/mbr.rst +++ /dev/null @@ -1,94 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+ - -mbr command -=========== - -Synopsis --------- - -:: - - mbr verify [interface] [device no] [partition list] - mbr write [interface] [device no] [partition list] - -Description ------------ - -The mbr command lets users create or verify the MBR (Master Boot Record) -partition layout based on the provided text description. The partition -layout is alternatively read from the 'mbr_parts' environment variable. -This can be used in scripts to help system image flashing tools to ensure -proper partition layout. - -The syntax of the text description of the partition list is similar to -the one used by the 'gpt' command. - -Supported partition parameters are: - -* name (currently ignored) -* start (partition start offset in bytes) -* size (in bytes or '-' to expand it to the whole free area) -* bootable (boolean flag) -* id (MBR partition type) - -If one wants to create more than 4 partitions, an 'Extended' primary -partition (with 0x05 ID) has to be explicitly provided as a one of the -first 4 entries. - -Here is an example how to create a 6 partitions (3 on the 'extended -volume'), some of the predefined sizes: - -:: - - => setenv mbr_parts 'name=boot,start=4M,size=128M,bootable,id=0x0e; - name=rootfs,size=3072M,id=0x83; - name=system-data,size=512M,id=0x83; - name=[ext],size=-,id=0x05; - name=user,size=-,id=0x83; - name=modules,size=100M,id=0x83; - name=ramdisk,size=8M,id=0x83' - => mbr write mmc 0 - -To check if the layout on the MMC #0 storage device matches the provided -text description one has to issue following command (assuming that -mbr_parts environment variable is set): - -:: - - => mbr verify mmc 0 - -The verify sub-command is especially useful in the system update scripts: - -:: - - => if mbr verify mmc 0; then - echo MBR layout needs to be updated - ... - fi - -The 'mbr write' command returns 0 on success write or 1 on failure. - -The 'mbr verify' returns 0 if the layout matches the one on the storage -device or 1 if not. - -Configuration -------------- - -To use the mbr command you must specify CONFIG_CMD_MBR=y. - -Return value ------------- - -The variable *$?* takes the following values - -+---+------------------------------+ -| 0 | mbr write was succesful | -+---+------------------------------+ -| 1 | mbr write failed | -+---+------------------------------+ -| 0 | mbr verify was succesful | -+---+------------------------------+ -| 1 | mbr verify was not succesful | -+---+------------------------------+ -|-1 | invalid arguments | -+---+------------------------------+ diff --git a/doc/usage/md.rst b/doc/usage/md.rst deleted file mode 100644 index 4c1073ea35..0000000000 --- a/doc/usage/md.rst +++ /dev/null @@ -1,106 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+: - -md command -========== - -Synopis -------- - -:: - - md <address>[<data_size>] [<length>] - -Description ------------ - -The md command is used to dump the contents of memory. It uses a standard -format that includes the address, hex data and ASCII display. It supports -various data sizes and uses the endianness of the target. - -The specified data_size and length become the defaults for future memory -commands commands. - -address - start address to display - -data_size - size of each value to display (defaults to .l): - - ========= =================== - data_size Output size - ========= =================== - .b byte - .w word (16 bits) - .l long (32 bits) - .q quadword (64 bits) - ========= =================== - -length - number of values to dump. Defaults to 40 (0d64). Note that this is not - the same as the number of bytes, unless .b is used. - -Note that the format of 'md.b' can be emulated from linux with:: - - # This works but requires using sed to get the extra spaces - # <addr> is the address, <f> is the filename - xxd -o <addr> -g1 <f> |sed 's/ / /' >bad - - # This uses a single tool but the offset always starts at 0 - # <f> is the filename - hexdump -v -e '"%08.8_ax: " 16/1 "%02x " " "' -e '16/1 "%_p" "\n" ' <f> - - -Example -------- - -:: - - => md 10000 - 00010000: 00010000 00000000 f0f30f00 00005596 .............U.. - 00010010: 10011010 00000000 10011010 00000000 ................ - 00010020: 10011050 00000000 b96d4cd8 00007fff P........Lm..... - 00010030: 00000000 00000000 f0f30f18 00005596 .............U.. - 00010040: 10011040 00000000 10011040 00000000 @.......@....... - 00010050: b96d4cd8 00007fff 10011020 00000000 .Lm..... ....... - 00010060: 00000003 000000c3 00000000 00000000 ................ - 00010070: 00000000 00000000 f0e892f3 00005596 .............U.. - 00010080: 00000000 000000a1 00000000 00000000 ................ - 00010090: 00000000 00000000 f0e38aa6 00005596 .............U.. - 000100a0: 00000000 000000a6 00000022 00000000 ........"....... - 000100b0: 00000001 00000000 f0e38aa1 00005596 .............U.. - 000100c0: 00000000 000000be 00000000 00000000 ................ - 000100d0: 00000000 00000000 00000000 00000000 ................ - 000100e0: 00000000 00000000 00000000 00000000 ................ - 000100f0: 00000000 00000000 00000000 00000000 ................ - => md.b 10000 - 00010000: 00 00 01 00 00 00 00 00 00 0f f3 f0 96 55 00 00 .............U.. - 00010010: 10 10 01 10 00 00 00 00 10 10 01 10 00 00 00 00 ................ - 00010020: 50 10 01 10 00 00 00 00 d8 4c 6d b9 ff 7f 00 00 P........Lm..... - 00010030: 00 00 00 00 00 00 00 00 18 0f f3 f0 96 55 00 00 .............U.. - => md.b 10000 10 - 00010000: 00 00 01 00 00 00 00 00 00 0f f3 f0 96 55 00 00 .............U.. - => - 00010010: 10 10 01 10 00 00 00 00 10 10 01 10 00 00 00 00 ................ - => - 00010020: 50 10 01 10 00 00 00 00 d8 4c 6d b9 ff 7f 00 00 P........Lm..... - => - => md.q 10000 - 00010000: 0000000000010000 00005596f0f30f00 .............U.. - 00010010: 0000000010011010 0000000010011010 ................ - 00010020: 0000000010011050 00007fffb96d4cd8 P........Lm..... - 00010030: 0000000000000000 00005596f0f30f18 .............U.. - 00010040: 0000000010011040 0000000010011040 @.......@....... - 00010050: 00007fffb96d4cd8 0000000010011020 .Lm..... ....... - 00010060: 000000c300000003 0000000000000000 ................ - 00010070: 0000000000000000 00005596f0e892f3 .............U.. - -The empty commands cause a 'repeat', so that md shows the next available data -in the same format as before. - - -Return value ------------- - -The return value $? is always 0 (true). - - diff --git a/doc/usage/mmc.rst b/doc/usage/mmc.rst deleted file mode 100644 index 55e3f9cf98..0000000000 --- a/doc/usage/mmc.rst +++ /dev/null @@ -1,268 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+: - -mmc command -============ - -Synopsis --------- - -:: - - mmc info - mmc read addr blk# cnt - mmc write addr blk# cnt - mmc erase blk# cnt - mmc rescan [mode] - mmc part - mmc dev [dev] [part] [mode] - mmc list - mmc wp - mmc bootbus <dev> <boot_bus_width> <reset_boot_bus_width> <boot_mode> - mmc bootpart-resize <dev> <dev part size MB> <RPMB part size MB> - mmc partconf <dev> [[varname] | [<boot_ack> <boot_partition> <partition_access>]] - mmc rst-function <dev> <value> - -Description ------------ - -The mmc command is used to control MMC(eMMC/SD) device. - -The 'mmc info' command displays information (Manufacturer ID, OEM, Name, Bus Speed, Mode, ...) of MMC device. - -The 'mmc read' command reads raw data to memory address from MMC device with block offset and count. - -The 'mmc write' command writes raw data to MMC device from memory address with block offset and count. - - addr - memory address - blk# - start block offset - cnt - block count - -The 'mmc erase' command erases *cnt* blocks on the MMC device starting at block *blk#*. - - blk# - start block offset - cnt - block count - -The 'mmc rescan' command scans the available MMC device. - - mode - speed mode to set. - CONFIG_MMC_SPEED_MODE_SET should be enabled. The requested speed mode is - passed as a decimal number according to the following table: - - ========== ========================== - Speed mode Description - ========== ========================== - 0 MMC legacy - 1 MMC High Speed (26MHz) - 2 SD High Speed (50MHz) - 3 MMC High Speed (52MHz) - 4 MMC DDR52 (52MHz) - 5 UHS SDR12 (25MHz) - 6 UHS SDR25 (50MHz) - 7 UHS SDR50 (100MHz) - 8 UHS DDR50 (50MHz) - 9 UHS SDR104 (208MHz) - 10 HS200 (200MHz) - 11 HS400 (200MHz) - 12 HS400ES (200MHz) - ========== ========================== - - A speed mode can be set only if it has already been enabled in the device tree - -The 'mmc part' command displays the list available partition on current mmc device. - -The 'mmc dev' command shows or set current mmc device. - - dev - device number to change - part - partition number to change - - mode - speed mode to set. - CONFIG_MMC_SPEED_MODE_SET should be enabled. The requested speed mode is - passed as a decimal number according to the following table: - - ========== ========================== - Speed mode Description - ========== ========================== - 0 MMC legacy - 1 MMC High Speed (26MHz) - 2 SD High Speed (50MHz) - 3 MMC High Speed (52MHz) - 4 MMC DDR52 (52MHz) - 5 UHS SDR12 (25MHz) - 6 UHS SDR25 (50MHz) - 7 UHS SDR50 (100MHz) - 8 UHS DDR50 (50MHz) - 9 UHS SDR104 (208MHz) - 10 HS200 (200MHz) - 11 HS400 (200MHz) - 12 HS400ES (200MHz) - ========== ========================== - - A speed mode can be set only if it has already been enabled in the device tree - -The 'mmc list' command displays the list available devices. - -The 'mmc wp' command enables "power on write protect" function for boot partitions. - -The 'mmc bootbus' command sets the BOOT_BUS_WIDTH field. (*Refer to eMMC specification*) - - boot_bus_width - 0x0 - x1 (sdr) or x4(ddr) buswidth in boot operation mode (default) - 0x1 - x4 (sdr/ddr) buswidth in boot operation mode - 0x2 - x8 (sdr/ddr) buswidth in boot operation mode - 0x3 - Reserved - - reset_boot_bus_width - 0x0 - Reset buswidth to x1, Single data reate and backward compatible timing after boot operation (default) - 0x1 - Retain BOOT_BUS_WIDTH and BOOT_MODE value after boot operation. This is relevant to Push-pull mode operation only - - boot_mode - 0x0 - Use single data rate + backward compatible timing in boot operation (default) - 0x1 - Use single data rate + High Speed timing in boot operation mode - 0x2 - Use dual data rate in boot operation - 0x3 - Reserved - -The 'mmc partconf' command shows or changes PARTITION_CONFIG field. - - varname - When showing the PARTITION_CONFIG, an optional environment variable to store the current boot_partition value into. - boot_ack - boot acknowledge value - boot_partition - boot partition to enable for boot - 0x0 - Device not boot enabled(default) - 0x1 - Boot partition1 enabled for boot - 0x2 - Boot partition2 enabled for boot - 0x7 - User area enabled for boot - others - Reserved - partition_access - partitions to access - -The 'mmc bootpart-resize' command changes sizes of boot and RPMB partitions. - - dev - device number - boot part size MB - target size of boot partition - RPMB part size MB - target size of RPMB partition - -The 'mmc rst-function' command changes the RST_n_FUNCTION field. -**WARNING** : This is a write-once field. (*Refer to eMMC specification*) - - value - 0x0 - RST_n signal is temporarily disabled (default) - 0x1 - RST_n signal is permanently enabled - 0x2 - RST_n signal is permanently disabled - 0x3 - Reserved - - -Examples --------- - -The 'mmc info' command displays device's capabilities: -:: - - => mmc info - Device: EXYNOS DWMMC - Manufacturer ID: 45 - OEM: 100 - Name: SDW16 - Bus Speed: 52000000 - Mode: MMC DDR52 (52MHz) - Rd Block Len: 512 - MMC version 5.0 - High Capacity: Yes - Capacity: 14.7 GiB - Bus Width: 8-bit DDR - Erase Group Size: 512 KiB - HC WP Group Size: 8 MiB - User Capacity: 14.7 GiB WRREL - Boot Capacity: 4 MiB ENH - RPMB Capacity: 4 MiB ENH - Boot area 0 is not write protected - Boot area 1 is not write protected - -The raw data can be read/written via 'mmc read/write' command: -:: - - => mmc read 0x40000000 0x5000 0x100 - MMC read: dev # 0, block # 20480, count 256 ... 256 blocks read: OK - - => mmc write 0x40000000 0x5000 0x10 - MMC write: dev # 0, block # 20480, count 256 ... 256 blocks written: OK - -The partition list can be shown via 'mmc part' command: -:: - - => mmc part - Partition Map for MMC device 0 -- Partition Type: DOS - - Part Start Sector Num Sectors UUID Type - 1 8192 131072 dff8751a-01 0e Boot - 2 139264 6291456 dff8751a-02 83 - 3 6430720 1048576 dff8751a-03 83 - 4 7479296 23298048 dff8751a-04 05 Extd - 5 7481344 307200 dff8751a-05 83 - 6 7790592 65536 dff8751a-06 83 - 7 7858176 16384 dff8751a-07 83 - 8 7876608 22900736 dff8751a-08 83 - -The current device can be shown or set via 'mmc dev' command: -:: - - => mmc dev - switch to partitions #0, OK - mmc0(part0) is current device - => mmc dev 2 0 - switch to partitions #0, OK - mmc2 is current device - => mmc dev 0 1 4 - switch to partitions #1, OK - mmc0(part 1) is current device - -The list of available devices can be shown via 'mmc list' command: -:: - - => mmc list - mmc list - EXYNOS DWMMC: 0 (eMMC) - EXYNOS DWMMC: 2 (SD) - -Configuration -------------- - -The mmc command is only available if CONFIG_CMD_MMC=y. -Some commands need to enable more configuration. - -write, erase - CONFIG_MMC_WRITE -bootbus, bootpart-resize, partconf, rst-function - CONFIG_SUPPORT_EMMC_BOOT=y diff --git a/doc/usage/pinmux.rst b/doc/usage/pinmux.rst deleted file mode 100644 index 9f4392cd0d..0000000000 --- a/doc/usage/pinmux.rst +++ /dev/null @@ -1,95 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+: - -pinmux command -============== - -Synopsis --------- - -:: - - pinmux list - pinmux dev [pincontroller-name] - pinmux status [-a | pin-name] - -Description ------------ - -The pinmux command is used to show the pin-controller muxing. - -The 'pinmux list' command diplays the available pin-controller. - -The 'pinmux dev' command selects the pin-controller for next commands. - - pincontroller-name - name of the pin-controller to select - -The 'pinmux status' command displays the pin muxing information. - - \-a - display pin muxing of all pin-controllers. - pin-name - name of the pin to display - -Example -------- - -:: - - => pinmux list - | Device | Driver | Parent - | pinctrl-gpio | sandbox_pinctrl_gpio | root_driver - | pinctrl | sandbox_pinctrl | root_driver - => - => pinmux dev pinctrl - dev: pinctrl - => - => pinmux status - P0 : UART TX. - P1 : UART RX. - P2 : I2S SCK. - P3 : I2S SD. - P4 : I2S WS. - P5 : GPIO0 bias-pull-up input-disable. - P6 : GPIO1 drive-open-drain. - P7 : GPIO2 bias-pull-down input-enable. - P8 : GPIO3 bias-disable. - => - => pinmux status P0 - P0 : UART TX. - => - => pinmux status -a - -------------------------- - pinctrl-gpio: - a0 : gpio input . - a1 : gpio input . - a2 : gpio input . - a3 : gpio input . - a4 : gpio input . - a5 : gpio output . - a6 : gpio output . - a7 : gpio input . - a8 : gpio input . - a9 : gpio input . - -------------------------- - pinctrl: - P0 : UART TX. - P1 : UART RX. - P2 : I2S SCK. - P3 : I2S SD. - P4 : I2S WS. - P5 : GPIO0 bias-pull-up input-disable. - P6 : GPIO1 drive-open-drain. - P7 : GPIO2 bias-pull-down input-enable. - P8 : GPIO3 bias-disable. - -Configuration -------------- - -The pinmux command is only available if CONFIG_CMD_PINMUX=y. - -Return value ------------- - -The return value $? is set to 0 (true) if the command succeded and to 1 (false) -otherwise. diff --git a/doc/usage/pstore.rst b/doc/usage/pstore.rst deleted file mode 100644 index 1c8374513a..0000000000 --- a/doc/usage/pstore.rst +++ /dev/null @@ -1,93 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+ - -pstore command -============== - -Synopsis --------- - -:: - - pstore set <addr> <len> [record-size] [console-size] [ftrace-size] [pmsg_size] [ecc-size] - pstore display [record-type] [nb] - pstore save <interface> <dev[:part]> <directory-path> - -Design ------- - -Linux PStore and Ramoops modules (Linux config options PSTORE and PSTORE_RAM) -allow to use memory to pass data from the dying breath of a crashing kernel to -its successor. This command allows to read those records from U-Boot command -line. - -Ramoops is an oops/panic logger that writes its logs to RAM before the system -crashes. It works by logging oopses and panics in a circular buffer. Ramoops -needs a system with persistent RAM so that the content of that area can survive -after a restart. - -Ramoops uses a predefined memory area to store the dump. - -Ramoops parameters can be passed as kernel parameters or through Device Tree, -i.e.:: - - ramoops.mem_address=0x30000000 ramoops.mem_size=0x100000 ramoops.record_size=0x2000 ramoops.console_size=0x2000 memmap=0x100000$0x30000000 - -The same values should be set in U-Boot to be able to retrieve the records. -This values can be set at build time in U-Boot configuration file, or at runtime. -U-Boot automatically patches the Device Tree to pass the Ramoops parameters to -the kernel. - -The PStore configuration parameters are: - -======================= ========== - Name Default -======================= ========== -CMD_PSTORE_MEM_ADDR -CMD_PSTORE_MEM_SIZE 0x10000 -CMD_PSTORE_RECORD_SIZE 0x1000 -CMD_PSTORE_CONSOLE_SIZE 0x1000 -CMD_PSTORE_FTRACE_SIZE 0x1000 -CMD_PSTORE_PMSG_SIZE 0x1000 -CMD_PSTORE_ECC_SIZE 0 -======================= ========== - -Records sizes should be a power of 2. -The memory size and the record/console size must be non-zero. - -Multiple 'dump' records can be stored in the memory reserved for PStore. -The memory size has to be larger than the sum of the record sizes, i.e.:: - - MEM_SIZE >= RECORD_SIZE * n + CONSOLE_SIZE + FTRACE_SIZE + PMSG_SIZE - -Usage ------ - -Generate kernel crash -~~~~~~~~~~~~~~~~~~~~~ - -For test purpose, you can generate a kernel crash by setting reboot timeout to -10 seconds and trigger a panic - -.. code-block:: console - - $ sudo sh -c "echo 1 > /proc/sys/kernel/sysrq" - $ sudo sh -c "echo 10 > /proc/sys/kernel/panic" - $ sudo sh -c "echo c > /proc/sysrq-trigger" - -Retrieve logs in U-Boot -~~~~~~~~~~~~~~~~~~~~~~~ - -First of all, unless PStore parameters as been set during U-Boot configuration -and match kernel ramoops parameters, it needs to be set using 'pstore set', e.g.:: - - => pstore set 0x30000000 0x100000 0x2000 0x2000 - -Then all available dumps can be displayed -using:: - - => pstore display - -Or saved to an existing directory in an Ext2 or Ext4 partition, e.g. on root -directory of 1st partition of the 2nd MMC:: - - => pstore save mmc 1:1 / diff --git a/doc/usage/qfw.rst b/doc/usage/qfw.rst deleted file mode 100644 index b3704b92d6..0000000000 --- a/doc/usage/qfw.rst +++ /dev/null @@ -1,89 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+ - -qfw command -=========== - -Synopsis --------- - -:: - - qfw list - qfw cpus - qfw load [kernel_addr [initrd_addr]] - -Description ------------ - -The *qfw* command is used to retrieve information form the QEMU firmware. - -The *qfw list* sub-command displays the QEMU firmware files. - -The *qfw cpus* sub-command displays the available CPUs. - -The *qfw load* command is used to load a kernel and an initial RAM disk. - -kernel_addr - address to which the file specified by the -kernel parameter of QEMU shall - be loaded. Defaults to environment variable *loadaddr* and further to - the value of *CONFIG_SYS_LOAD_ADDR*. - -initrd_addr - address to which the file specified by the -initrd parameter of QEMU shall - be loaded. Defaults to environment variable *ramdiskaddr* and further to - the value of *CONFIG_RAMDISK_ADDR*. - -Examples --------- - -QEMU firmware files are listed via the *qfw list* command: - -:: - - => qfw list - etc/boot-fail-wait - etc/smbios/smbios-tables - etc/smbios/smbios-anchor - etc/e820 - genroms/kvmvapic.bin - genroms/linuxboot.bin - etc/system-states - etc/acpi/tables - etc/table-loader - etc/tpm/log - etc/acpi/rsdp - bootorder - -The available CPUs can be shown via the *qfw cpus* command: - -:: - - => qfw cpu - 2 cpu(s) online - -The *-kernel* and *-initrd* parameters allow to specify a kernel and an -initial RAM disk for QEMU: - -.. code-block:: bash - - $ qemu-system-x86_64 -machine pc-i440fx-2.5 -bios u-boot.rom -m 1G \ - -nographic -kernel vmlinuz -initrd initrd - -Now the kernel and the initial RAM disk can be loaded to the U-Boot memory via -the *qfw load* command and booted thereafter. - -:: - - => qfw load ${kernel_addr_r} ${ramdisk_addr_r} - loading kernel to address 0000000001000000 size 5048f0 initrd 0000000004000000 size 3c94891 - => zboot 1000000 5048f0 4000000 3c94891 - Valid Boot Flag - Magic signature found - Linux kernel version 4.19.0-14-amd64 (debian-kernel@lists.debian.org) #1 SMP Debian 4.19.171-2 (2021-01-30) - Building boot_params at 0x00090000 - Loading bzImage at address 100000 (5260160 bytes) - -Configuration -------------- - -The qfw command is only available if CONFIG_CMD_QFW=y. diff --git a/doc/usage/reset.rst b/doc/usage/reset.rst deleted file mode 100644 index 384d5d60f8..0000000000 --- a/doc/usage/reset.rst +++ /dev/null @@ -1,26 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+ - -reset command -============= - -Synopsis --------- - -:: - - reset [-w] - -Description ------------ - -Perform reset of the CPU. By default does COLD reset, which resets CPU, -DDR and peripherals, on some boards also resets external PMIC. - --w - Do warm WARM, reset CPU but keep peripheral/DDR/PMIC active. - - -Return value ------------- - -The return value $? is always set to 0 (true). diff --git a/doc/usage/sbi.rst b/doc/usage/sbi.rst deleted file mode 100644 index 96d8861057..0000000000 --- a/doc/usage/sbi.rst +++ /dev/null @@ -1,49 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+ - -sbi command -=========== - -Synopsis --------- - -:: - - sbi - -Description ------------ - -The sbi command is used to display information about the SBI (Supervisor Binary -Interface) implementation on RISC-V systems. - -The output may look like: - -:: - - => sbi - SBI 0.2 - OpenSBI - Extensions: - sbi_set_timer - sbi_console_putchar - sbi_console_getchar - sbi_clear_ipi - sbi_send_ipi - sbi_remote_fence_i - sbi_remote_sfence_vma - sbi_remote_sfence_vma_asid - sbi_shutdown - SBI Base Functionality - Timer Extension - IPI Extension - RFENCE Extension - Hart State Management Extension - -The first line indicates the version of the RISC-V SBI specification. -The second line indicates the implementation. -The further lines enumerate the implemented extensions. - -Configuration -------------- - -To use the sbi command you must specify CONFIG_CMD_SBI=y. diff --git a/doc/usage/scp03.rst b/doc/usage/scp03.rst deleted file mode 100644 index 7ff87ed85a..0000000000 --- a/doc/usage/scp03.rst +++ /dev/null @@ -1,33 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+ - -scp03 command -============= - -Synopsis --------- - -:: - - scp03 enable - scp03 provision - -Description ------------ - -The *scp03* command calls into a Trusted Application executing in a -Trusted Execution Environment to enable (if present) the Secure -Channel Protocol 03 stablished between the processor and the secure -element. - -This protocol encrypts all the communication between the processor and -the secure element using a set of pre-defined keys. These keys can be -rotated (provisioned) using the *provision* request. - -See also --------- - -For some information on the internals implemented in the TEE, please -check the GlobalPlatform documentation on `Secure Channel Protocol '03'`_ - -.. _Secure Channel Protocol '03': - https://globalplatform.org/wp-content/uploads/2014/07/GPC_2.3_D_SCP03_v1.1.2_PublicRelease.pdf diff --git a/doc/usage/setexpr.rst b/doc/usage/setexpr.rst deleted file mode 100644 index 2e511b1290..0000000000 --- a/doc/usage/setexpr.rst +++ /dev/null @@ -1,148 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+ - -setexpr command -=============== - -Synopsis --------- - -:: - - setexpr[.b, .w, .l .s] <name> [*]<value> <op> [*]<value2> - setexpr[.b, .w, .l] <name> [*]<value> - setexpr <name> fmt <format> [value]... - setexpr <name> gsub r s [t] - setexpr <name> sub r s [t] - -Description ------------ - -The setexpr command is used to set an environment variable to the result -of an evaluation. - -setexpr[.b, .w, .l .s] <name> [*]<value> <op> [*]<value2> - Set environment variable <name> to the result of the evaluated - expression specified by <op>. - -setexpr[.b, .w, .l] name [*]value - Load <value> into environment variable <name> - -setexpr name fmt <format> value - Set environment variable <name> to the result of the C like - format string <format> evaluation of <value>. - -setexpr name gsub <r> <s> [<t>] - For each substring matching the regular expression <r> in the - string <t>, substitute the string <s>. - The result is assigned to <name>. - If <t> is not supplied, use the old value of <name>. - -setexpr name sub <r> <s> [<t>] - Just like gsub(), but replace only the first matching substring - -The setexpr command takes the following arguments: - -format - This parameter contains a C or Bash like format string. - The number of arguments is limited to 4. - The following format types are supported: - - c - single character - d, i - decimal value - o - octal value - s - string - u - unsigned decimal value - x, X - hexadecimal value - '%' - no conversion, instead a % character will be written - - Backslash escapes: - - \" = double quote - \\ = backslash - \a = alert (bell) - \b = backspace - \c = produce no further output - \f = form feed - \n = new line - \r = carriage return - \t = horizontal tab - \v = vertical tab - \NNN = octal number (NNN is 0 to 3 digits) - -name - The name of the environment variable to be set - -op - '|' - name = value | value2 - '&' - name = value & value2 - '+' - name = value + value2 - (This is the only operator supported for strings. - It acts as concatenation operator on strings) - '^' - name = value ^ value2 - '-' - name = value - value2 - '*' - name = value * value2 - '/' - name = value / value2 - '%' - name = value % value2 - -r - Regular expression - -s - Substitution string - -t - string - -value - Can either be an integer value, a string. - If the pointer prefix '*' is given value is treated as memory address. - -value2 - See value - -Example -------- - -:: - - => setexpr foo fmt %d 0x100 - => echo $foo - 256 - => - - => setexpr foo fmt 0x%08x 63 - => echo $foo - 0x00000063 - => - - => setexpr foo fmt %%%o 8 - => echo $foo - %10 - => - -Configuration -------------- - -The setexpr gsub and sub operations are only available if CONFIG_REGEX=y. - -Return value ------------- - -The return value $? is set to 0 (true) if the operation was successful. - -If an error occurs, the return value $? is set to 1 (false). diff --git a/doc/usage/sf.rst b/doc/usage/sf.rst deleted file mode 100644 index 71bd1be517..0000000000 --- a/doc/usage/sf.rst +++ /dev/null @@ -1,245 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+: - -sf command -========== - -Synopis -------- - -:: - - sf probe [[[<bus>:]<cs>] [<hz> [<mode>]]] - sf read <addr> <offset>|<partition> <len> - sf write <addr> <offset>|<partition> <len> - sf erase <offset>|<partition> <len> - sf update <addr> <offset>|<partition> <len> - sf protect lock|unlock <sector> <len> - sf test <offset>|<partition> <len> - -Description ------------ - -The *sf* command is used to access SPI flash, supporting read/write/erase and -a few other functions. - -Probe ------ - -The flash must first be probed with *sf probe* before any of the other -subcommands can be used. All of the parameters are optional: - -bus - SPI bus number containing the SPI-flash chip, e.g. 0. If you don't know - the number, you can use 'dm uclass' to see all the spi devices, - and check the value for 'seq' for each one (here 0 and 2):: - - uclass 89: spi - 0 spi@0 @ 05484960, seq 0 - 1 spi@1 @ 05484b40, seq 2 - -cs - SPI chip-select to use for the chip. This is often 0 and can be omitted, - but in some cases multiple slaves are attached to a SPI controller, - selected by a chip-select line for each one. - -hz - Speed of the SPI bus in hertz. This normally defaults to 100000, i.e. - 100KHz, which is very slow. Note that if the device exists in the - device tree, there might be a speed provided there, in which case this - setting is ignored. - -mode - SPI mode to use: - - ===== ================ - Mode Meaning - ===== ================ - 0 CPOL=0, CPHA=0 - 1 CPOL=0, CPHA=1 - 2 CPOL=1, CPHA=0 - 3 CPOL=1, CPHA=1 - ===== ================ - - Clock phase (CPHA) 0 means that data is transferred (sampled) on the - first clock edge; 1 means the second. - - Clock polarity (CPOL) controls the idle state of the clock, 0 for low, - 1 for high. - The active state is the opposite of idle. - - You may find this `SPI documentation`_ useful. - -Parameters for other subcommands (described below) are as follows: - -addr - Memory address to start transfer - -offset - Flash offset to start transfer - -partition - If the parameter is not numeric, it is assumed to be a partition - description in the format <dev_type><dev_num>,<part_num> which is not - covered here. This requires CONFIG_CMD_MTDPARTS. - -len - Number of bytes to transfer - -Read -~~~~ - -Use *sf read* to read from SPI flash to memory. The read will fail if an -attempt is made to read past the end of the flash. - - -Write -~~~~~ - -Use *sf write* to write from memory to SPI flash. The SPI flash should be -erased first, since otherwise the result is undefined. - -The write will fail if an attempt is made to read past the end of the flash. - - -Erase -~~~~~ - -Use *sf erase* to erase a region of SPI flash. The erase will fail if any part -of the region to be erased is protected or lies past the end of the flash. It -may also fail if the start offset or length are not aligned to an erase region -(e.g. 256 bytes). - - -Update -~~~~~~ - -Use *sf update* to automatically erase and update a region of SPI flash from -memory. This works a sector at a time (typical 4KB or 64KB). For each -sector it first checks if the sector already has the right data. If so it is -skipped. If not, the sector is erased and the new data written. Note that if -the length is not a multiple of the erase size, the space after the data in -the last sector will be erased. If the offset does not start at the beginning -of an erase block, the operation will fail. - -Speed statistics are shown including the number of bytes that were already -correct. - - -Protect -~~~~~~~ - -SPI-flash chips often have a protection feature where the chip is split up into -regions which can be locked or unlocked. With *sf protect* it is possible to -change these settings, if supported by the driver. - -lock|unlock - Selects whether to lock or unlock the sectors - -<sector> - Start sector number to lock/unlock. This may be the byte offset or some - other value, depending on the chip. - -<len> - Number of bytes to lock/unlock - - -Test -~~~~ - -A convenient and fast *sf test* subcommand provides a way to check that SPI -flash is working as expected. This works in four stages: - - * erase - erases the entire region - * check - checks that the region is erased - * write - writes a test pattern to the region, consisting of the U-Boot code - * read - reads back the test pattern to check that it was written correctly - -Memory is allocated for two buffers, each <len> bytes in size. At typical -size is 64KB to 1MB. The offset and size must be aligned to an erase boundary. - -Note that this test will fail if any part of the SPI flash is write-protected. - - -Examples --------- - -This first example uses sandbox:: - - => sf probe - SF: Detected m25p16 with page size 256 Bytes, erase size 64 KiB, total 2 MiB - => sf read 1000 1100 80000 - device 0 offset 0x1100, size 0x80000 - SF: 524288 bytes @ 0x1100 Read: OK - => md 1000 - 00001000: edfe0dd0 f33a0000 78000000 84250000 ......:....x..%. - 00001010: 28000000 11000000 10000000 00000000 ...(............ - 00001020: 6f050000 0c250000 00000000 00000000 ...o..%......... - 00001030: 00000000 00000000 00000000 00000000 ................ - 00001040: 00000000 00000000 00000000 00000000 ................ - 00001050: 00000000 00000000 00000000 00000000 ................ - 00001060: 00000000 00000000 00000000 00000000 ................ - 00001070: 00000000 00000000 01000000 00000000 ................ - 00001080: 03000000 04000000 00000000 01000000 ................ - 00001090: 03000000 04000000 0f000000 01000000 ................ - 000010a0: 03000000 08000000 1b000000 646e6173 ............sand - 000010b0: 00786f62 03000000 08000000 21000000 box............! - 000010c0: 646e6173 00786f62 01000000 61696c61 sandbox.....alia - 000010d0: 00736573 03000000 07000000 2c000000 ses............, - 000010e0: 6332692f 00003040 03000000 07000000 /i2c@0.......... - 000010f0: 31000000 6963702f 00003040 03000000 ...1/pci@0...... - => sf erase 0 80000 - SF: 524288 bytes @ 0x0 Erased: OK - => sf read 1000 1100 80000 - device 0 offset 0x1100, size 0x80000 - SF: 524288 bytes @ 0x1100 Read: OK - => md 1000 - 00001000: ffffffff ffffffff ffffffff ffffffff ................ - 00001010: ffffffff ffffffff ffffffff ffffffff ................ - 00001020: ffffffff ffffffff ffffffff ffffffff ................ - 00001030: ffffffff ffffffff ffffffff ffffffff ................ - 00001040: ffffffff ffffffff ffffffff ffffffff ................ - 00001050: ffffffff ffffffff ffffffff ffffffff ................ - 00001060: ffffffff ffffffff ffffffff ffffffff ................ - 00001070: ffffffff ffffffff ffffffff ffffffff ................ - 00001080: ffffffff ffffffff ffffffff ffffffff ................ - 00001090: ffffffff ffffffff ffffffff ffffffff ................ - 000010a0: ffffffff ffffffff ffffffff ffffffff ................ - 000010b0: ffffffff ffffffff ffffffff ffffffff ................ - 000010c0: ffffffff ffffffff ffffffff ffffffff ................ - 000010d0: ffffffff ffffffff ffffffff ffffffff ................ - 000010e0: ffffffff ffffffff ffffffff ffffffff ................ - 000010f0: ffffffff ffffffff ffffffff ffffffff ................ - -This second example is running on coral, an x86 Chromebook:: - - => sf probe - SF: Detected w25q128fw with page size 256 Bytes, erase size 4 KiB, total 16 MiB - => sf erase 300000 80000 - SF: 524288 bytes @ 0x300000 Erased: OK - => sf update 1110000 300000 80000 - device 0 offset 0x300000, size 0x80000 - 524288 bytes written, 0 bytes skipped in 0.457s, speed 1164578 B/s - - # This does nothing as the flash is already updated - => sf update 1110000 300000 80000 - device 0 offset 0x300000, size 0x80000 - 0 bytes written, 524288 bytes skipped in 0.196s, speed 2684354 B/s - => sf test 00000 80000 # try a protected region - SPI flash test: - Erase failed (err = -5) - Test failed - => sf test 800000 80000 - SPI flash test: - 0 erase: 18 ticks, 28444 KiB/s 227.552 Mbps - 1 check: 192 ticks, 2666 KiB/s 21.328 Mbps - 2 write: 227 ticks, 2255 KiB/s 18.040 Mbps - 3 read: 189 ticks, 2708 KiB/s 21.664 Mbps - Test passed - 0 erase: 18 ticks, 28444 KiB/s 227.552 Mbps - 1 check: 192 ticks, 2666 KiB/s 21.328 Mbps - 2 write: 227 ticks, 2255 KiB/s 18.040 Mbps - 3 read: 189 ticks, 2708 KiB/s 21.664 Mbps - - -.. _SPI documentation: - https://en.wikipedia.org/wiki/Serial_Peripheral_Interface diff --git a/doc/usage/size.rst b/doc/usage/size.rst deleted file mode 100644 index f0c35e4826..0000000000 --- a/doc/usage/size.rst +++ /dev/null @@ -1,40 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+ - -size command -============ - -Synopsis --------- - -:: - - size <interface> <dev[:part]> <filename> - -Description ------------ - -The size command determines the size of a file and sets the environment variable -filesize to this value. If filename points to a directory, the value is set to -zero. - -If the command fails, the filesize environment variable is not changed. - -dev - device number - -part - partition number, defaults to 1 - -filename - path to file - -Configuration -------------- - -The size command is only available if CONFIG_CMD_FS_GENERIC=y. - -Return value ------------- - -The return value $? is set to 0 (true) if the command succeded and to 1 (false) -otherwise. diff --git a/doc/usage/true.rst b/doc/usage/true.rst deleted file mode 100644 index f9ef71b2d1..0000000000 --- a/doc/usage/true.rst +++ /dev/null @@ -1,28 +0,0 @@ -true command -============ - -Synopsis --------- - -:: - - true - -Description ------------ - -The true command sets the return value $? to 0 (true). - -Example -------- - -:: - - => true; echo $? - 0 - => - -Configuration -------------- - -The true command is only available if CONFIG_HUSH_PARSER=y. diff --git a/doc/usage/ums.rst b/doc/usage/ums.rst deleted file mode 100644 index 3cde5fa1f2..0000000000 --- a/doc/usage/ums.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+ - -ums command -=========== - -Synopsis --------- - -:: - - ums <dev> [<interface>] <devnum[:partnum]> - -Description ------------ - -Use the USB Mass Storage class (also known as UMS) to make accessible an U-Boot -block device (fully or with :ref:`U-Boot's partition syntax <partitions>`) -to a USB host and to enable file transfers. U-Boot, the USB device, acts as a -simple external hard drive plugged on the host USB port. - -This command "ums" stays in the USB's treatment loop until user enters Ctrl-C. - -dev - USB gadget device number - -interface - interface for accessing the block device (mmc, sata, scsi, usb, ....) - defaults is "mmc" - -devnum - device number for selected interface - -partnum - partition number or 0 to expose all partitions, defaults to 0 - -Example -------- - -:: - - => ums 0 mmc 0 - => ums 0 usb 1:2 - -Configuration -------------- - -The ums command is only available if CONFIG_CMD_USB_MASS_STORAGE=y -and depends on CONFIG_USB_USB_GADGET and CONFIG_BLK. - -Return value ------------- - -The return value $? is set to 0 (true) when the USB stack was successfully -started and interrupted, with Ctrl-C or after USB cable issue (detection -timeout or cable removal). - -If an error occurs, the return value $? is set to 1 (false). diff --git a/doc/usage/wdt.rst b/doc/usage/wdt.rst deleted file mode 100644 index 8d80433c1f..0000000000 --- a/doc/usage/wdt.rst +++ /dev/null @@ -1,77 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+: - -wdt command -============ - -Synopsis --------- - -:: - - wdt list - wdt dev [<name>] - wdt start <timeout_ms> [flags] - wdt stop - wdt reset - wdt expirer [flags] - -Description ------------ - -The wdt command is used to control watchdog timers. - -The 'wdt list' command shows a list of all watchdog devices. - -The 'wdt dev' command called without argument shows the current watchdog device. -The current device is set when passing the name of the device as argument. - -The 'wdt start' command starts the current watchdog timer. - -The 'wdt stop' command stops the current watchdog timer. - -The 'wdt reset' command resets the current watchdog timer without stopping it. - -The 'wdt expire' command let's the current watchdog timer expire immediately. -This will lead to a reset. - -name - name of the watchdog device - -timeout_ms - timeout interval in milliseconds - -flags - unsigned long value passed to the driver. The usage is driver specific. - The value is ignored by most drivers. - -Example -------- - -:: - - => wdt dev - No watchdog timer device set! - => wdt list - watchdog@1c20ca0 (sunxi_wdt) - => wdt dev watchdog@1c20ca0 - => wdt dev - dev: watchdog@1c20ca0 - => wdt start 3000 - => wdt reset - => wdt stop - => wdt expire - - U-Boot SPL 2022.04-rc3 (Mar 25 2022 - 13:48:33 +0000) - - In the example above '(sunxi_wdt)' refers to the driver for the watchdog - device. - -Configuration -------------- - -The command is only available if CONFIG_CMD_WDT=y. - -Return value ------------- - -The return value $? is 0 if the command succeeds, 1 upon failure. diff --git a/doc/usage/x86/cbsysinfo.rst b/doc/usage/x86/cbsysinfo.rst deleted file mode 100644 index 8c03a85169..0000000000 --- a/doc/usage/x86/cbsysinfo.rst +++ /dev/null @@ -1,25 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+ - -cbsysinfo -========= - -Synopis -------- - -:: - - cbsysinfo - - -Description ------------ - -This displays information obtained from the coreboot sysinfo table. It is only -useful when booting U-Boot from coreboot. - -Example -------- - -:: - - => cbsysinfo