diff options
author | Juan Castillo <juan.castillo@arm.com> | 2014-06-30 11:41:46 +0100 |
---|---|---|
committer | Dan Handley <dan.handley@arm.com> | 2014-07-25 15:02:08 +0100 |
commit | aaa3e722c0016c7958e68dbbe0e2a3e790afb610 (patch) | |
tree | 05f7800803dfa71eb6e0f51b838b01aaafa86176 | |
parent | 2d4aceaffa2e6e6330fbfcb52399ba18fbf20929 (diff) |
Add support for printing version at runtime
Print out Trusted Firmware version at runtime at each BL stage.
Message consists of TF version as defined statically in the Makefile
(e.g. v0.4), build mode (debug|release) and a customizable build
string:
1. By defining BUILD_STRING in command line when building TF
2. Default string is git commit ID
3. Empty if git meta-data is not available
Fixes ARM-software/tf-issues#203
Change-Id: I5c5ba438f66ab68810427d76b49c5b9177a957d6
-rw-r--r-- | Makefile | 16 | ||||
-rw-r--r-- | bl1/bl1_main.c | 3 | ||||
-rw-r--r-- | bl2/bl2_main.c | 3 | ||||
-rw-r--r-- | bl31/bl31_main.c | 3 | ||||
-rw-r--r-- | bl32/tsp/tsp_main.c | 3 | ||||
-rw-r--r-- | include/common/bl_common.h | 1 |
6 files changed, 24 insertions, 5 deletions
@@ -29,6 +29,12 @@ # # +# Trusted Firmware Version +# +VERSION_MAJOR := 0 +VERSION_MINOR := 4 + +# # Default values for build configurations # @@ -76,6 +82,13 @@ else BUILD_TYPE := release endif +# Default build string (git branch and commit) +ifeq (${BUILD_STRING},) + BUILD_STRING := $(shell git log -n 1 --pretty=format:"%h") +endif + +VERSION_STRING := v${VERSION_MAJOR}.${VERSION_MINOR}(${BUILD_TYPE}):${BUILD_STRING} + BL_COMMON_SOURCES := common/bl_common.c \ common/debug.c \ common/tf_printf.c \ @@ -377,7 +390,8 @@ $(BUILD_DIR) : $(ELF) : $(OBJS) $(LINKERFILE) @echo " LD $$@" - @echo 'const char build_message[] = "Built : "__TIME__", "__DATE__;' | \ + @echo 'const char build_message[] = "Built : "__TIME__", "__DATE__; \ + const char version_string[] = "${VERSION_STRING}";' | \ $$(CC) $$(CFLAGS) -xc - -o $(BUILD_DIR)/build_message.o $$(Q)$$(LD) -o $$@ $$(LDFLAGS) -Map=$(MAPFILE) --script $(LINKERFILE) \ $(BUILD_DIR)/build_message.o $(OBJS) diff --git a/bl1/bl1_main.c b/bl1/bl1_main.c index 47ca546d..c6f2caad 100644 --- a/bl1/bl1_main.c +++ b/bl1/bl1_main.c @@ -130,7 +130,8 @@ void bl1_main(void) /* Announce our arrival */ tf_printf(FIRMWARE_WELCOME_STR); - tf_printf("%s\n\r", build_message); + tf_printf("%s\n", version_string); + tf_printf("%s\n", build_message); SET_PARAM_HEAD(&bl2_image_info, PARAM_IMAGE_BINARY, VERSION_1, 0); SET_PARAM_HEAD(&bl2_ep, PARAM_EP, VERSION_1, 0); diff --git a/bl2/bl2_main.c b/bl2/bl2_main.c index 70b688a6..ca838426 100644 --- a/bl2/bl2_main.c +++ b/bl2/bl2_main.c @@ -195,7 +195,8 @@ void bl2_main(void) /* Perform platform setup in BL2 */ bl2_platform_setup(); - tf_printf("BL2 %s\n\r", build_message); + tf_printf("BL2 %s\n", version_string); + tf_printf("BL2 %s\n", build_message); /* * Load the subsequent bootloader images diff --git a/bl31/bl31_main.c b/bl31/bl31_main.c index 031799ce..861b3914 100644 --- a/bl31/bl31_main.c +++ b/bl31/bl31_main.c @@ -77,7 +77,8 @@ void bl31_main(void) /* Perform platform setup in BL1 */ bl31_platform_setup(); - tf_printf("BL31 %s\n\r", build_message); + tf_printf("BL31 %s\n", version_string); + tf_printf("BL31 %s\n", build_message); /* Initialise helper libraries */ bl31_lib_init(); diff --git a/bl32/tsp/tsp_main.c b/bl32/tsp/tsp_main.c index 8844f41b..b2850e9d 100644 --- a/bl32/tsp/tsp_main.c +++ b/bl32/tsp/tsp_main.c @@ -120,7 +120,8 @@ uint64_t tsp_main(void) tsp_stats[linear_id].cpu_on_count++; spin_lock(&console_lock); - tf_printf("TSP %s\n\r", build_message); + tf_printf("TSP %s\n", version_string); + tf_printf("TSP %s\n", build_message); INFO("Total memory base : 0x%x\n", (unsigned long)BL32_TOTAL_BASE); INFO("Total memory size : 0x%x bytes\n", (unsigned long)(BL32_TOTAL_LIMIT - BL32_TOTAL_BASE)); diff --git a/include/common/bl_common.h b/include/common/bl_common.h index 154c0f49..e996fd6a 100644 --- a/include/common/bl_common.h +++ b/include/common/bl_common.h @@ -210,6 +210,7 @@ int load_image(meminfo_t *mem_layout, image_info_t *image_data, entry_point_info_t *entry_point_info); extern const char build_message[]; +extern const char version_string[]; void reserve_mem(uint64_t *free_base, size_t *free_size, uint64_t addr, size_t size); |