From 51133083f6ab3d12ac5823ebffdabfa12b9c8fcb Mon Sep 17 00:00:00 2001 From: Konstantin Kondrashov Date: Thu, 13 Dec 2018 15:45:27 +0800 Subject: [PATCH] app_update: Add EXCLUDE option Added two options for PROJECT_NAME and PROJECT_VER variables to exclude them from the firmware image. Closes: https://github.com/espressif/esp-idf/issues/2803 --- components/app_update/Kconfig.projbuild | 14 ++++++++++++++ components/app_update/esp_app_desc.c | 13 +++++++++++++ components/esp32/cpu_start.c | 4 ++++ 3 files changed, 31 insertions(+) diff --git a/components/app_update/Kconfig.projbuild b/components/app_update/Kconfig.projbuild index 62f8bdec3b..6e2c41b16d 100644 --- a/components/app_update/Kconfig.projbuild +++ b/components/app_update/Kconfig.projbuild @@ -9,4 +9,18 @@ config APP_COMPILE_TIME_DATE This can be useful for getting the same binary image files made from the same source, but at different times. +config APP_EXCLUDE_PROJECT_VER_VAR + bool "Exclude PROJECT_VER from firmware image" + default n + help + The PROJECT_VER variable from the build system will not affect the firmware image. + This value will not be contained in the esp_app_desc structure. + +config APP_EXCLUDE_PROJECT_NAME_VAR + bool "Exclude PROJECT_NAME from firmware image" + default n + help + The PROJECT_NAME variable from the build system will not affect the firmware image. + This value will not be contained in the esp_app_desc structure. + endmenu # "Application manager" \ No newline at end of file diff --git a/components/app_update/esp_app_desc.c b/components/app_update/esp_app_desc.c index b120d2c345..20c487c1c7 100644 --- a/components/app_update/esp_app_desc.c +++ b/components/app_update/esp_app_desc.c @@ -19,8 +19,17 @@ // Application version info const __attribute__((section(".rodata_desc"))) esp_app_desc_t esp_app_desc = { .magic_word = ESP_APP_DESC_MAGIC_WORD, +#ifdef CONFIG_APP_EXCLUDE_PROJECT_VER_VAR + .version = "", +#else .version = PROJECT_VER, +#endif + +#ifdef CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR + .project_name = "", +#else .project_name = PROJECT_NAME, +#endif .idf_ver = IDF_VER, #ifdef CONFIG_APP_SECURE_VERSION @@ -39,9 +48,13 @@ const __attribute__((section(".rodata_desc"))) esp_app_desc_t esp_app_desc = { }; +#ifndef CONFIG_APP_EXCLUDE_PROJECT_VER_VAR _Static_assert(sizeof(PROJECT_VER) <= sizeof(esp_app_desc.version), "PROJECT_VER is longer than version field in structure"); +#endif _Static_assert(sizeof(IDF_VER) <= sizeof(esp_app_desc.idf_ver), "IDF_VER is longer than idf_ver field in structure"); +#ifndef CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR _Static_assert(sizeof(PROJECT_NAME) <= sizeof(esp_app_desc.project_name), "PROJECT_NAME is longer than project_name field in structure"); +#endif const esp_app_desc_t *esp_ota_get_app_description(void) { diff --git a/components/esp32/cpu_start.c b/components/esp32/cpu_start.c index 739e4188d8..7dacf38af1 100644 --- a/components/esp32/cpu_start.c +++ b/components/esp32/cpu_start.c @@ -179,8 +179,12 @@ void IRAM_ATTR call_start_cpu0() if (LOG_LOCAL_LEVEL >= ESP_LOG_INFO) { const esp_app_desc_t *app_desc = esp_ota_get_app_description(); ESP_EARLY_LOGI(TAG, "Application information:"); +#ifndef CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR ESP_EARLY_LOGI(TAG, "Project name: %s", app_desc->project_name); +#endif +#ifndef CONFIG_APP_EXCLUDE_PROJECT_VER_VAR ESP_EARLY_LOGI(TAG, "App version: %s", app_desc->version); +#endif #ifdef CONFIG_APP_SECURE_VERSION ESP_EARLY_LOGI(TAG, "Secure version: %x", app_desc->secure_version); #endif