forked from OERV-BSP/u-boot
@@ -11,7 +11,8 @@ Synopis
|
||||
bootflow scan [-abelGH] [bootdev]
|
||||
bootflow list [-e]
|
||||
bootflow select [<num|name>]
|
||||
bootflow info [-d]
|
||||
bootflow info [-ds]
|
||||
bootflow read
|
||||
bootflow boot
|
||||
bootflow cmdline [set|get|clear|delete|auto] <param> [<value>]
|
||||
|
||||
@@ -191,11 +192,29 @@ Error
|
||||
|
||||
Use the `-d` flag to dump out the contents of the bootfile file.
|
||||
|
||||
The `-s` flag shows any x86 setup block, instead of the above.
|
||||
|
||||
|
||||
bootflow read
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
This reads any files related to the bootflow. Some bootflows with large files
|
||||
avoid doing this when the bootflow is scanned, since it uses a lot of memory
|
||||
and takes extra time. The files are then automatically read when `bootflow boot`
|
||||
is used.
|
||||
|
||||
This command reads these files immediately. Typically this fills in the bootflow
|
||||
`buf` property, which can be used to examine the bootflow.
|
||||
|
||||
Note that reading the files does not result in any extra parsing, nor loading of
|
||||
images in the files. This is purely used to read in the data ready for
|
||||
booting, or examination.
|
||||
|
||||
|
||||
bootflow boot
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
This boots the current bootflow.
|
||||
This boots the current bootflow, reading any required files first.
|
||||
|
||||
|
||||
bootflow cmdline
|
||||
@@ -522,6 +541,122 @@ the cmdline is word-wrapped here and some parts of the command line are elided::
|
||||
[ 0.000000] Command line: loglevel=7 ... usb-storage.quirks=13fe:6500:u earlycon=uart8250,mmio32,0xfe03e000,115200n8
|
||||
[ 0.000000] x86/split lock detection: warning about user-space split_locks
|
||||
|
||||
This shows looking at x86 setup information::
|
||||
|
||||
=> bootfl sel 0
|
||||
=> bootfl i -s
|
||||
Setup located at 77b56010:
|
||||
|
||||
ACPI RSDP addr : 0
|
||||
E820: 2 entries
|
||||
Addr Size Type
|
||||
0 1000 RAM
|
||||
fffff000 1000 Reserved
|
||||
Setup sectors : 1e
|
||||
Root flags : 1
|
||||
Sys size : 63420
|
||||
RAM size : 0
|
||||
Video mode : ffff
|
||||
Root dev : 0
|
||||
Boot flag : 0
|
||||
Jump : 66eb
|
||||
Header : 53726448
|
||||
Kernel V2
|
||||
Version : 20d
|
||||
Real mode switch : 0
|
||||
Start sys seg : 1000
|
||||
Kernel version : 38cc
|
||||
@00003acc:
|
||||
Type of loader : ff
|
||||
unknown
|
||||
Load flags : 1
|
||||
: loaded-high
|
||||
Setup move size : 8000
|
||||
Code32 start : 100000
|
||||
Ramdisk image : 0
|
||||
Ramdisk size : 0
|
||||
Bootsect kludge : 0
|
||||
Heap end ptr : 5160
|
||||
Ext loader ver : 0
|
||||
Ext loader type : 0
|
||||
Command line ptr : 735000
|
||||
Initrd addr max : 7fffffff
|
||||
Kernel alignment : 200000
|
||||
Relocatable kernel : 1
|
||||
Min alignment : 15
|
||||
: 200000
|
||||
Xload flags : 3
|
||||
: 64-bit-entry can-load-above-4gb
|
||||
Cmdline size : 7ff
|
||||
Hardware subarch : 0
|
||||
HW subarch data : 0
|
||||
Payload offset : 26e
|
||||
Payload length : 612045
|
||||
Setup data : 0
|
||||
Pref address : 1000000
|
||||
Init size : 1383000
|
||||
Handover offset : 0
|
||||
|
||||
This shows reading a bootflow to examine the kernel::
|
||||
|
||||
=> bootfl i 0
|
||||
Name:
|
||||
Device: emmc@1c,0.bootdev
|
||||
Block dev: emmc@1c,0.blk
|
||||
Method: cros
|
||||
State: ready
|
||||
Partition: 2
|
||||
Subdir: (none)
|
||||
Filename: <NULL>
|
||||
Buffer: 0
|
||||
Size: 63ee00 (6548992 bytes)
|
||||
OS: ChromeOS
|
||||
Cmdline: console= loglevel=7 init=/sbin/init cros_secure oops=panic panic=-1 root=PARTUUID=35c775e7-3735-d745-93e5-d9e0238f7ed0/PARTNROFF=1 rootwait rw dm_verity.error_behavior=3 dm_verity.max_bios=-1 dm_verity.dev_wait=0 dm="1 vroot none rw 1,0 3788800 verity payload=ROOT_DEV hashtree=HASH_DEV hashstart=3788800 alg=sha1 root_hexdigest=55052b629d3ac889f25a9583ea12cdcd3ea15ff8 salt=a2d4d9e574069f4fed5e3961b99054b7a4905414b60a25d89974a7334021165c" noinitrd vt.global_cursor_default=0 kern_guid=35c775e7-3735-d745-93e5-d9e0238f7ed0 add_efi_memmap boot=local noresume noswap i915.modeset=1 tpm_tis.force=1 tpm_tis.interrupts=0 nmi_watchdog=panic,lapic disablevmx=off
|
||||
X86 setup: 77b56010
|
||||
Logo: (none)
|
||||
FDT: <NULL>
|
||||
Error: 0
|
||||
|
||||
Note that `Buffer` is 0 so it has not be read yet. Using `bootflow read`::
|
||||
|
||||
=> bootfl read
|
||||
=> bootfl info
|
||||
Name:
|
||||
Device: emmc@1c,0.bootdev
|
||||
Block dev: emmc@1c,0.blk
|
||||
Method: cros
|
||||
State: ready
|
||||
Partition: 2
|
||||
Subdir: (none)
|
||||
Filename: <NULL>
|
||||
Buffer: 77b7e400
|
||||
Size: 63ee00 (6548992 bytes)
|
||||
OS: ChromeOS
|
||||
Cmdline: console= loglevel=7 init=/sbin/init cros_secure oops=panic panic=-1 root=PARTUUID=35c775e7-3735-d745-93e5-d9e0238f7ed0/PARTNROFF=1 rootwait rw dm_verity.error_behavior=3 dm_verity.max_bios=-1 dm_verity.dev_wait=0 dm="1 vroot none rw 1,0 3788800 verity payload=ROOT_DEV hashtree=HASH_DEV hashstart=3788800 alg=sha1 root_hexdigest=55052b629d3ac889f25a9583ea12cdcd3ea15ff8 salt=a2d4d9e574069f4fed5e3961b99054b7a4905414b60a25d89974a7334021165c" noinitrd vt.global_cursor_default=0 kern_guid=35c775e7-3735-d745-93e5-d9e0238f7ed0 add_efi_memmap boot=local noresume noswap i915.modeset=1 tpm_tis.force=1 tpm_tis.interrupts=0 nmi_watchdog=panic,lapic disablevmx=off
|
||||
X86 setup: 781b4400
|
||||
Logo: (none)
|
||||
FDT: <NULL>
|
||||
Error: 0
|
||||
|
||||
Now the buffer can be accessed::
|
||||
|
||||
=> md 77b7e400
|
||||
77b7e400: 1186f6fc 40000002 b8fa0c75 00000018 .......@u.......
|
||||
77b7e410: c08ed88e a68dd08e 000001e8 000000e8 ................
|
||||
77b7e420: ed815d00 00000021 62c280b8 89e80100 .]..!......b....
|
||||
77b7e430: 22f7e8c4 c0850061 22ec850f eb890061 ..."a......"a...
|
||||
77b7e440: 0230868b 01480000 21d0f7c3 00fb81c3 ..0...H....!....
|
||||
77b7e450: 7d010000 0000bb05 c3810100 00d4f000 ...}............
|
||||
77b7e460: 8130858d 85890061 00618132 3095010f ..0.a...2.a....0
|
||||
77b7e470: 0f006181 c883e020 e0220f20 e000bb8d .a.. ... .".....
|
||||
77b7e480: c0310062 001800b9 8dabf300 62e000bb b.1............b
|
||||
77b7e490: 07878d00 89000010 00bb8d07 8d0062f0 .............b..
|
||||
77b7e4a0: 00100787 0004b900 07890000 00100005 ................
|
||||
77b7e4b0: 08c78300 8df37549 630000bb 0183b800 ....Iu.....c....
|
||||
77b7e4c0: 00b90000 89000008 00000507 c7830020 ............ ...
|
||||
77b7e4d0: f3754908 e000838d 220f0062 0080b9d8 .Iu.....b.."....
|
||||
77b7e4e0: 320fc000 08e8ba0f c031300f b8d0000f ...2.....01.....
|
||||
77b7e4f0: 00000020 6ad8000f 00858d10 50000002 ......j.......P
|
||||
|
||||
|
||||
Return value
|
||||
|
||||
@@ -10,6 +10,11 @@ Synopis
|
||||
|
||||
cedit load <interface> <dev[:part]> <filename>
|
||||
cedit run
|
||||
cedit write_fdt <dev[:part]> <filename>
|
||||
cedit read_fdt <dev[:part]> <filename>
|
||||
cedit write_env [-v]
|
||||
cedit read_env [-v]
|
||||
cedit write_cmos [-v] [dev]
|
||||
|
||||
Description
|
||||
-----------
|
||||
@@ -22,6 +27,69 @@ It makes use of the expo subsystem.
|
||||
The description is in the form of a devicetree file, as documented at
|
||||
:ref:`expo_format`.
|
||||
|
||||
See :doc:`../../develop/cedit` for information about the configuration editor.
|
||||
|
||||
cedit load
|
||||
~~~~~~~~~~
|
||||
|
||||
Loads a configuration-editor description from a file. It creates a new cedit
|
||||
structure ready for use. Initially no settings are read, so default values are
|
||||
used for each object.
|
||||
|
||||
cedit run
|
||||
~~~~~~~~~
|
||||
|
||||
Runs the default configuration-editor event loop. This is very simple, just
|
||||
accepting character input and moving through the objects under user control.
|
||||
The implementation is at `cedit_run()`.
|
||||
|
||||
cedit write_fdt
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
Writes the current user settings to a devicetree file. For each menu item the
|
||||
selected ID and its text string are written.
|
||||
|
||||
cedit read_fdt
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
Reads the user settings from a devicetree file and updates the cedit with those
|
||||
settings.
|
||||
|
||||
cedit read_env
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
Reads the settings from the environment variables. For each menu item `<name>`,
|
||||
cedit looks for a variable called `c.<name>` with the ID of the selected menu
|
||||
item.
|
||||
|
||||
The `-v` flag enables verbose mode, where each variable is printed after it is
|
||||
read.
|
||||
|
||||
cedit write_env
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
Writes the settings to environment variables. For each menu item the selected
|
||||
ID and its text string are written, similar to:
|
||||
|
||||
setenv c.<name> <selected_id>
|
||||
setenv c.<name>-str <selected_id's text string>
|
||||
|
||||
The `-v` flag enables verbose mode, where each variable is printed before it is
|
||||
set.
|
||||
|
||||
cedit write_cmos
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
Writes the settings to locations in the CMOS RAM. The locations used are
|
||||
specified by the schema. See `expo_format_`.
|
||||
|
||||
The `-v` flag enables verbose mode, which shows which CMOS locations were
|
||||
updated.
|
||||
|
||||
Normally the first RTC device is used to hold the data. You can specify a
|
||||
different device by name using the `dev` parameter.
|
||||
|
||||
|
||||
Example
|
||||
-------
|
||||
|
||||
@@ -29,3 +97,52 @@ Example
|
||||
|
||||
=> cedit load hostfs - fred.dtb
|
||||
=> cedit run
|
||||
=> cedit write_fdt hostfs - settings.dtb
|
||||
|
||||
That results in::
|
||||
|
||||
/ {
|
||||
cedit-values {
|
||||
cpu-speed = <0x00000006>;
|
||||
cpu-speed-str = "2 GHz";
|
||||
power-loss = <0x0000000a>;
|
||||
power-loss-str = "Always Off";
|
||||
};
|
||||
}
|
||||
|
||||
=> cedit read_fdt hostfs - settings.dtb
|
||||
|
||||
This shows settings being stored in the environment::
|
||||
|
||||
=> cedit write_env -v
|
||||
c.cpu-speed=7
|
||||
c.cpu-speed-str=2.5 GHz
|
||||
c.power-loss=12
|
||||
c.power-loss-str=Memory
|
||||
=> print
|
||||
...
|
||||
c.cpu-speed=6
|
||||
c.cpu-speed-str=2 GHz
|
||||
c.power-loss=10
|
||||
c.power-loss-str=Always Off
|
||||
...
|
||||
|
||||
=> cedit read_env -v
|
||||
c.cpu-speed=7
|
||||
c.power-loss=12
|
||||
|
||||
This shows writing to CMOS RAM. Notice that the bytes at 80 and 84 change::
|
||||
|
||||
=> rtc read 80 8
|
||||
00000080: 00 00 00 00 00 2f 2a 08 ...../*.
|
||||
=> cedit write_cmos -v
|
||||
Write 2 bytes from offset 80 to 84
|
||||
=> rtc read 80 8
|
||||
00000080: 01 00 00 00 08 2f 2a 08 ...../*.
|
||||
=> cedit read_cmos -v
|
||||
Read 2 bytes from offset 80 to 84
|
||||
|
||||
Here is an example with the device specified::
|
||||
|
||||
=> cedit write_cmos rtc@43
|
||||
=>
|
||||
|
||||
@@ -12,8 +12,8 @@ Synopis
|
||||
dm devres
|
||||
dm drivers
|
||||
dm static
|
||||
dm tree [-s]
|
||||
dm uclass
|
||||
dm tree [-s][-e] [uclass name]
|
||||
dm uclass [-e] [udevice name]
|
||||
|
||||
Description
|
||||
-----------
|
||||
@@ -127,6 +127,12 @@ If -s is given, the top-level devices (those which are children of the root
|
||||
device) are shown sorted in order of uclass ID, so it is easier to find a
|
||||
particular device type.
|
||||
|
||||
If -e is given, forward-matching against existing devices is
|
||||
made and only the matched devices are shown.
|
||||
|
||||
If a device name is given, forward-matching against existing devices is
|
||||
made and only the matched devices are shown.
|
||||
|
||||
dm uclass
|
||||
~~~~~~~~~
|
||||
|
||||
@@ -140,6 +146,11 @@ For each device, the format is::
|
||||
where `n` is the index within the uclass, `a` is the address of the device in
|
||||
memory and `s` is the sequence number of the device.
|
||||
|
||||
If -e is given, forward-matching against existing uclasses is
|
||||
made and only the matched uclasses are shown.
|
||||
|
||||
If no uclass name is given, all the uclasses are shown.
|
||||
|
||||
|
||||
Examples
|
||||
--------
|
||||
@@ -409,6 +420,15 @@ This example shows the abridged sandbox output::
|
||||
nop 8 [ ] scmi_voltage_domain `-- regulators
|
||||
regulator 5 [ ] scmi_regulator |-- reg@0
|
||||
regulator 6 [ ] scmi_regulator `-- reg@1
|
||||
=> dm tree pinc
|
||||
pinctrl 0 [ + ] sandbox_pinctrl_gpio pinctrl-gpio
|
||||
gpio 1 [ + ] sandbox_gpio |-- base-gpios
|
||||
nop 0 [ + ] gpio_hog | |-- hog_input_active_low
|
||||
nop 1 [ + ] gpio_hog | |-- hog_input_active_high
|
||||
nop 2 [ + ] gpio_hog | |-- hog_output_low
|
||||
nop 3 [ + ] gpio_hog | `-- hog_output_high
|
||||
gpio 2 [ ] sandbox_gpio |-- extra-gpios
|
||||
gpio 3 [ ] sandbox_gpio `-- pinmux-gpios
|
||||
=>
|
||||
|
||||
|
||||
@@ -487,4 +507,10 @@ This example shows the abridged sandbox output::
|
||||
0 * gpio-wdt @ 0301c070, seq 0
|
||||
1 * wdt@0 @ 03021710, seq 1
|
||||
|
||||
=> dm uclass blk
|
||||
uclass 22: blk
|
||||
0 mmc2.blk @ 0301ca00, seq 0
|
||||
1 mmc1.blk @ 0301cee0, seq 1
|
||||
2 mmc0.blk @ 0301d380, seq 2
|
||||
|
||||
=>
|
||||
|
||||
@@ -13,8 +13,10 @@ Synopsis
|
||||
gpt read <interface> <dev> [<varname>]
|
||||
gpt rename <interface> <dev> <part> <name>
|
||||
gpt repair <interface> <dev>
|
||||
gpt set-bootable <interface> <dev> <partition list>
|
||||
gpt setenv <interface> <dev> <partition name>
|
||||
gpt swap <interface> <dev> <name1> <name2>
|
||||
gpt transpose <interface> <dev> <part1> <part2>
|
||||
gpt verify <interface> <dev> [<partition string>]
|
||||
gpt write <interface> <dev> <partition string>
|
||||
|
||||
@@ -90,6 +92,13 @@ gpt repair
|
||||
|
||||
Repairs the GPT partition tables if it they become corrupted.
|
||||
|
||||
gpt set-bootable
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
Sets the bootable flag for all partitions in the table. If the partition name
|
||||
is in 'partition list' (separated by ','), the bootable flag is set, otherwise
|
||||
it is cleared. CONFIG_CMD_GPT_RENAME=y is required.
|
||||
|
||||
gpt setenv
|
||||
~~~~~~~~~~
|
||||
|
||||
@@ -108,6 +117,9 @@ gpt_partition_name
|
||||
gpt_partition_entry
|
||||
the partition number in the table, e.g. 1, 2, 3, etc.
|
||||
|
||||
gpt_partition_bootable
|
||||
1 if the partition is marked as bootable, 0 if not
|
||||
|
||||
gpt swap
|
||||
~~~~~~~~
|
||||
|
||||
@@ -115,6 +127,13 @@ Changes the names of all partitions that are named 'name1' to be 'name2', and
|
||||
all partitions named 'name2' to be 'name1'. CONFIG_CMD_GPT_RENAME=y is
|
||||
required.
|
||||
|
||||
gpt transpose
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Swaps the order of two partition table entries with indexes 'part1' and 'part2'
|
||||
in the partition table, but otherwise leaves the actual partition data
|
||||
untouched.
|
||||
|
||||
gpt verify
|
||||
~~~~~~~~~~
|
||||
|
||||
@@ -167,6 +186,8 @@ Get the information about the partition named 'rootfs'::
|
||||
rootfs
|
||||
=> echo ${gpt_partition_entry}
|
||||
2
|
||||
=> echo ${gpt_partition_bootable}
|
||||
0
|
||||
|
||||
Get the list of partition names on the disk::
|
||||
|
||||
@@ -182,3 +203,24 @@ Get the GUID for a disk::
|
||||
=> gpt guid mmc gpt_disk_uuid
|
||||
=> echo ${gpt_disk_uuid}
|
||||
bec9fc2a-86c1-483d-8a0e-0109732277d7
|
||||
|
||||
Set the bootable flag for the 'boot' partition and clear it for all others::
|
||||
|
||||
=> gpt set-bootable mmc 0 boot
|
||||
|
||||
Swap the order of the 'boot' and 'rootfs' partition table entries::
|
||||
=> gpt setenv mmc 0 rootfs
|
||||
=> echo ${gpt_partition_entry}
|
||||
2
|
||||
=> gpt setenv mmc 0 boot
|
||||
=> echo ${gpt_partition_entry}
|
||||
1
|
||||
|
||||
=> gpt transpose mmc 0 1 2
|
||||
|
||||
=> gpt setenv mmc 0 rootfs
|
||||
=> echo ${gpt_partition_entry}
|
||||
1
|
||||
=> gpt setenv mmc 0 boot
|
||||
=> echo ${gpt_partition_entry}
|
||||
2
|
||||
|
||||
Reference in New Issue
Block a user