From: Christian Hewitt <christianshewitt@gmail.com>
To: u-boot@lists.denx.de, u-boot-amlogic@groups.io,
linux-amlogic@lists.infradead.org
Subject: [PATCH 02/33] doc: boards: amlogic: update documentation for boot-flow
Date: Mon, 20 Mar 2023 11:45:38 +0000 [thread overview]
Message-ID: <20230320114609.930145-3-christianshewitt@gmail.com> (raw)
In-Reply-To: <20230320114609.930145-1-christianshewitt@gmail.com>
Improve documentation.
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
---
doc/board/amlogic/boot-flow.rst | 178 ++++++++++++++++----------------
1 file changed, 90 insertions(+), 88 deletions(-)
diff --git a/doc/board/amlogic/boot-flow.rst b/doc/board/amlogic/boot-flow.rst
index 2049672b1b..041297c512 100644
--- a/doc/board/amlogic/boot-flow.rst
+++ b/doc/board/amlogic/boot-flow.rst
@@ -3,132 +3,134 @@
Amlogic SoC Boot Flow
=====================
-The Amlogic SoCs have a pre-defined boot sequence in the SoC ROM code. Here are
-the possible boot sources of different SoC families supported by U-Boot:
+Amlogic SoCs follow a pre-defined boot sequence stored in SoC ROM code. The possible boot
+sequences of the different SoC families are:
-GX* & AXG family
+GX* & AXG Family
----------------
-+----------+--------------------+-------+-------+---------------+---------------+
-| | 1 | 2 | 3 | 4 | 5 |
-+==========+====================+=======+=======+===============+===============+
-| S905 | POC=0: SPI NOR | eMMC | NAND | SD Card | USB Device |
-| S905X | | | | | |
-| S905L | | | | | |
-| S905W | | | | | |
-| S912 | | | | | |
-+----------+--------------------+-------+-------+---------------+---------------+
-| S805X | POC=0: SPI NOR | eMMC | NAND | USB Device | - |
-| A113D | | | | | |
-| A113X | | | | | |
-+----------+--------------------+-------+-------+---------------+---------------+
++----------+-------------------+---------+---------+---------+---------+
+| | 1 | 2 | 3 | 4 | 5 |
++==========+===================+=========+=========+=========+=========+
+| S905 | POC=0: SPI NOR | eMMC | NAND | SD | USB |
+| S905D | | | | | |
+| S905L | | | | | |
+| S905W | | | | | |
+| S905X | | | | | |
+| S905Y | | | | | |
+| S912 | | | | | |
++----------+-------------------+---------+---------+---------+---------+
+| S805X | POC=0: SPI NOR | eMMC | NAND | USB | - |
+| A113D | | | | | |
+| A113X | | | | | |
++----------+-------------------+---------+---------+---------+---------+
POC pin: `NAND_CLE`
-Some boards provide a button to force USB BOOT which disables the eMMC clock signal
-to bypass the eMMC stage. Others have removable eMMC modules; removing the eMMC and
-SDCard will allow boot from USB.
+Some boards provide a button to force USB boot by disabling the eMMC clock signal and
+allowing the eMMC step to be bypassed. Others have removable eMMC modules; removing an
+eMMC module and SD card will allow boot from USB.
-An exception is the lafrite board (aml-s805x-xx) which has no SDCard slot and boots
-from SPI. The only ways to boot the lafrite board from USB are:
+An exception is the Libre Computer AML-S805X-XX (LaFrite) board which has no SD card
+slot and boots from SPI. Booting a LaFrite board from USB requires either:
- - Erase the first sectors of SPI NOR flash
- - Insert an HDMI boot plug forcing boot over USB
+ - Erasing the first sectors of SPI NOR flash
+ - Inserting an HDMI boot plug forcing boot over USB
-The VIM1 and initial VIM2 boards provide a test point on the eMMC signals to block
-the storage from answering and continue to the next boot step.
+The VIM1 and initial VIM2 boards provide a test point on the eMMC signals to block the
+storage from answering, allowing boot to continue with the next boot step.
-The USB Device boot uses the first USB interface. On some boards this port is only
-available on an USB-A type connector and needs an special Type-A to Type-A cable to
-communicate with the BootROM.
+USB boot uses the first USB interface. On some boards this port is only available on a
+USB-A type connector and requires a special Type-A to Type-A cable to communicate with
+the BootROM.
-G12* & SM1 family
+G12* & SM1 Family
-----------------
-+-------+-------+-------+---------------+---------------+---------------+---------------+
-| POC0 | POC1 | POC2 | 1 | 2 | 3 | 4 |
-+=======+=======+=======+===============+===============+===============+===============+
-| 0 | 0 | 0 | USB Device | SPI NOR | NAND/eMMC | SDCard |
-+-------+-------+-------+---------------+---------------+---------------+---------------+
-| 0 | 0 | 1 | USB Device | NAND/eMMC | SDCard | - |
-+-------+-------+-------+---------------+---------------+---------------+---------------+
-| 0 | 1 | 0 | SPI NOR | NAND/eMMC | SDCard | USB Device |
-+-------+-------+-------+---------------+---------------+---------------+---------------+
-| 0 | 1 | 1 | SPI NAND | NAND/eMMC | USB Device | - |
-+-------+-------+-------+---------------+---------------+---------------+---------------+
-| 1 | 0 | 0 | USB Device | SPI NOR | NAND/eMMC | SDCard |
-+-------+-------+-------+---------------+---------------+---------------+---------------+
-| 1 | 0 | 1 | USB Device | NAND/eMMC | SDCard | - |
-+-------+-------+-------+---------------+---------------+---------------+---------------+
-| 1 | 1 | 0 | SPI NOR | NAND/eMMC | SDCard | USB Device |
-+-------+-------+-------+---------------+---------------+---------------+---------------+
-| 1 | 1 | 1 | NAND/eMMC | SDCard | USB Device | - |
-+-------+-------+-------+---------------+---------------+---------------+---------------+
-
-The last option (1/1/1) is the normal default seen on production devices.
++-------+-------+-------+------------+------------+------------+-----------+
+| POC0 | POC1 | POC2 | 1 | 2 | 3 | 4 |
++=======+=======+=======+============+============+============+===========+
+| 0 | 0 | 0 | USB | SPI-NOR | NAND/eMMC | SD |
++-------+-------+-------+------------+------------+-------------+----------+
+| 0 | 0 | 1 | USB | NAND/eMMC | SD | - |
++-------+-------+-------+------------+------------+------------+-----------+
+| 0 | 1 | 0 | SPI-NOR | NAND/eMMC | SD | USB |
++-------+-------+-------+------------+------------+------------+-----------+
+| 0 | 1 | 1 | SPI-NAND | NAND/eMMC | USB | - |
++-------+-------+-------+------------+------------+------------+-----------+
+| 1 | 0 | 0 | USB | SPI-NOR | NAND/eMMC | SD |
++-------+-------+-------+------------+------------+------------+-----------+
+| 1 | 0 | 1 | USB | NAND/eMMC | SD | - |
++-------+-------+-------+------------+------------+------------+-----------+
+| 1 | 1 | 0 | SPI-NOR | NAND/eMMC | SD | USB |
++-------+-------+-------+------------+------------+------------+-----------+
+| 1 | 1 | 1 | NAND/eMMC | SD | USB | - |
++-------+-------+-------+------------+------------+------------+-----------+
+
+The last option (1/1/1) is the normal default seen on production devices:
* POC0 pin: `BOOT_4` (0 and all other 1 means SPI NAND boot first)
* POC1 pin: `BOOT_5` (0 and all other 1 means USB Device boot first
* POC2 pin: `BOOT_6` (0 and all other 1 means SPI NOR boot first)
Most boards provide a button to force USB BOOT which lowers `BOOT_5` to 0. Some boards
-provide a test point on the eMMC or SPI NOR clock signals to block the storage from
-answering and continue to the next boot step.
+provide a test point on eMMC or SPI NOR clock signals to block storage from answering
+and allowing boot to continue from the next boot step.
-The Khadas VIM3/3L boards embed a microcontroller which sets POC signals according
-to its configuration or a specific key press sequence to either boot from SPI NOR
-or eMMC then SDCard, or boot as an USB Device.
+The Khadas VIM3/3L boards embed a microcontroller which sets POC signals according to
+its configuration or a specific key press sequence to either boot from SPI NOR or eMMC
+then SD card, or boot as a USB device.
-The Odroid N2/N2+ has a hardware switch to select between SPI NOR or eMMC boot.
+The Odroid N2/N2+ has a hardware switch to select between SPI NOR or eMMC boot. The
+Odroid HC4 has a button to disable SPI-NOR allowing boot from SD card.
Boot Modes
----------
- * SDCard
+ * SD
-The BootROM fetches the first SDCard sectors in one sequence, then checks the content
-of the data. The BootROM expects to find the FIP binary in sector 1, 512 bytes offset
-from the start.
+The BootROM fetches the first SD card sectors in one sequence then checks the content of
+the data. It expects to find the FIP binary in sector 1, 512 bytes offset from the start.
* eMMC
-The BootROM fetches the first sectors in one sequence, first on the main partition,
-and then on the Boot0 followed by Boot1 HW partitions. After each read, the BootROM
-checks the data and looks to the next partition if it fails. The BootROM expects to
-find the FIP binary in sector 1, 512 bytes offset from the start.
+The BootROM fetches the first sectors of the main partition in one sequence then checks
+the content of the data. On GXL and newer boards it expects to find the FIP binary in
+sector 1, 512 bytes offset from the start. If not found it checks the boot0 partition,
+then the boot1 partition. On GXBB it expects to find the FIP binary at an offset that
+conflicts with MBR partition tables, but this has been worked around (thus avoiding the
+need for a partition scheme that relocates the MBR). For a more detailed explanation
+please see: https://github.com/LibreELEC/amlogic-boot-fip/pull/8
- * SPI NOR
+ * SPI-NOR
-The BootROM fetches the first SPI NOR sectors in one sequence, then checks the content
-of the data. The BootROM expects to find the FIP binary in sector 1, 512 bytes offset
-from the start.
+The BootROM fetches the first SPI NOR sectors in one sequence then checks the content of
+the data. It expects to find the FIP binary in sector 1, 512 bytes offset from the start.
- * NAND & SPI NAND
+ * NAND & SPI-NAND
These modes are rarely used in open platforms and no details are available.
- * USB Device
+ * USB
-The BootROM sets the USB Gadget interface to serve a custom USB protocol with the
-USB ID 1b8e:c003. The Amlogic `update` utility is designed to use this protocol. It
-is also implemented in the Amlogic Vendor U-Boot.
+The BootROM supports a custom USB protocol and sets the USB Gadget interface to use the
+USB ID 1b8e:c003. The Amlogic `update` utility uses this protocol. It is also supported
+in the Amlogic vendor U-Boot sources.
-The open-source `pyamlboot` utility https://github.com/superna9999/pyamlboot also
-implements this protocol and can load U-Boot in memory in order to start the SoC
-without any attached storage or to recover from a failed/incorrect image flash.
+The `pyamlboot` utility https://github.com/superna9999/pyamlboot is open-source and also
+implements the USB protocol. It can load U-Boot into memory to start the SoC without the
+storage being attached, or to recover the device from a failed/incorrect image flash.
-HDMI Recovery
--------------
+HDMI Recovery Dongle
+--------------------
-The BootROM also briefly reads 8 bytes at address I2C 0x52 offset 0xf8 (248) on the
-HDMI DDC bus. If the content is `boot@USB` it will force USB boot mode. If the content
-is `boot@SDC` it will force SDCard boot mode.
+The BootROM also reads 8 bytes at address I2C 0x52 offset 0xf8 (248) on the HDMI DDC bus
+during startup. The content `boot@USB` forces USB boot. The content `boot@SDC` forces SD
+card boot. The content `boot@SPI` forces SPI-NOT boot. If an SD card or USB device does
+not enumerate the BootROM continues with the normal boot sequence.
-If USB Device doesn't enumerate or SD Card boot step doesn't work, the BootROM will
-continue with the normal boot sequence.
+HDMI boot dongles can be created by connecting a 256bytes EEPROM set to answer on address
+0x52, with `boot@USB` or `boot@SDC` or `boot@SPI` programmed at offset 0xf8 (248).
-Special boot dongles can be built by connecting a 256bytes EEPROM set to answer on
-address 0x52, and program `boot@USB` or `boot@SDC` at offset 0xf8 (248).
-
-Note: If the SoC is booted with USB Device forced at first step, it will keep the boot
-order on warm reboot. Only cold reboot (power removed) will reset the boot order.
+If the SoC is booted with USB Device forced at first step, it will retain the forced boot
+order on warm reboot. Only cold reboot (removing power) will reset the boot order.
--
2.34.1
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
next prev parent reply other threads:[~2023-03-20 11:46 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-20 11:45 [PATCH 00/33] doc: board: amlogic: spring clean-up of Amlogic docs Christian Hewitt
2023-03-20 11:45 ` [PATCH 01/33] doc: boards: amlogic: update documentation for index page Christian Hewitt
2023-03-20 11:45 ` Christian Hewitt [this message]
2023-03-20 11:45 ` [PATCH 03/33] doc: boards: amlogic: update documentation for pre-generated-fip's Christian Hewitt
2023-03-20 11:45 ` [PATCH 04/33] doc: boards: amlogic: update documentation for Beelink GT-King Christian Hewitt
2023-03-20 11:45 ` [PATCH 05/33] doc: boards: amlogic: update documentation for Beelink GT-King Pro Christian Hewitt
2023-03-20 11:45 ` [PATCH 06/33] doc: boards: amlogic: update documentation for JetHub J100 Christian Hewitt
2023-03-20 11:45 ` [PATCH 07/33] doc: boards: amlogic: update documentation for JetHub J80 Christian Hewitt
2023-03-20 11:45 ` [PATCH 08/33] doc: boards: amlogic: update documentation for Khadas VIM Christian Hewitt
2023-03-20 11:45 ` [PATCH 09/33] doc: boards: amlogic: update documentation for Khadas VIM2 Christian Hewitt
2023-03-20 11:45 ` [PATCH 10/33] doc: boards: amlogic: update documentation for Khadas VIM3 Christian Hewitt
2023-03-20 11:45 ` [PATCH 11/33] doc: boards: amlogic: update documentation for Khadas VIM3L Christian Hewitt
2023-03-20 11:45 ` [PATCH 12/33] doc: boards: amlogic: update documentation for LaFrite Christian Hewitt
2023-03-20 11:45 ` [PATCH 13/33] doc: boards: amlogic: update documentation for LePotato Christian Hewitt
2023-03-20 11:45 ` [PATCH 14/33] doc: boards: amlogic: update documentation for NanoPi-K2 Christian Hewitt
2023-03-20 11:45 ` [PATCH 15/33] doc: boards: amlogic: update documentation for ODROID-C2 Christian Hewitt
2023-03-20 11:45 ` [PATCH 16/33] doc: boards: amlogic: update documentation for ODROID-C4 Christian Hewitt
2023-03-20 11:45 ` [PATCH 17/33] doc: boards: amlogic: update documentation for ODROID GO ULTRA Christian Hewitt
2023-03-20 11:45 ` [PATCH 18/33] doc: boards: amlogic: update documentation for ODROID-N2/N2+ Christian Hewitt
2023-03-20 11:45 ` [PATCH 19/33] doc: boards: amlogic: update documentation for ODROID-N2L Christian Hewitt
2023-03-20 11:45 ` [PATCH 20/33] doc: boards: amlogic: update documentation for P200 Christian Hewitt
2023-03-20 11:45 ` [PATCH 21/33] doc: boards: amlogic: update documentation for P201 Christian Hewitt
2023-03-20 11:45 ` [PATCH 22/33] doc: boards: amlogic: update documentation for Q200 Christian Hewitt
2023-03-20 11:45 ` [PATCH 23/33] doc: boards: amlogic: update documentation for Radxa Zero Christian Hewitt
2023-03-20 11:46 ` [PATCH 24/33] doc: boards: amlogic: update documentation for S400 Christian Hewitt
2023-03-20 11:46 ` [PATCH 25/33] doc: boards: amlogic: update documentation for SEI510 Christian Hewitt
2023-03-20 11:46 ` [PATCH 26/33] doc: boards: amlogic: update documentation for SEI610 Christian Hewitt
2023-03-20 11:46 ` [PATCH 27/33] doc: boards: amlogic: update documentation for U200 Christian Hewitt
2023-03-20 11:46 ` [PATCH 28/33] doc: boards: amlogic: update documentation for W400 Christian Hewitt
2023-03-20 11:46 ` [PATCH 29/33] doc: boards: amlogic: update documentation for WeTek Core2 Christian Hewitt
2023-03-20 18:40 ` Simon Glass
2023-03-21 5:10 ` Christian Hewitt
2023-04-01 6:33 ` Simon Glass
2023-03-20 11:46 ` [PATCH 30/33] doc: boards: amlogic: add documentation for BananaPi CM4IO Christian Hewitt
2023-03-20 12:13 ` Neil Armstrong
2023-03-20 12:23 ` Christian Hewitt
2023-03-20 12:25 ` neil.armstrong
2023-03-20 11:46 ` [PATCH 31/33] doc: boards: amlogic: add documentation for BananaPi M5 Christian Hewitt
2023-03-20 11:46 ` [PATCH 32/33] doc: boards: amlogic: add documentation for GS-King-X Christian Hewitt
2023-03-20 11:46 ` [PATCH 33/33] doc: boards: amlogic: add documentation for ODROID-HC4 Christian Hewitt
2024-04-05 8:03 ` Heinrich Schuchardt
2023-03-22 14:26 ` [PATCH 00/33] doc: board: amlogic: spring clean-up of Amlogic docs Neil Armstrong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230320114609.930145-3-christianshewitt@gmail.com \
--to=christianshewitt@gmail.com \
--cc=linux-amlogic@lists.infradead.org \
--cc=u-boot-amlogic@groups.io \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox