Difference between revisions of "ETRA SOM/ETRA Hardware/Power and Reset/System boot"

From DAVE Developer's Wiki
Jump to: navigation, search
(Created page with "{{subst:System_boot | nome-som=ETRA | kit-code=ETRA}}")
 
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<section begin=History/>
+
<section begin="History" />
 
{| style="border-collapse:collapse; "
 
{| style="border-collapse:collapse; "
!colspan="4" style="width:100%; text-align:left"; border-bottom:solid 2px #ededed"|History
+
! colspan="4" style="width:100%; text-align:left" ; border-bottom:solid 2px #ededed" |History
 
|-  
 
|-  
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Version
+
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white" |Issue Date
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Issue Date
+
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white" |Notes
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Notes
 
 
|-
 
|-
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|X.Y.Z
+
| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000" |2021/02/24
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|Month Year
+
| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000" |First Release
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|TBD
 
 
|-
 
|-
|-
 
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|[TBD_link X.Y.Z]
 
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|Month Year
 
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|TBD
 
|-
 
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|...
 
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|...
 
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|...
 
 
|-
 
|-
 
|}
 
|}
<section end=History/>
+
<section end="History" />
<section begin=Body/>
+
 
 +
__FORCETOC__
 +
 
 +
<section begin="Body" />
  
 
== System boot ==
 
== System boot ==
Line 29: Line 22:
 
* determines whether the boot is secure or non-secure
 
* determines whether the boot is secure or non-secure
 
* performs some initialization of the system and clean-ups
 
* performs some initialization of the system and clean-ups
 +
* reads the OTP settings
 
* reads the mode pins to determine the primary boot device
 
* reads the mode pins to determine the primary boot device
 
* once it is satisfied, it executes the boot code
 
* once it is satisfied, it executes the boot code
  
 +
=== Boot options ===
  
 +
The default primary boot device is internally set by pull-up or pull-down resistors according to the Boot Mode fileld of the ordering code.
  
''TBD: le sezioni di seguito sono valide - come esempio per AXEL Lite - da rivedere per gli altri prodotti ''
+
The BOOT_MODEx signals are also present on the SoM connector to override the primary boot device.
  
 +
The following table shows all the available options:
  
== Boot options ==
+
{| class="wikitable" style="width:50%;"
 
+
|-
Two options are available related to system boot. They are identified by the Boot field of the ordering code as follows:
+
|'''BOOT_MODE2'''
* 0: SPI NOR / SD option (SOM code: DXLxxxx0xxR)
+
|'''BOOT_MODE1'''
* 1: NAND / SD option (SOM code: DXLxxxx1xxR)
+
|'''BOOT_MODE0'''
For both options the selection of primary boot device is determined by the BOOT_MODE_SEL signal as described in the following sections. BOOT_MODE_SEL is latched when processor reset is released.
+
|'''PRIMARY BOOT DEVICE'''
 +
|-
 +
|0
 +
|0
 +
|0
 +
|UART and USB
 +
|-
 +
|0
 +
|0
 +
|1
 +
|Serial NOR on QUADSPI
 +
|-
 +
|0
 +
|1
 +
|0
 +
|eMMC on SDMMC2
 +
|-
 +
|0
 +
|1
 +
|1
 +
|SLC NAND on FMC
 +
|-
 +
|1
 +
|0
 +
|0
 +
|no boot (for debug access)
 +
|-
 +
|1
 +
|0
 +
|1
 +
|SD card on SDMMC1
 +
|-
 +
|1
 +
|1
 +
|0
 +
|UART and USB
 +
|-
 +
|1
 +
|1
 +
|1
 +
|Serial NAND on QUADSPI
 +
|}
  
In any case, boot process is managed by on-chip boot ROM code that is described in detail in processor's Reference Manual.
+
Use 1k resistors either to VDD or DGND to drive externally the BOOT_MODEx signals.
  
=== SPI NOR / SD option ===
+
=== On board OTP ===
Selection of primary boot device is determined by the BOOT_MODE_SEL signal as follows:
 
* BOOT_MODE_SEL = 0
 
** primary boot device is SD1
 
* boot ROM will try to boot a valid image from the SD card first, and then from the SPI NOR. In case no valid image is found, boot ROM shall enable USB serial download mode automatically
 
* BOOT_MODE_SEL = 1 or floating
 
** primary boot device is SPI NOR flash connected to eCSPI1
 
** in case no valid image is found in NOR flash, boot ROM shall enable USB serial download mode automatically
 
  
=== NAND / SD option ===
+
The reading of BOOT_MODEx pins can be disabled by OTP configuration, in this case the OTP settings are used by the ROM code to determine the boot device.
Selection of primary boot device is determined by the BOOT_MODE_SEL signal as follows:
 
* BOOT_MODE_SEL = 0
 
** primary boot device is SD1
 
** in case no valid image is found in SD card, boot ROM shall enable USB serial download mode automatically
 
* BOOT_MODE_SEL = 1 or floating
 
** primary boot device is NAND flash
 
** in case no valid image is found in NAND flash, boot ROM shall enable USB serial download mode automatically
 
  
===Important note for DualLite/Solo based products (''manufacture mode'' management)===
+
Boot sources can be individually disabled by the OTP settings.
When Dual Lite or Solo processor are used, GPIO_1 and GPIO_4 signals need to be kept high during bootstrap stage in order to prevent the intervention of bootrom's ''manufacture mode''. Bootstrap stage has to be intended as the time elapsing between the release of hardware reset (CPU_PORn) and the execution of the first instruction of user code (typically this is the reset vector of U-Boot boot loader). Please note that, in case GPIO_1 signal is used to implement [[Reset_scheme_(AxelLite)#Handling_CPU-initiated_software_reset|software reset circuit]], it is high during bootstrap stage by design.
 
  
 
----
 
----
  
 
[[Category:ETRA]]
 
[[Category:ETRA]]

Latest revision as of 11:40, 8 January 2024

History
Issue Date Notes
2021/02/24 First Release




System boot[edit | edit source]

The boot process begins at Power On Reset (POR) where the hardware reset logic forces the ARM core to begin execution starting from the on-chip boot ROM. The boot ROM:

  • determines whether the boot is secure or non-secure
  • performs some initialization of the system and clean-ups
  • reads the OTP settings
  • reads the mode pins to determine the primary boot device
  • once it is satisfied, it executes the boot code

Boot options[edit | edit source]

The default primary boot device is internally set by pull-up or pull-down resistors according to the Boot Mode fileld of the ordering code.

The BOOT_MODEx signals are also present on the SoM connector to override the primary boot device.

The following table shows all the available options:

BOOT_MODE2 BOOT_MODE1 BOOT_MODE0 PRIMARY BOOT DEVICE
0 0 0 UART and USB
0 0 1 Serial NOR on QUADSPI
0 1 0 eMMC on SDMMC2
0 1 1 SLC NAND on FMC
1 0 0 no boot (for debug access)
1 0 1 SD card on SDMMC1
1 1 0 UART and USB
1 1 1 Serial NAND on QUADSPI

Use 1k resistors either to VDD or DGND to drive externally the BOOT_MODEx signals.

On board OTP[edit | edit source]

The reading of BOOT_MODEx pins can be disabled by OTP configuration, in this case the OTP settings are used by the ROM code to determine the boot device.

Boot sources can be individually disabled by the OTP settings.