From 18d3983f728b82f9d5ee6b101515295f69645680 Mon Sep 17 00:00:00 2001 From: Gabriel Mariano Marcelino Date: Sat, 24 Feb 2024 20:39:37 -0300 Subject: [PATCH] firmware: Dividing the flash memory in sectors for each data type #344 --- firmware/app/structs/obdh_data.h | 32 ++++++++++++++++---- firmware/app/utils/mem_mng.c | 50 ++++++++++++++++++-------------- firmware/config/config.h | 25 ++++++++++++++-- 3 files changed, 76 insertions(+), 31 deletions(-) diff --git a/firmware/app/structs/obdh_data.h b/firmware/app/structs/obdh_data.h index 86888eb9..e60f0b76 100644 --- a/firmware/app/structs/obdh_data.h +++ b/firmware/app/structs/obdh_data.h @@ -39,6 +39,8 @@ #include +#include + #include #include @@ -68,8 +70,14 @@ #define OBDH_PARAM_ID_LATITUDE 22 /**< Latitude in degrees. */ #define OBDH_PARAM_ID_LONGITUDE 23 /**< Longitude in degrees. */ #define OBDH_PARAM_ID_ALTITUDE 24 /**< Altitude in kilometers. */ -#define OBDH_PARAM_ID_LAST_MEM_ADR_SAT_DATA 25 /**< Last used memory address of the service module data. */ -#define OBDH_PARAM_ID_LAST_MEM_ADR_PL_DATA 26 /**< Last used memory address of the payload data. */ +#define OBDH_PARAM_ID_LAST_PAGE_OBDH_DATA 25 /**< Last used memory page of the OBDH data. */ +#define OBDH_PARAM_ID_LAST_PAGE_EPS_DATA 26 /**< Last used memory page of the EPS data. */ +#define OBDH_PARAM_ID_LAST_PAGE_TTC_0_DATA 27 /**< Last used memory page of the TTC 0 data. */ +#define OBDH_PARAM_ID_LAST_PAGE_TTC_1_DATA 28 /**< Last used memory page of the TTC 1 data. */ +#define OBDH_PARAM_ID_LAST_PAGE_ANT_DATA 29 /**< Last used memory page of the Antenna data. */ +#define OBDH_PARAM_ID_LAST_PAGE_EDC_DATA 30 /**< Last used memory page of the EDC data. */ +#define OBDH_PARAM_ID_LAST_PAGE_PX_DATA 31 /**< Last used memory page of the Payload-X data. */ +#define OBDH_PARAM_ID_LAST_PAGE_SBCD_PKTS 32 /**< Last used memory page of the SBCD packets. */ /* Default values */ #define OBDH_TIMESTAMP_DEFAULT_VAL 0U @@ -94,8 +102,14 @@ #define OBDH_PARAM_POSITION_LATITUDE_DEFAULT_VAL 0U #define OBDH_PARAM_POSITION_LONGITUDE_DEFAULT_VAL 0U #define OBDH_PARAM_POSITION_ALTITUDE_DEFAULT_VAL 0U -#define OBDH_PARAM_MEDIA_LAST_ADR_SAT_DATA_DEFAULT_VAL 0U -#define OBDH_PARAM_MEDIA_LAST_ADR_PL_DATA_DEFAULT_VAL 0U +#define OBDH_PARAM_MEDIA_LAST_OBDH_DATA_DEFAULT_VAL CONFIG_MEM_OBDH_DATA_START_PAGE +#define OBDH_PARAM_MEDIA_LAST_EPS_DATA_DEFAULT_VAL CONFIG_MEM_EPS_DATA_START_PAGE +#define OBDH_PARAM_MEDIA_LAST_TTC_0_DATA_DEFAULT_VAL CONFIG_MEM_TTC_0_DATA_START_PAGE +#define OBDH_PARAM_MEDIA_LAST_TTC_1_DATA_DEFAULT_VAL CONFIG_MEM_TTC_1_DATA_END_PAGE +#define OBDH_PARAM_MEDIA_LAST_ANT_DATA_DEFAULT_VAL CONFIG_MEM_ANT_DATA_START_PAGE +#define OBDH_PARAM_MEDIA_LAST_EDC_DATA_DEFAULT_VAL CONFIG_MEM_EDC_DATA_START_PAGE +#define OBDH_PARAM_MEDIA_LAST_PX_DATA_DEFAULT_VAL CONFIG_MEM_PX_DATA_START_PAGE +#define OBDH_PARAM_MEDIA_LAST_SBCD_PKTS_DEFAULT_VAL CONFIG_MEM_SBCD_PKTS_START_PAGE /* Operation modes */ #define OBDH_MODE_NORMAL 0 @@ -119,8 +133,14 @@ typedef struct */ typedef struct { - uint32_t last_adr_sat_data; /**< Last used memory address of the service module data. */ - uint32_t last_adr_pl_data; /**< Last used memory address of the payload data. */ + uint32_t last_page_obdh_data; /**< Last used memory page of the OBDH data. */ + uint32_t last_page_eps_data; /**< Last used memory page of the EPS data. */ + uint32_t last_page_ttc_0_data; /**< Last used memory page of the TTC 0 data. */ + uint32_t last_page_ttc_1_data; /**< Last used memory page of the TTC 1 data. */ + uint32_t last_page_ant_data; /**< Last used memory page of the Antenna data. */ + uint32_t last_page_edc_data; /**< Last used memory page of the EDC data. */ + uint32_t last_page_px_data; /**< Last used memory page of the Payload-X data. */ + uint32_t last_page_sbcd_pkts; /**< Last used memory page of the SBCD packets. */ } media_data_t; /** diff --git a/firmware/app/utils/mem_mng.c b/firmware/app/utils/mem_mng.c index ac0943b8..fb997782 100644 --- a/firmware/app/utils/mem_mng.c +++ b/firmware/app/utils/mem_mng.c @@ -88,23 +88,23 @@ int mem_mng_reset_fram(void) void mem_mng_load_obdh_data_from_default_values(obdh_telemetry_t *tel) { - tel->timestamp = OBDH_TIMESTAMP_DEFAULT_VAL; - tel->data.temperature = OBDH_PARAM_TEMPERATURE_UC_DEFAULT_VAL; - tel->data.current = OBDH_PARAM_CURRENT_DEFAULT_VAL; - tel->data.voltage = OBDH_PARAM_VOLTAGE_DEFAULT_VAL; - tel->data.last_reset_cause = OBDH_PARAM_LAST_RESET_CAUSE_DEFAULT_VAL; - tel->data.reset_counter = OBDH_PARAM_RESET_COUNTER_DEFAULT_VAL; - tel->data.last_valid_tc = OBDH_PARAM_LAST_VALID_TC_DEFAULT_VAL; - tel->data.hw_version = OBDH_PARAM_HW_VERSION_DEFAULT_VAL; - tel->data.fw_version = OBDH_PARAM_FW_VERSION_DEFAULT_VAL; - tel->data.mode = OBDH_PARAM_MODE_DEFAULT_VAL; - tel->data.ts_last_mode_change = OBDH_PARAM_TS_LAST_MODE_CHANGE_DEFAULT_VAL; - tel->data.mode_duration = OBDH_PARAM_MODE_DURATION_DEFAULT_VAL; - tel->data.initial_hib_executed = OBDH_PARAM_INITIAL_HIB_EXECUTED_DEFAULT_VAL; - tel->data.initial_hib_time_count = OBDH_PARAM_INITIAL_HIB_TIME_COUNT_DEFAULT_VAL; - tel->data.ant_deployment_executed = OBDH_PARAM_ANT_DEPLOYMENT_EXECUTED_DEFAULT_VAL; - tel->data.ant_deployment_counter = OBDH_PARAM_ANT_DEPLOYMENT_COUNTER_DEFAULT_VAL; - tel->data.position.timestamp = OBDH_PARAM_POSITION_TIMESTAMP_DEFAULT_VAL; + tel->timestamp = OBDH_TIMESTAMP_DEFAULT_VAL; + tel->data.temperature = OBDH_PARAM_TEMPERATURE_UC_DEFAULT_VAL; + tel->data.current = OBDH_PARAM_CURRENT_DEFAULT_VAL; + tel->data.voltage = OBDH_PARAM_VOLTAGE_DEFAULT_VAL; + tel->data.last_reset_cause = OBDH_PARAM_LAST_RESET_CAUSE_DEFAULT_VAL; + tel->data.reset_counter = OBDH_PARAM_RESET_COUNTER_DEFAULT_VAL; + tel->data.last_valid_tc = OBDH_PARAM_LAST_VALID_TC_DEFAULT_VAL; + tel->data.hw_version = OBDH_PARAM_HW_VERSION_DEFAULT_VAL; + tel->data.fw_version = OBDH_PARAM_FW_VERSION_DEFAULT_VAL; + tel->data.mode = OBDH_PARAM_MODE_DEFAULT_VAL; + tel->data.ts_last_mode_change = OBDH_PARAM_TS_LAST_MODE_CHANGE_DEFAULT_VAL; + tel->data.mode_duration = OBDH_PARAM_MODE_DURATION_DEFAULT_VAL; + tel->data.initial_hib_executed = OBDH_PARAM_INITIAL_HIB_EXECUTED_DEFAULT_VAL; + tel->data.initial_hib_time_count = OBDH_PARAM_INITIAL_HIB_TIME_COUNT_DEFAULT_VAL; + tel->data.ant_deployment_executed = OBDH_PARAM_ANT_DEPLOYMENT_EXECUTED_DEFAULT_VAL; + tel->data.ant_deployment_counter = OBDH_PARAM_ANT_DEPLOYMENT_COUNTER_DEFAULT_VAL; + tel->data.position.timestamp = OBDH_PARAM_POSITION_TIMESTAMP_DEFAULT_VAL; uint8_t tle_line1[70] = OBDH_PARAM_POSITION_TLE_LINE1_DEFAULT_VAL; uint8_t tle_line2[70] = OBDH_PARAM_POSITION_TLE_LINE2_DEFAULT_VAL; @@ -112,11 +112,17 @@ void mem_mng_load_obdh_data_from_default_values(obdh_telemetry_t *tel) memcpy(&tel->data.position.tle_line1, &tle_line1[0], 70U); memcpy(&tel->data.position.tle_line2, &tle_line2[0], 70U); - tel->data.position.latitude = OBDH_PARAM_POSITION_LATITUDE_DEFAULT_VAL; - tel->data.position.longitude = OBDH_PARAM_POSITION_LONGITUDE_DEFAULT_VAL; - tel->data.position.altitude = OBDH_PARAM_POSITION_ALTITUDE_DEFAULT_VAL; - tel->data.media.last_adr_sat_data = OBDH_PARAM_MEDIA_LAST_ADR_SAT_DATA_DEFAULT_VAL; - tel->data.media.last_adr_pl_data = OBDH_PARAM_MEDIA_LAST_ADR_PL_DATA_DEFAULT_VAL; + tel->data.position.latitude = OBDH_PARAM_POSITION_LATITUDE_DEFAULT_VAL; + tel->data.position.longitude = OBDH_PARAM_POSITION_LONGITUDE_DEFAULT_VAL; + tel->data.position.altitude = OBDH_PARAM_POSITION_ALTITUDE_DEFAULT_VAL; + tel->data.media.last_page_obdh_data = OBDH_PARAM_MEDIA_LAST_OBDH_DATA_DEFAULT_VAL; + tel->data.media.last_page_eps_data = OBDH_PARAM_MEDIA_LAST_EPS_DATA_DEFAULT_VAL; + tel->data.media.last_page_ttc_0_data = OBDH_PARAM_MEDIA_LAST_TTC_0_DATA_DEFAULT_VAL; + tel->data.media.last_page_ttc_1_data = OBDH_PARAM_MEDIA_LAST_TTC_1_DATA_DEFAULT_VAL; + tel->data.media.last_page_ant_data = OBDH_PARAM_MEDIA_LAST_ANT_DATA_DEFAULT_VAL; + tel->data.media.last_page_edc_data = OBDH_PARAM_MEDIA_LAST_EDC_DATA_DEFAULT_VAL; + tel->data.media.last_page_px_data = OBDH_PARAM_MEDIA_LAST_PX_DATA_DEFAULT_VAL; + tel->data.media.last_page_sbcd_pkts = OBDH_PARAM_MEDIA_LAST_SBCD_PKTS_DEFAULT_VAL; } int mem_mng_save_obdh_data_to_fram(obdh_telemetry_t tel) diff --git a/firmware/config/config.h b/firmware/config/config.h index 2189043c..f39d8291 100644 --- a/firmware/config/config.h +++ b/firmware/config/config.h @@ -25,7 +25,7 @@ * * \author Gabriel Mariano Marcelino * - * \version 0.10.7 + * \version 0.10.9 * * \date 2019/10/26 * @@ -130,8 +130,27 @@ #define CONFIG_ANTENNA_DEPLOYMENT_ATTEMPTS 10U #define CONFIG_ANTENNA_DEPLOYMENT_HIBERNATION_MIN 45 -/* Memory addresses */ -#define CONFIG_MEM_ADR_SYS_TIME 0 +/* Memory */ +#define CONFIG_MEM_ADR_INIT_WORD 0 +#define CONFIG_MEM_ADR_SYS_PARAM 256 +#define CONFIG_MEM_ADR_SYS_TIME 512 +#define CONFIG_MEM_INIT_WORD {228, 80, 142, 227, 77, 121, 176, 244} +#define CONFIG_MEM_OBDH_DATA_START_PAGE 0U +#define CONFIG_MEM_OBDH_DATA_END_PAGE 56999U +#define CONFIG_MEM_EPS_DATA_START_PAGE 57000U +#define CONFIG_MEM_EPS_DATA_END_PAGE 113999U +#define CONFIG_MEM_TTC_0_DATA_START_PAGE 114000U +#define CONFIG_MEM_TTC_0_DATA_END_PAGE 170999U +#define CONFIG_MEM_TTC_1_DATA_START_PAGE 171000U +#define CONFIG_MEM_TTC_1_DATA_END_PAGE 227999U +#define CONFIG_MEM_ANT_DATA_START_PAGE 228000U +#define CONFIG_MEM_ANT_DATA_END_PAGE 284999U +#define CONFIG_MEM_EDC_DATA_START_PAGE 285000U +#define CONFIG_MEM_EDC_DATA_END_PAGE 341999U +#define CONFIG_MEM_PX_DATA_START_PAGE 342000U +#define CONFIG_MEM_PX_DATA_END_PAGE 398999U +#define CONFIG_MEM_SBCD_PKTS_START_PAGE 399000U +#define CONFIG_MEM_SBCD_PKTS_END_PAGE 499999U #endif /* CONFIG_H_ */