Skip to content

Commit

Permalink
Add generate cabinet file for updating firmware with fwupd
Browse files Browse the repository at this point in the history
Signed-off-by: Tam Chi Nguyen <tamng@amperecomputing.com>
  • Loading branch information
Tam Chi Nguyen committed Sep 13, 2024
1 parent 39b9b12 commit f755326
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 1 deletion.
45 changes: 44 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ CERTTOOL := cert_create
CERT_TO_EFI_SIG_LIST:=cert-to-efi-sig-list
SIGN_EFI_SIG_LIST:=sign-efi-sig-list
NVGENCMD := python $(SCRIPTS_DIR)/nvparam.py
EXECUTABLES := openssl git cut sed awk wget tar flex bison gcc g++ python3
EXECUTABLES := openssl git cut sed awk wget tar flex bison gcc g++ python3 gcab

PARSE_PLATFORMS_TOOL := $(SCRIPTS_DIR)/parse-platforms.py
PLATFORMS_CONFIG := $(SCRIPTS_DIR)/edk2-platforms.config
Expand Down Expand Up @@ -339,6 +339,46 @@ tianocore_img: _check_atf_tools _check_atf_slim _check_board_setting tianocore_f
else \
cp $(OUTPUT_RAW_IMAGE) $(OUTPUT_IMAGE); \
fi
.PHONY: fw_cabinet_metainfo
fw_cabinet_metainfo:
$(eval MEDIAINFO_FILE:=firmware.metainfo.xml)
$(eval AMP_MEDIAINFO_FILE:=$(CUR_DIR)/ampere.metainfo.xml)
$(eval COMPONENT:=SCP)
$(eval REL_VER:=$(VER).$(BUILD))
$(eval AMPERE_GUID:=f08bca31-542e-4cea-8b48-8e54f9422594)
@sed -e 's/COMPONENT/$(COMPONENT)/g' \
-e 's/REL_VER/$(REL_VER)/g' \
-e 's/AMP_CPU/$(TARGETSOC_UFL)/g' \
-e 's/AMPERE_GUID/$(AMPERE_GUID)/g' \
-e 's/BUILD_DATE/$(BUILD_DATE)/g' \
$(AMP_MEDIAINFO_FILE) > $(MEDIAINFO_FILE)

.PHONY: fw_cabinet
fw_cabinet:
$(eval COMPONENT:=SCP)
@echo
@echo "Creating $(COMPONENT) Cabinet..."
$(eval REL_VER:=$(VER).$(BUILD))
$(eval CAP_FILE:=$(FWBINDIR)/$(TARGET_SOC)_scp_$(REL_VER).cap)
$(eval CAB_FILE:=$(FWBINDIR)/$(TARGET_SOC)_scp_$(REL_VER).cab)
$(eval GEN_CAB:=$(OUTPUT_BIN_DIR)/gen_cab)
@mkdir -p $(GEN_CAB)
@if [ -e "$(CAP_FILE)" ]; then \
rm -fr $(GEN_CAB)/firmware.bin; \
cd $(GEN_CAB) && ln -sf $(CAP_FILE) firmware.bin; \
else \
echo "Error: $(CAP_FILE) not found."; \
exit -1; \
fi
@make fw_cabinet_metainfo COMPONENT=$(COMPONENT) REL_VER=$(REL_VER) MEDIAINFO_FILE=$(GEN_CAB)/firmware.metainfo.xml
@if [ -e "$(GEN_CAB)/firmware.metainfo.xml" ]; then \
cd $(GEN_CAB) && gcab -v -c $(CAB_FILE) firmware.metainfo.xml firmware.bin; \
else \
echo "Error: firmware.metainfo.xml not found."; \
exit -1; \
fi
@rm -rf $(GEN_CAB)
@echo "Completed creating $(COMPONENT) Cabinet."

## tianocore_capsule : Tianocore Capsule image
.PHONY: tianocore_capsule
Expand Down Expand Up @@ -398,9 +438,12 @@ tianocore_capsule: tianocore_img dbukeys_auth
-D UEFI_ATF_IMAGE=$(TIANOCORE_ATF_IMAGE) \
-D SCP_IMAGE=$(SCP_IMAGE) \
-p Platform/Ampere/$(BOARD_NAME_UFL)Pkg/$(BOARD_NAME_UFL)Capsule.dsc

@cp -f $(EDK2_FV_DIR)/JADEUEFIATFFIRMWAREUPDATECAPSULEFMPPKCS7.Cap $(OUTPUT_UEFI_ATF_CAPSULE)
@cp -f $(EDK2_FV_DIR)/JADESCPFIRMWAREUPDATECAPSULEFMPPKCS7.Cap $(OUTPUT_SCP_CAPSULE)
@cp -f $(EDK2_AARCH64_DIR)/CapsuleApp.efi $(OUTPUT_CAPSULE_APP)
@$(MAKE) fw_cabinet REL_VER=$(VER).$(BUILD) COMPONENT=SCP CAP_FILE=$(OUTPUT_SCP_CAPSULE) CAB_FILE=$(subst cap,cab,$(OUTPUT_SCP_CAPSULE))
@$(MAKE) fw_cabinet REL_VER=$(VER).$(BUILD) COMPONENT=UEFI CAP_FILE=$(OUTPUT_UEFI_ATF_CAPSULE) CAB_FILE=$(subst cap,cab,$(OUTPUT_UEFI_ATF_CAPSULE))
@rm -f $(OUTPUT_RAW_IMAGE).sig $(OUTPUT_RAW_IMAGE).signed $(OUTPUT_RAW_IMAGE) $(OUTPUT_RAW_IMAGE).append \
$(SCP_IMAGE).append

Expand Down
26 changes: 26 additions & 0 deletions ampere.metainfo.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="firmware">
<id>comp.ampere.AMP_CPU.firmware.COMPONENT</id>
<name>Ampere AMP_CPU COMPONENT Firmware</name>
<summary>Ampere AMP_CPU COMPONENT Firmware</summary>
<description>Ampere AMP_CPU COMPONENT Firmware</description>
<provides>
<firmware type="flashed">AMPERE_GUID</firmware>
</provides>
<url type="homepage">https://amperecomputing.com</url>
<metadata_license>BSD-3-Clause AND Apache-2.0</metadata_license>
<project_license>BSD-3-Clause AND Apache-2.0</project_license>
<releases>
<release version="REL_VER" date="BUILD_DATE" urgency="medium">
<description>
Ampere AMP_CPU COMPONENT Firmware, Version REL_VER
</description>
</release>
</releases>
<keywords>
<keyword>bios</keyword>
<keyword>scp</keyword>
<keyword>uefi</keyword>
</keywords>
</component>

0 comments on commit f755326

Please sign in to comment.