Part Number: AM6442
Hi,
I am currently bringing up a custom board based on the AM6442. At the moment, I do not have working OSPI flash access, so I am trying to understand the boot flow in detail and how Dev Boot mode interacts with the SoC initialization binary and SBL.
While reading the documentation, I got confused about a few things related to:
-
SoC initialization binary
-
SBL Null
-
Dev Boot mode
-
No Boot mode
-
DMSC / SYSFW behavior
-
JTAG debugging via CCS
I would appreciate clarification on the following.
1. SoC Initialization Binary – Why Does It Need to Be Flashed Only Once?
In the getting started guides, it is mentioned that the SoC initialization binary needs to be flashed.
My understanding is:
-
It initializes certain SoC components.
-
It prepares the device for proper debugging and boot.
However, I don’t understand why it needs to be run only once.
Questions:
-
What exactly does the SoC initialization binary configure?
-
Does it modify any non-volatile state inside the SoC?
-
Does it program something inside:
-
DMSC?
-
SYSFW?
-
eFuses?
-
Some persistent configuration region?
-
-
If it does not modify any non-volatile memory, why isn’t it required every boot?
What exactly changes in the system after it has been executed once?
2. Dev Boot Mode – Is Anything Executed From Flash?
Another confusing topic is Dev Boot mode.
If I understand correctly:
-
In Dev Boot mode, the ROM does not boot from OSPI.
-
We can connect via JTAG and load code into RAM.
Questions:
-
In Dev Boot mode, is any code executed from flash at all?
-
Is SBL Null executed in Dev Boot mode?
-
If not, then how is the SoC initialized sufficiently for:
-
JTAG access
-
Loading code into RAM
-
Using SCI client APIs?
-
What exactly initializes the DMSC / SYSFW in Dev Boot mode?
3. Why Must SBL Null Be Flashed Again for Debugging?
Documentation states that:
If another application is flashed, and you want to debug using CCS, you need to flash SBL Null again.
This makes me think that:
-
Something from flash must be executed during boot
-
Otherwise, why would reflashing SBL Null matter?
Questions:
-
In which boot modes is SBL Null actually executed?
-
Is it correct that in OSPI boot mode, the ROM loads SBL from flash?
-
In Dev Boot mode, is SBL completely bypassed?
-
If Dev Boot bypasses flash, why does the documentation require reflashing SBL Null for debugging?
I am trying to understand whether Dev Boot mode truly avoids flash entirely, or whether there is still some interaction.
4. What Happens If I Use Dev Boot Mode Without Ever Flashing the SoC Init Binary?
Suppose:
-
I have a fresh custom board
-
No flash programmed
-
Boot mode set to Dev Boot
-
I connect via JTAG and load an R5 application into SRAM
What happens internally?
Specifically:
-
Is DMSC / SYSFW running automatically from ROM?
-
If my application calls SCI Client APIs, will they work?
-
Or will they hang because DMSC is not properly initialized?
-
Is it possible that:
-
RAM loading works
-
But SCI calls block because SYSFW is not ready?
-
I am trying to understand whether missing SoC initialization causes:
-
JTAG load failure
-
Peripheral clocks not enabled
-
SCI server not responding
-
Or something else
5. No Boot Mode – How Is It Different From Dev Boot?
What is the exact difference between:
-
Dev Boot mode
-
No Boot mode
In terms of:
-
ROM execution
-
SYSFW / DMSC startup
-
Peripheral initialization
-
JTAG availability
In No Boot mode:
-
Is SYSFW started?
-
Is DMSC running?
-
Or is the device left in a more minimal state?
6. High-Level Clarification I’m Looking For
I would really appreciate a simplified but technically precise explanation of:
-
What always runs from ROM
-
When SYSFW is loaded
-
When SBL is required
-
When flash is accessed
-
What the SoC initialization binary actually changes
Right now the interaction between:
-
ROM
-
SYSFW / DMSC
-
SBL
-
Dev Boot
-
No Boot
-
JTAG debugging
is not fully clear to me.
Thanks in advance for clarifying.