From 572934d15a67ce5643472b5f6d3151476cc2b89d Mon Sep 17 00:00:00 2001 From: Patrick Delaunay Date: Tue, 29 Mar 2022 16:01:13 +0200 Subject: doc: mmc dev Provide human readable descriptions of the speed nodes instead of the name of constants from the code as it is already done for 'mmc rescan' command in commit 212f078496e4 ("doc: mmc rescan speed mode"). Signed-off-by: Patrick Delaunay Reviewed-by: Aswath Govindraju Reviewed-by: Bin Meng --- doc/usage/mmc.rst | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) (limited to 'doc/usage') diff --git a/doc/usage/mmc.rst b/doc/usage/mmc.rst index 02b5d7b1c77..55e3f9cf98c 100644 --- a/doc/usage/mmc.rst +++ b/doc/usage/mmc.rst @@ -85,22 +85,26 @@ The 'mmc dev' command shows or set current mmc device. mode speed mode to set. - CONFIG_MMC_SPEED_MODE_SET should be enabled. The required speed mode is - passed as the index from the following list. - - 0 - MMC_LEGACY - 1 - MMC_HS - 2 - SD_HS - 3 - MMC_HS_52 - 4 - MMC_DDR_52 - 5 - UHS_SDR12 - 6 - UHS_SDR25 - 7 - UHS_SDR50 - 8 - UHS_DDR50 - 9 - UHS_SDR104 - 10 - MMC_HS_200 - 11 - MMC_HS_400 - 12 - MMC_HS_400_ES + 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 -- cgit v1.3.1 From 34e452dd0252c162242a718ed5287a2af622b7d7 Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Mon, 28 Mar 2022 11:02:56 +0800 Subject: 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 --- doc/usage/acpi.rst | 235 -------------------------------------- doc/usage/addrmap.rst | 41 ------- doc/usage/askenv.rst | 87 -------------- doc/usage/base.rst | 23 ---- doc/usage/bootefi.rst | 135 ---------------------- doc/usage/booti.rst | 114 ------------------- doc/usage/bootmenu.rst | 95 ---------------- doc/usage/button.rst | 64 ----------- doc/usage/cmd/acpi.rst | 235 ++++++++++++++++++++++++++++++++++++++ doc/usage/cmd/addrmap.rst | 41 +++++++ doc/usage/cmd/askenv.rst | 87 ++++++++++++++ doc/usage/cmd/base.rst | 23 ++++ doc/usage/cmd/bootefi.rst | 135 ++++++++++++++++++++++ doc/usage/cmd/booti.rst | 114 +++++++++++++++++++ doc/usage/cmd/bootmenu.rst | 95 ++++++++++++++++ doc/usage/cmd/button.rst | 64 +++++++++++ doc/usage/cmd/cbsysinfo.rst | 25 +++++ doc/usage/cmd/conitrace.rst | 54 +++++++++ doc/usage/cmd/echo.rst | 65 +++++++++++ doc/usage/cmd/exception.rst | 66 +++++++++++ doc/usage/cmd/exit.rst | 40 +++++++ doc/usage/cmd/extension.rst | 111 ++++++++++++++++++ doc/usage/cmd/false.rst | 28 +++++ doc/usage/cmd/fatinfo.rst | 51 +++++++++ doc/usage/cmd/fatload.rst | 80 +++++++++++++ doc/usage/cmd/for.rst | 65 +++++++++++ doc/usage/cmd/load.rst | 74 ++++++++++++ doc/usage/cmd/loady.rst | 67 +++++++++++ doc/usage/cmd/mbr.rst | 94 ++++++++++++++++ doc/usage/cmd/md.rst | 104 +++++++++++++++++ doc/usage/cmd/mmc.rst | 268 ++++++++++++++++++++++++++++++++++++++++++++ doc/usage/cmd/pinmux.rst | 95 ++++++++++++++++ doc/usage/cmd/pstore.rst | 93 +++++++++++++++ doc/usage/cmd/qfw.rst | 89 +++++++++++++++ doc/usage/cmd/reset.rst | 26 +++++ doc/usage/cmd/sbi.rst | 49 ++++++++ doc/usage/cmd/scp03.rst | 33 ++++++ doc/usage/cmd/setexpr.rst | 148 ++++++++++++++++++++++++ doc/usage/cmd/sf.rst | 245 ++++++++++++++++++++++++++++++++++++++++ doc/usage/cmd/size.rst | 40 +++++++ doc/usage/cmd/true.rst | 28 +++++ doc/usage/cmd/ums.rst | 57 ++++++++++ doc/usage/cmd/wdt.rst | 77 +++++++++++++ doc/usage/conitrace.rst | 54 --------- doc/usage/echo.rst | 65 ----------- doc/usage/exception.rst | 66 ----------- doc/usage/exit.rst | 40 ------- doc/usage/extension.rst | 111 ------------------ doc/usage/false.rst | 28 ----- doc/usage/fatinfo.rst | 51 --------- doc/usage/fatload.rst | 80 ------------- doc/usage/for.rst | 65 ----------- doc/usage/index.rst | 70 ++++++------ doc/usage/load.rst | 74 ------------ doc/usage/loady.rst | 67 ----------- doc/usage/mbr.rst | 94 ---------------- doc/usage/md.rst | 106 ------------------ doc/usage/mmc.rst | 268 -------------------------------------------- doc/usage/pinmux.rst | 95 ---------------- doc/usage/pstore.rst | 93 --------------- doc/usage/qfw.rst | 89 --------------- doc/usage/reset.rst | 26 ----- doc/usage/sbi.rst | 49 -------- doc/usage/scp03.rst | 33 ------ doc/usage/setexpr.rst | 148 ------------------------ doc/usage/sf.rst | 245 ---------------------------------------- doc/usage/size.rst | 40 ------- doc/usage/true.rst | 28 ----- doc/usage/ums.rst | 57 ---------- doc/usage/wdt.rst | 77 ------------- doc/usage/x86/cbsysinfo.rst | 25 ----- 71 files changed, 3001 insertions(+), 3003 deletions(-) delete mode 100644 doc/usage/acpi.rst delete mode 100644 doc/usage/addrmap.rst delete mode 100644 doc/usage/askenv.rst delete mode 100644 doc/usage/base.rst delete mode 100644 doc/usage/bootefi.rst delete mode 100644 doc/usage/booti.rst delete mode 100644 doc/usage/bootmenu.rst delete mode 100644 doc/usage/button.rst create mode 100644 doc/usage/cmd/acpi.rst create mode 100644 doc/usage/cmd/addrmap.rst create mode 100644 doc/usage/cmd/askenv.rst create mode 100644 doc/usage/cmd/base.rst create mode 100644 doc/usage/cmd/bootefi.rst create mode 100644 doc/usage/cmd/booti.rst create mode 100644 doc/usage/cmd/bootmenu.rst create mode 100644 doc/usage/cmd/button.rst create mode 100644 doc/usage/cmd/cbsysinfo.rst create mode 100644 doc/usage/cmd/conitrace.rst create mode 100644 doc/usage/cmd/echo.rst create mode 100644 doc/usage/cmd/exception.rst create mode 100644 doc/usage/cmd/exit.rst create mode 100644 doc/usage/cmd/extension.rst create mode 100644 doc/usage/cmd/false.rst create mode 100644 doc/usage/cmd/fatinfo.rst create mode 100644 doc/usage/cmd/fatload.rst create mode 100644 doc/usage/cmd/for.rst create mode 100644 doc/usage/cmd/load.rst create mode 100644 doc/usage/cmd/loady.rst create mode 100644 doc/usage/cmd/mbr.rst create mode 100644 doc/usage/cmd/md.rst create mode 100644 doc/usage/cmd/mmc.rst create mode 100644 doc/usage/cmd/pinmux.rst create mode 100644 doc/usage/cmd/pstore.rst create mode 100644 doc/usage/cmd/qfw.rst create mode 100644 doc/usage/cmd/reset.rst create mode 100644 doc/usage/cmd/sbi.rst create mode 100644 doc/usage/cmd/scp03.rst create mode 100644 doc/usage/cmd/setexpr.rst create mode 100644 doc/usage/cmd/sf.rst create mode 100644 doc/usage/cmd/size.rst create mode 100644 doc/usage/cmd/true.rst create mode 100644 doc/usage/cmd/ums.rst create mode 100644 doc/usage/cmd/wdt.rst delete mode 100644 doc/usage/conitrace.rst delete mode 100644 doc/usage/echo.rst delete mode 100644 doc/usage/exception.rst delete mode 100644 doc/usage/exit.rst delete mode 100644 doc/usage/extension.rst delete mode 100644 doc/usage/false.rst delete mode 100644 doc/usage/fatinfo.rst delete mode 100644 doc/usage/fatload.rst delete mode 100644 doc/usage/for.rst delete mode 100644 doc/usage/load.rst delete mode 100644 doc/usage/loady.rst delete mode 100644 doc/usage/mbr.rst delete mode 100644 doc/usage/md.rst delete mode 100644 doc/usage/mmc.rst delete mode 100644 doc/usage/pinmux.rst delete mode 100644 doc/usage/pstore.rst delete mode 100644 doc/usage/qfw.rst delete mode 100644 doc/usage/reset.rst delete mode 100644 doc/usage/sbi.rst delete mode 100644 doc/usage/scp03.rst delete mode 100644 doc/usage/setexpr.rst delete mode 100644 doc/usage/sf.rst delete mode 100644 doc/usage/size.rst delete mode 100644 doc/usage/true.rst delete mode 100644 doc/usage/ums.rst delete mode 100644 doc/usage/wdt.rst delete mode 100644 doc/usage/x86/cbsysinfo.rst (limited to 'doc/usage') diff --git a/doc/usage/acpi.rst b/doc/usage/acpi.rst deleted file mode 100644 index 14bafc8e352..00000000000 --- 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 472fd547f32..00000000000 --- 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 5c4ca35d4cd..00000000000 --- 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 db9cd4d9783..00000000000 --- 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 282f22aac96..00000000000 --- 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 d631fb571de..00000000000 --- 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 1f094ad6ed2..00000000000 --- 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 ea417627577..00000000000 --- 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 00000000000..14bafc8e352 --- /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 00000000000..472fd547f32 --- /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 00000000000..5c4ca35d4cd --- /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 00000000000..db9cd4d9783 --- /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 00000000000..282f22aac96 --- /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 00000000000..d631fb571de --- /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 00000000000..1f094ad6ed2 --- /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 00000000000..ea417627577 --- /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 00000000000..8c03a85169d --- /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 00000000000..d9916c865ee --- /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 00000000000..861abdfd1eb --- /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 00000000000..27df88bd5c9 --- /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 00000000000..769223c4775 --- /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 00000000000..2b88398b18b --- /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 00000000000..a17fe860217 --- /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 00000000000..af2eba43447 --- /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 00000000000..93acb27a536 --- /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 00000000000..f9e504979c3 --- /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 00000000000..1efee773179 --- /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 00000000000..2819cc72aef --- /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 00000000000..bddf2f612aa --- /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 00000000000..7e9944e0dc3 --- /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 00000000000..55e3f9cf98c --- /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 00000000000..9f4392cd0db --- /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 00000000000..1c8374513aa --- /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 00000000000..b3704b92d6d --- /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 00000000000..384d5d60f81 --- /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 00000000000..96d8861057f --- /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 00000000000..7ff87ed85ac --- /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 00000000000..2e511b12905 --- /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 00000000000..71bd1be5175 --- /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 00000000000..f0c35e48265 --- /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 00000000000..f9ef71b2d1b --- /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 00000000000..3cde5fa1f2a --- /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 00000000000..8d80433c1fa --- /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 d9916c865ee..00000000000 --- 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 861abdfd1eb..00000000000 --- 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 27df88bd5c9..00000000000 --- 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 769223c4775..00000000000 --- 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 2b88398b18b..00000000000 --- 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 a17fe860217..00000000000 --- 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 af2eba43447..00000000000 --- 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 93acb27a536..00000000000 --- 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 f9e504979c3..00000000000 --- 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 630a6cb28ab..5bfe31a4960 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 1efee773179..00000000000 --- 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 2819cc72aef..00000000000 --- 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 bddf2f612aa..00000000000 --- 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 4c1073ea354..00000000000 --- 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 55e3f9cf98c..00000000000 --- 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 9f4392cd0db..00000000000 --- 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 1c8374513aa..00000000000 --- 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 b3704b92d6d..00000000000 --- 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 384d5d60f81..00000000000 --- 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 96d8861057f..00000000000 --- 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 7ff87ed85ac..00000000000 --- 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 2e511b12905..00000000000 --- 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 71bd1be5175..00000000000 --- 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 f0c35e48265..00000000000 --- 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 f9ef71b2d1b..00000000000 --- 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 3cde5fa1f2a..00000000000 --- 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 8d80433c1fa..00000000000 --- 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 8c03a85169d..00000000000 --- 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 -- cgit v1.3.1 From 830b5936c37e44b3cee4dc9a4299928cad030991 Mon Sep 17 00:00:00 2001 From: Bin Meng <bmeng.cn@gmail.com> Date: Sun, 27 Mar 2022 22:20:44 +0800 Subject: doc: usage: Update the extension command title Update the extension command title for consistency with other commands. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> --- doc/usage/cmd/extension.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'doc/usage') diff --git a/doc/usage/cmd/extension.rst b/doc/usage/cmd/extension.rst index 2b88398b18b..6366cf56e72 100644 --- a/doc/usage/cmd/extension.rst +++ b/doc/usage/cmd/extension.rst @@ -1,8 +1,8 @@ .. SPDX-License-Identifier: GPL-2.0+ .. Copyright 2021, Kory Maincent <kory.maincent@bootlin.com> -U-Boot extension board usage (CONFIG_EXTENSION) -=============================================== +extension command +================= Synopsis -------- -- cgit v1.3.1 From 71474127bcf7e01b2145d78792522cd78380e1c9 Mon Sep 17 00:00:00 2001 From: Bin Meng <bmeng.cn@gmail.com> Date: Mon, 28 Mar 2022 10:43:49 +0800 Subject: doc: usage: Convert README.vxworks to reST This converts the existing README.vxworks to reST, and puts it under the doc/usage/os directory. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de> --- doc/README.vxworks | 115 --------------------------------------------- doc/usage/index.rst | 8 ++++ doc/usage/os/vxworks.rst | 119 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 127 insertions(+), 115 deletions(-) delete mode 100644 doc/README.vxworks create mode 100644 doc/usage/os/vxworks.rst (limited to 'doc/usage') diff --git a/doc/README.vxworks b/doc/README.vxworks deleted file mode 100644 index 12a0d744d8a..00000000000 --- a/doc/README.vxworks +++ /dev/null @@ -1,115 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0+ -# -# Copyright (C) 2013, Miao Yan <miao.yan@windriver.com> -# Copyright (C) 2015-2018, Bin Meng <bmeng.cn@gmail.com> -# Copyright (C) 2019, Lihua Zhao <lihua.zhao@windriver.com> - -VxWorks Support -=============== - -This document describes the information about U-Boot loading VxWorks kernel. - -Status ------- -U-Boot supports loading VxWorks kernels via 'bootvx' and 'bootm' commands. -For booting old kernels (6.9.x) on PowerPC and ARM, and all kernel versions -on other architectures, 'bootvx' shall be used. For booting VxWorks 7 kernels -on PowerPC and ARM, 'bootm' shall be used. - -With CONFIG_EFI_LOADER option, it's possible to chain load a VxWorks x86 kernel -via the UEFI boot loader application for VxWorks loaded by 'bootefi' command. - -VxWorks 7 on PowerPC and ARM ---------------------------- -From VxWorks 7, VxWorks starts adopting device tree as its hardware description -mechanism (for PowerPC and ARM), thus requiring boot interface changes. -This section will describe the new interface. - -Since VxWorks 7 SR0640 release, VxWorks starts using Linux compatible standard -DTB for some boards. With that, the exact same bootm flow as used by Linux is -used, which includes board-specific DTB fix up. To keep backward compatibility, -only when the least significant bit of flags in bootargs is set, the standard -DTB will be used. Otherwise it falls back to the legacy bootm flow. - -For legacy bootm flow, make sure the least significant bit of flags in bootargs -is cleared. The calling convention is described below: - -For PowerPC, the calling convention of the new VxWorks entry point conforms to -the ePAPR standard, which is shown below (see ePAPR for more details): - - void (*kernel_entry)(fdt_addr, 0, 0, EPAPR_MAGIC, boot_IMA, 0, 0) - -For ARM, the calling convention is shown below: - - void (*kernel_entry)(void *fdt_addr) - -When using the Linux compatible standard DTB, the calling convention of VxWorks -entry point is exactly the same as the Linux kernel. - -When booting a VxWorks 7 kernel (uImage format), the parameters passed to bootm -is like below: - - bootm <kernel image address> - <device tree address> - -VxWorks bootline ----------------- -When using 'bootvx', the kernel bootline must be prepared by U-Boot at a -board-specific address before loading VxWorks. U-Boot supplies its address -via "bootaddr" environment variable. To check where the bootline should be -for a specific board, go to the VxWorks BSP for that board, and look for a -parameter called BOOT_LINE_ADRS. Assign its value to "bootaddr". A typical -value for "bootaddr" on an x86 board is 0x101200. - -If a "bootargs" variable is defined, its content will be copied to the memory -location pointed by "bootaddr" as the kernel bootline. If "bootargs" is not -there, command 'bootvx' can construct a valid bootline using the following -environments variables: bootdev, bootfile, ipaddr, netmask, serverip, -gatewayip, hostname, othbootargs. - -When using 'bootm', just define "bootargs" in the environment and U-Boot will -handle bootline fix up for the kernel dtb automatically. - -When using 'bootefi' to chain load an x86 kernel, the UEFI boot loader -application for VxWorks takes care of the kernel bootline preparation. - -Serial console --------------- -It's very common that VxWorks BSPs configure a different baud rate for the -serial console from what is being used by U-Boot. For example, VxWorks tends -to use 9600 as the default baud rate on all x86 BSPs while U-Boot uses 115200. -Please configure both U-Boot and VxWorks to use the same baud rate, or it may -look like VxWorks hangs somewhere as nothing outputs on the serial console. - -x86-specific information ------------------------- -Before direct loading an x86 kernel via 'bootvx', one additional environment -variable need to be provided. This is "vx_phys_mem_base", which represent the -physical memory base address of VxWorks. - -Check VxWorks kernel configuration to look for LOCAL_MEM_LOCAL_ADRS. For -VxWorks 7, this is normally a virtual address and you need find out its -corresponding physical address and assign its value to "vx_phys_mem_base". - -For boards on which ACPI is not supported by U-Boot yet, VxWorks kernel must -be configured to use MP table and virtual wire interrupt mode. This requires -INCLUDE_MPTABLE_BOOT_OP and INCLUDE_VIRTUAL_WIRE_MODE to be included in a -VxWorks kernel configuration. - -Both 32-bit x86 and 64-bit x64 kernels can be loaded. - -There are two types of graphics console drivers in VxWorks. One is the 80x25 -VGA text mode driver. The other one is the EFI console bitmapped graphics mode -driver. To make these drivers function, U-Boot needs to load and run the VGA -BIOS of the graphics card first. - - - If the kernel is configured with 80x25 VGA text mode driver, - CONFIG_FRAMEBUFFER_SET_VESA_MODE must be unset in U-Boot. - - If the kernel is configured with bitmapped graphics mode driver, - CONFIG_FRAMEBUFFER_SET_VESA_MODE need remain set but care must be taken - at which VESA mode is to be set. The supported pixel format is 32-bit - RGBA, hence the available VESA mode can only be one of the following: - * FRAMEBUFFER_VESA_MODE_10F - * FRAMEBUFFER_VESA_MODE_112 - * FRAMEBUFFER_VESA_MODE_115 - * FRAMEBUFFER_VESA_MODE_118 - * FRAMEBUFFER_VESA_MODE_11B diff --git a/doc/usage/index.rst b/doc/usage/index.rst index 5bfe31a4960..a16deee145c 100644 --- a/doc/usage/index.rst +++ b/doc/usage/index.rst @@ -53,3 +53,11 @@ Shell commands cmd/true cmd/ums cmd/wdt + +Booting OS +---------- + +.. toctree:: + :maxdepth: 1 + + os/vxworks diff --git a/doc/usage/os/vxworks.rst b/doc/usage/os/vxworks.rst new file mode 100644 index 00000000000..184042f408a --- /dev/null +++ b/doc/usage/os/vxworks.rst @@ -0,0 +1,119 @@ +.. SPDX-License-Identifier: GPL-2.0+ +.. Copyright (C) 2013, Miao Yan <miao.yan@windriver.com> +.. Copyright (C) 2015-2018, Bin Meng <bmeng.cn@gmail.com> +.. Copyright (C) 2019, Lihua Zhao <lihua.zhao@windriver.com> + +VxWorks +======= + +This document describes the information about U-Boot loading VxWorks kernel. + +Status +------ +U-Boot supports loading VxWorks kernels via 'bootvx' and 'bootm' commands. +For booting old kernels (6.9.x) on PowerPC and ARM, and all kernel versions +on other architectures, 'bootvx' shall be used. For booting VxWorks 7 kernels +on PowerPC and ARM, 'bootm' shall be used. + +With CONFIG_EFI_LOADER option, it's possible to chain load a VxWorks x86 kernel +via the UEFI boot loader application for VxWorks loaded by 'bootefi' command. + +VxWorks 7 on PowerPC and ARM +---------------------------- +From VxWorks 7, VxWorks starts adopting device tree as its hardware description +mechanism (for PowerPC and ARM), thus requiring boot interface changes. +This section will describe the new interface. + +Since VxWorks 7 SR0640 release, VxWorks starts using Linux compatible standard +DTB for some boards. With that, the exact same bootm flow as used by Linux is +used, which includes board-specific DTB fix up. To keep backward compatibility, +only when the least significant bit of flags in bootargs is set, the standard +DTB will be used. Otherwise it falls back to the legacy bootm flow. + +For legacy bootm flow, make sure the least significant bit of flags in bootargs +is cleared. The calling convention is described below: + +For PowerPC, the calling convention of the new VxWorks entry point conforms to +the ePAPR standard, which is shown below (see ePAPR for more details): + +.. code-block:: c + + void (*kernel_entry)(fdt_addr, 0, 0, EPAPR_MAGIC, boot_IMA, 0, 0) + +For ARM, the calling convention is shown below: + +.. code-block:: c + + void (*kernel_entry)(void *fdt_addr) + +When using the Linux compatible standard DTB, the calling convention of VxWorks +entry point is exactly the same as the Linux kernel. + +When booting a VxWorks 7 kernel (uImage format), the parameters passed to bootm +is like below:: + + bootm <kernel image address> - <device tree address> + +VxWorks bootline +---------------- +When using 'bootvx', the kernel bootline must be prepared by U-Boot at a +board-specific address before loading VxWorks. U-Boot supplies its address +via "bootaddr" environment variable. To check where the bootline should be +for a specific board, go to the VxWorks BSP for that board, and look for a +parameter called BOOT_LINE_ADRS. Assign its value to "bootaddr". A typical +value for "bootaddr" on an x86 board is 0x101200. + +If a "bootargs" variable is defined, its content will be copied to the memory +location pointed by "bootaddr" as the kernel bootline. If "bootargs" is not +there, command 'bootvx' can construct a valid bootline using the following +environments variables: bootdev, bootfile, ipaddr, netmask, serverip, +gatewayip, hostname, othbootargs. + +When using 'bootm', just define "bootargs" in the environment and U-Boot will +handle bootline fix up for the kernel dtb automatically. + +When using 'bootefi' to chain load an x86 kernel, the UEFI boot loader +application for VxWorks takes care of the kernel bootline preparation. + +Serial console +-------------- +It's very common that VxWorks BSPs configure a different baud rate for the +serial console from what is being used by U-Boot. For example, VxWorks tends +to use 9600 as the default baud rate on all x86 BSPs while U-Boot uses 115200. +Please configure both U-Boot and VxWorks to use the same baud rate, or it may +look like VxWorks hangs somewhere as nothing outputs on the serial console. + +x86-specific information +------------------------ +Before direct loading an x86 kernel via 'bootvx', one additional environment +variable need to be provided. This is "vx_phys_mem_base", which represent the +physical memory base address of VxWorks. + +Check VxWorks kernel configuration to look for LOCAL_MEM_LOCAL_ADRS. For +VxWorks 7, this is normally a virtual address and you need find out its +corresponding physical address and assign its value to "vx_phys_mem_base". + +For boards on which ACPI is not supported by U-Boot yet, VxWorks kernel must +be configured to use MP table and virtual wire interrupt mode. This requires +INCLUDE_MPTABLE_BOOT_OP and INCLUDE_VIRTUAL_WIRE_MODE to be included in a +VxWorks kernel configuration. + +Both 32-bit x86 and 64-bit x64 kernels can be loaded. + +There are two types of graphics console drivers in VxWorks. One is the 80x25 +VGA text mode driver. The other one is the EFI console bitmapped graphics mode +driver. To make these drivers function, U-Boot needs to load and run the VGA +BIOS of the graphics card first. + + - If the kernel is configured with 80x25 VGA text mode driver, + CONFIG_FRAMEBUFFER_SET_VESA_MODE must be unset in U-Boot. + - If the kernel is configured with bitmapped graphics mode driver, + CONFIG_FRAMEBUFFER_SET_VESA_MODE need remain set but care must be taken + at which VESA mode is to be set. The supported pixel format is 32-bit + RGBA, hence the available VESA mode can only be one of the following: + + * FRAMEBUFFER_VESA_MODE_10F + * FRAMEBUFFER_VESA_MODE_112 + * FRAMEBUFFER_VESA_MODE_115 + * FRAMEBUFFER_VESA_MODE_118 + * FRAMEBUFFER_VESA_MODE_11B -- cgit v1.3.1 From 7fc86c7ed8e3cbfbbf9a08169fd55997f4ee0f0c Mon Sep 17 00:00:00 2001 From: Bin Meng <bmeng.cn@gmail.com> Date: Mon, 28 Mar 2022 10:43:50 +0800 Subject: doc: usage: Update vxworks doc to mention RISC-V support At present the doc only mentions Arm, PowerPC and x86. RISC-V support has been added since VxWorks SR0650 support for a while, and U-Boot supports loading a RISC-V VxWorks kernel too. Let's document it. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> --- doc/usage/os/vxworks.rst | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'doc/usage') diff --git a/doc/usage/os/vxworks.rst b/doc/usage/os/vxworks.rst index 184042f408a..0fe33d2d34c 100644 --- a/doc/usage/os/vxworks.rst +++ b/doc/usage/os/vxworks.rst @@ -13,13 +13,13 @@ Status U-Boot supports loading VxWorks kernels via 'bootvx' and 'bootm' commands. For booting old kernels (6.9.x) on PowerPC and ARM, and all kernel versions on other architectures, 'bootvx' shall be used. For booting VxWorks 7 kernels -on PowerPC and ARM, 'bootm' shall be used. +on PowerPC/ARM/RISC-V, 'bootm' shall be used. With CONFIG_EFI_LOADER option, it's possible to chain load a VxWorks x86 kernel via the UEFI boot loader application for VxWorks loaded by 'bootefi' command. -VxWorks 7 on PowerPC and ARM ----------------------------- +VxWorks 7 on PowerPC/ARM/RISC-V +------------------------------- From VxWorks 7, VxWorks starts adopting device tree as its hardware description mechanism (for PowerPC and ARM), thus requiring boot interface changes. This section will describe the new interface. @@ -49,6 +49,11 @@ For ARM, the calling convention is shown below: When using the Linux compatible standard DTB, the calling convention of VxWorks entry point is exactly the same as the Linux kernel. +For RISC-V, there is no legacy bootm flow as VxWorks always uses the same boot +interface as the Linux kernel, with the calling convention below:: + + void (*kernel_entry)(unsigned long hartid, void *fdt_addr) + When booting a VxWorks 7 kernel (uImage format), the parameters passed to bootm is like below:: -- cgit v1.3.1 From 51a407b872c57938a8f68156b6bdbfb8a528c652 Mon Sep 17 00:00:00 2001 From: Bin Meng <bmeng.cn@gmail.com> Date: Mon, 28 Mar 2022 10:43:51 +0800 Subject: doc: usage: Convert README.plan9 to reST This converts the existing README.plan9 to reST, and puts it under the doc/usage/os directory. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> --- doc/README.plan9 | 18 ------------------ doc/usage/index.rst | 1 + doc/usage/os/plan9.rst | 22 ++++++++++++++++++++++ 3 files changed, 23 insertions(+), 18 deletions(-) delete mode 100644 doc/README.plan9 create mode 100644 doc/usage/os/plan9.rst (limited to 'doc/usage') diff --git a/doc/README.plan9 b/doc/README.plan9 deleted file mode 100644 index 2d3d0e0cf62..00000000000 --- a/doc/README.plan9 +++ /dev/null @@ -1,18 +0,0 @@ -Plan 9 from Bell Labs kernel images require additional setup to pass -configuration information to the kernel. An environment variable named -confaddr must be defined with the same value as CONFADDR (see mem.h). -Use of this facility is optional, but should be preferable to manual -configuration. - -When booting an image, arguments supplied to the bootm command will be -copied to CONFADDR. If no arguments are specified, the contents of the -bootargs environment variable will be copied. - -If no command line arguments or bootargs are defined, CONFADDR is left -uninitialized to permit manual configuration. For example, PC-style -configuration could be simulated by issuing a fatload in bootcmd: - - # setenv bootcmd fatload mmc 0 $confaddr plan9.ini; ...; bootm - -Steven Stallion -June 2013 diff --git a/doc/usage/index.rst b/doc/usage/index.rst index a16deee145c..8a54d9cb030 100644 --- a/doc/usage/index.rst +++ b/doc/usage/index.rst @@ -60,4 +60,5 @@ Booting OS .. toctree:: :maxdepth: 1 + os/plan9 os/vxworks diff --git a/doc/usage/os/plan9.rst b/doc/usage/os/plan9.rst new file mode 100644 index 00000000000..f91712c0094 --- /dev/null +++ b/doc/usage/os/plan9.rst @@ -0,0 +1,22 @@ +.. SPDX-License-Identifier: GPL-2.0+ +.. Steven Stallion +.. June 2013 + +Plan 9 +====== + +Plan 9 from Bell Labs kernel images require additional setup to pass +configuration information to the kernel. An environment variable named +confaddr must be defined with the same value as CONFADDR (see mem.h). +Use of this facility is optional, but should be preferable to manual +configuration. + +When booting an image, arguments supplied to the bootm command will be +copied to CONFADDR. If no arguments are specified, the contents of the +bootargs environment variable will be copied. + +If no command line arguments or bootargs are defined, CONFADDR is left +uninitialized to permit manual configuration. For example, PC-style +configuration could be simulated by issuing a fatload in bootcmd:: + + # setenv bootcmd fatload mmc 0 $confaddr plan9.ini; ...; bootm -- cgit v1.3.1