Skip to content

ast27x0: Add Caliptra Manifest boot support and MCU runtime loader framework - #12

Merged
haowu4682 merged 2 commits into
google:masterfrom
jamin-aspeed:ast2700-a2
Jan 12, 2026
Merged

ast27x0: Add Caliptra Manifest boot support and MCU runtime loader framework#12
haowu4682 merged 2 commits into
google:masterfrom
jamin-aspeed:ast2700-a2

Conversation

@jamin-aspeed

Copy link
Copy Markdown
Contributor

Add initial support for Caliptra Manifest based boot flow on AST2700
and introduce a generic MCU runtime image loader framework.

This change adds full parsing, verification, and loading support for
Caliptra flash images, including manifest header handling, checksum
verification, image table parsing, and SoC manifest processing. A new
boot policy is implemented to prefer Caliptra Manifest boot and fall
back to legacy FIT boot on failure.

Key components introduced in this change:

  • Add Caliptra Manifest data structures, image metadata, and helper APIs (manifest.c, manifest_image.c, manifest.h).
  • Introduce ast_loader and stor modules to abstract image lookup and loading from manifest storage into destination memory.
  • Add board-specific manifest boot handling for AST2700, including BL31, U-Boot, SSP, and TSP image post-processing and release flow.
  • Support MCU runtime firmware loading for AST2700 A1/A2 platforms.
  • Support SPL and appended DTB discovery for both Caliptra and FIT paths.
  • Enable SSP boot flow and chained TSP boot when corresponding firmware images are present.
  • Refactor platform constants into platform_ast2700.h and clean up address handling and reserved memory parsing.

The implementation is aligned with the MCU runtime design used in the Zephyr-based reference implementation:

This commit establishes the foundation for Caliptra-based boot while maintaining backward compatibility with existing FIT-based boot flows.

…a Manifest support

Refactor the BootROM image loader to prepare for future SoC Caliptra manifest
support.

Move FMC scan and FIT parsing/loading logic out of image.c into a dedicated
implementation file (fmc_image.c) and add a corresponding header (fmc_image.h).
Keep image.c focused on boot entry and boot policy flow, including a placeholder
policy step for Caliptra Manifest boot with fallback to the legacy FIT path.

Update headers to include stdint.h where required, and adjust Makefile objects
to build the new module.

This change is a pure refactor with no intended functional behavior change. It
cleans up the code base and provides a clear separation between boot policy and
image-format-specific logic, which will be extended by a future Caliptra
manifest loader.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
…amework

Add initial support for Caliptra Manifest based boot flow on AST2700
and introduce a generic MCU runtime image loader framework.

This change adds full parsing, verification, and loading support for
Caliptra flash images, including manifest header handling, checksum
verification, image table parsing, and SoC manifest processing. A new
boot policy is implemented to prefer Caliptra Manifest boot and fall
back to legacy FIT boot on failure.

Key components introduced in this change:

- Add Caliptra Manifest data structures, image metadata, and helper APIs
(manifest.c, manifest_image.c, manifest.h).
- Introduce ast_loader and stor modules to abstract image lookup and
loading from manifest storage into destination memory.
- Add board-specific manifest boot handling for AST2700, including
BL31, U-Boot, SSP, and TSP image post-processing and release flow.
- Support MCU runtime firmware loading for AST2700 A1/A2 platforms.
- Support SPL and appended DTB discovery for both Caliptra and FIT paths.
- Enable SSP boot flow and chained TSP boot when corresponding firmware
images are present.
- Refactor platform constants into platform_ast2700.h and clean up
address handling and reserved memory parsing.

The implementation is aligned with the MCU runtime design used in the
Zephyr-based reference implementation:
https://github.com/AspeedTech-BMC/aspeed-zephyr-project/tree/aspeed-master/apps/mcu-runtime

This commit establishes the foundation for Caliptra-based boot while
maintaining backward compatibility with existing FIT-based boot
flows.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
@jamin-aspeed

Copy link
Copy Markdown
Contributor Author

@haowu4682 @nabihestefan

Could you please help review this PR?

This PR adds support for the new Caliptra Manifest image format and maintains compatibility with the existing FIT image format.
Starting from AST2700 A2, only the Caliptra Manifest image format is supported, and this PR includes the necessary updates for AST2700 A2 as well.

I will remove the U-Boot FIT image support once AST2700 A1 is no longer required to be supported.

Thanks-Jamin

@haowu4682
haowu4682 merged commit 9871a8a into google:master Jan 12, 2026
2 checks passed
@jamin-aspeed
jamin-aspeed deleted the ast2700-a2 branch January 13, 2026 02:43
VinceChang6637 pushed a commit to AspeedTech-BMC/openbmc that referenced this pull request Jan 23, 2026
Update the pre-built vbootrom image to support AST2700 A1 and A2
boot flows in QEMU.

The updated vbootrom supports the following boot scenarios:
- Caliptra manifest boot for AST2700 A1
- Caliptra manifest boot for AST2700 A2
- U-Boot FIT image boot for AST2700 A1
- TSP and SSP support

Souce Code: [Upstream: Under review]
google/vbootrom#12

Build and run commands:
bitbake -c cleanall qemu-native qemu-system-native qemu-helper-native obmc-phosphor-image
bitbake obmc-phosphor-image
runqemu serialstdio slirp

Log:

```
Build Date : Dec 29 2025 07:29:23
FW Version : git-56de722
```

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Change-Id: Idcfd44c5efbc3afa1bb5d1332c42175137c36853
VinceChang6637 pushed a commit to AspeedTech-BMC/openbmc that referenced this pull request Jan 23, 2026
Build Info

```
Build Date : Jan  8 2026 05:01:13
FW Version : git-17daef6
```

Souce Code: [Upstream: Under review]
google/vbootrom#12

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Change-Id: Ie038d825513a42ac641a72b294703cd0fc72e974
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants