Line 1,287: |
Line 1,287: |
| During boot, the BootROM saves the BCT in IRAM at address 0x40000100. The preceding 0x100 bytes (IRAM memory range from 0x40000000 to 0x40000100) contain a structure called BIT (Boot Info Table) which encapsulates the BCT in IRAM and is initialized by the BootROM as follows: | | During boot, the BootROM saves the BCT in IRAM at address 0x40000100. The preceding 0x100 bytes (IRAM memory range from 0x40000000 to 0x40000100) contain a structure called BIT (Boot Info Table) which encapsulates the BCT in IRAM and is initialized by the BootROM as follows: |
| | | |
| + | === Erista === |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
Line 1,330: |
Line 1,331: |
| |- | | |- |
| | 0x18 | | | 0x18 |
− | | 0x04 | + | | 0x04*0x04 |
− | | BootTimeLogInit | + | | BootTimeLog |
− | | Value from TIMERUS_CNTR_1US when the BootROM enters its main function. | + | | |
− | |- | + | {| class="wikitable" border="1" |
− | | 0x1C | + | |- |
− | | 0x04 | + | ! Offset |
− | | BootTimeLogExit | + | ! Size |
− | | This is the value that gets written into SB_CSR before nvboot. (0x10) | + | ! Field |
− | |- | + | |- |
− | | 0x20 | + | | 0x00 |
− | | 0x04 | + | | 0x04 |
− | | BootReadBctTickCnt | + | | BootTimeLogInit |
− | | Time spent reading the BCT.
| + | |- |
− | |- | + | | 0x04 |
− | | 0x24 | + | | 0x04 |
− | | 0x04 | + | | BootTimeLogExit |
− | | BootReadBLTickCnt | + | |- |
− | | Time spent parsing the bootloader info from the BCT. | + | | 0x08 |
| + | | 0x04 |
| + | | BootReadBctTickCnt |
| + | |- |
| + | | 0x0C |
| + | | 0x04 |
| + | | BootReadBLTickCnt |
| + | |} |
| |- | | |- |
| | 0x28 | | | 0x28 |
Line 1,424: |
Line 1,432: |
| |- | | |- |
| | 0x50 | | | 0x50 |
− | | 0x18*4 | + | | 0x18*0x04 |
| | BlState | | | BlState |
| | Contains the state of attempts to load each bootloader. | | | Contains the state of attempts to load each bootloader. |
Line 1,540: |
Line 1,548: |
| | 0x01 | | | 0x01 |
| | BootFromBootPartition | | | BootFromBootPartition |
| + | |- |
| + | | 0x26 |
| + | | 0x01 |
| + | | BootModeReadSuccessful |
| |- | | |- |
| | 0x27 | | | 0x27 |
Line 1,558: |
Line 1,570: |
| | 0xF4 | | | 0xF4 |
| | 0x0C | | | 0x0C |
− | | Padding | + | | Reserved |
| | Must be empty. | | | Must be empty. |
| + | |} |
| + | |
| + | === Mariko === |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Field |
| + | ! Description |
| + | |- |
| + | | 0x00 |
| + | | 0x04 |
| + | | BootRomVersion |
| + | | Set to 0x00210001 (BOOTDATA_VERSION_T210). |
| + | |- |
| + | | 0x04 |
| + | | 0x04 |
| + | | DataVersion |
| + | | Set to 0x00210001 (BOOTDATA_VERSION_T210). |
| + | |- |
| + | | 0x08 |
| + | | 0x04 |
| + | | RcmVersion |
| + | | Set to 0x00210001 (BOOTDATA_VERSION_T210). |
| + | |- |
| + | | 0x0C |
| + | | 0x04 |
| + | | BootType |
| + | | |
| + | None = 0 |
| + | Cold = 1 |
| + | Recovery = 2 |
| + | Uart = 3 |
| + | ExitRcm = 4 |
| + | |- |
| + | | 0x10 |
| + | | 0x04 |
| + | | PrimaryDevice |
| + | | Set to 0x05 (IROM) on coldboot. |
| + | |- |
| + | | 0x14 |
| + | | 0x04 |
| + | | SecondaryDevice |
| + | | Set to 0x04 (SDMMC) on coldboot. |
| + | |- |
| + | | 0x18 |
| + | | 0x04 |
| + | | AuthenticationScheme |
| + | | |
| + | |- |
| + | | 0x1C |
| + | | 0x01 |
| + | | EncryptionEnabled |
| + | | |
| + | |- |
| + | | 0x1D |
| + | | 0x03 |
| + | | |
| + | | |
| + | |- |
| + | | 0x20 |
| + | | 0x04 |
| + | | BootROMtracker |
| + | | |
| + | |- |
| + | | 0x24 |
| + | | 0x05*0x04 |
| + | | BootTimeLog |
| + | | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Field |
| + | |- |
| + | | 0x00 |
| + | | 0x04 |
| + | | BootTimeLogInit |
| + | |- |
| + | | 0x04 |
| + | | 0x04 |
| + | | BootTimeLogExit |
| + | |- |
| + | | 0x08 |
| + | | 0x04 |
| + | | BootSetupTickCnt |
| + | |- |
| + | | 0x0C |
| + | | 0x04 |
| + | | BootReadBctTickCnt |
| + | |- |
| + | | 0x10 |
| + | | 0x04 |
| + | | BootReadBLTickCnt |
| + | |} |
| + | |- |
| + | | 0x38 |
| + | | 0x10*0x28 |
| + | | BootFlowLog |
| + | | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Field |
| + | |- |
| + | | 0x00 |
| + | | 0x04 |
| + | | BootFlowLogInit |
| + | |- |
| + | | 0x04 |
| + | | 0x04 |
| + | | BootFlowLogExit |
| + | |- |
| + | | 0x08 |
| + | | 0x04 |
| + | | BootFlowFuncId |
| + | |- |
| + | | 0x0C |
| + | | 0x04 |
| + | | BootFlowFuncStatus |
| + | |} |
| + | |- |
| + | | 0x2B8 |
| + | | 0x04 |
| + | | OscFrequency |
| + | | Value from CLK_RST_CONTROLLER_OSC_CTRL. |
| + | |- |
| + | | 0x2BC |
| + | | 0x01 |
| + | | DevInitialized |
| + | | Set to 1 after the boot device is initialized. |
| + | |- |
| + | | 0x2BD |
| + | | 0x01 |
| + | | SdramInitialized |
| + | | Set to 1 after the SDRAM parameters are parsed. |
| + | |- |
| + | | 0x2BE |
| + | | 0x01 |
| + | | ClearedForceRecovery |
| + | | Set to 1 if bit 2 was set in APBDEV_PMC_SCRATCH0. |
| + | |- |
| + | | 0x2BF |
| + | | 0x01 |
| + | | ClearedFailBack |
| + | | Set to 1 if bit 4 was set in APBDEV_PMC_SCRATCH0. |
| + | |- |
| + | | 0x2C0 |
| + | | 0x01 |
| + | | InvokedFailBack |
| + | | Set to 1 if the bootloaders have different versions in the BCT. |
| + | |- |
| + | | 0x2C1 |
| + | | 0x01 |
| + | | IRomPatchStatus |
| + | | |
| + | |- |
| + | | 0x2C2 |
| + | | 0x01 |
| + | | BctSizeValid |
| + | | |
| + | |- |
| + | | 0x2C3 |
| + | | 0x09 |
| + | | BctSizeStatus |
| + | | |
| + | |- |
| + | | 0x2CC |
| + | | 0x04 |
| + | | BctSizeLastJournalRead |
| + | | |
| + | |- |
| + | | 0x2D0 |
| + | | 0x04 |
| + | | BctSizeBlock |
| + | | |
| + | |- |
| + | | 0x2D4 |
| + | | 0x04 |
| + | | BctSizePage |
| + | | |
| + | |- |
| + | | 0x2D8 |
| + | | 0x01 |
| + | | BctValid |
| + | | Set to 1 if the BCT was parsed successfully. |
| + | |- |
| + | | 0x2D9 |
| + | | 0x09 |
| + | | BctStatus |
| + | | Each bit contains the status for BCT reads in a given block. |
| + | |- |
| + | | 0x2E2 |
| + | | 0x02 |
| + | | |
| + | | |
| + | |- |
| + | | 0x2E4 |
| + | | 0x04 |
| + | | BctLastJournalRead |
| + | | Contains the status of the last journal block read. |
| + | None = 0 |
| + | Success = 1 |
| + | ValidationFailure = 2 |
| + | DeviceReadError = 3 |
| + | |- |
| + | | 0x2E8 |
| + | | 0x04 |
| + | | BctBlock |
| + | | Block number where the BCT was found. |
| + | |- |
| + | | 0x2EC |
| + | | 0x04 |
| + | | BctPage |
| + | | Page number where the BCT was found. |
| + | |- |
| + | | 0x2F0 |
| + | | 0x04 |
| + | | BctSize |
| + | | Size of the BCT in IRAM. |
| + | |- |
| + | | 0x2F4 |
| + | | 0x04 |
| + | | BctPtr |
| + | | Pointer to the BCT in IRAM. |
| + | |- |
| + | | 0x2F8 |
| + | | 0x18*0x04 |
| + | | BlState |
| + | | Contains the state of attempts to load each bootloader. |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Field |
| + | |- |
| + | | 0x00 |
| + | | 0x04 |
| + | | Status |
| + | |- |
| + | | 0x04 |
| + | | 0x04 |
| + | | FirstEccBlock |
| + | |- |
| + | | 0x08 |
| + | | 0x04 |
| + | | FirstEccPage |
| + | |- |
| + | | 0x0C |
| + | | 0x04 |
| + | | FirstCorrectedEccBlock |
| + | |- |
| + | | 0x10 |
| + | | 0x04 |
| + | | FirstCorrectedEccPage |
| + | |- |
| + | | 0x14 |
| + | | 0x01 |
| + | | HadEccError |
| + | |- |
| + | | 0x15 |
| + | | 0x01 |
| + | | HadCrcError |
| + | |- |
| + | | 0x16 |
| + | | 0x01 |
| + | | HadCorrectedEccError |
| + | |- |
| + | | 0x17 |
| + | | 0x01 |
| + | | UsedForEccRecovery |
| + | |} |
| + | |- |
| + | | 0x358 |
| + | | 0x100 |
| + | | SecondaryDevStatus |
| + | | Structure to hold secondary boot device status. |
| + | |- |
| + | | 0x458 |
| + | | 0x03 |
| + | | |
| + | | |
| + | |- |
| + | | 0x45B |
| + | | 0x04 |
| + | | UsbChargingStatus |
| + | | |
| + | |- |
| + | | 0x45F |
| + | | 0x01 |
| + | | PmuBootSelReadError |
| + | | |
| + | |- |
| + | | 0x460 |
| + | | 0x04 |
| + | | SafeStartAddr |
| + | | Pointer to the end of the BCT in IRAM. |
| |} | | |} |
| | | |