Skip to content

Commit

Permalink
firmware: Dividing the flash memory in sectors for each data type #344
Browse files Browse the repository at this point in the history
mgm8 committed Feb 24, 2024
1 parent cf2fd3f commit 18d3983
Showing 3 changed files with 76 additions and 31 deletions.
32 changes: 26 additions & 6 deletions firmware/app/structs/obdh_data.h
Original file line number Diff line number Diff line change
@@ -39,6 +39,8 @@

#include <stdint.h>

#include <config/config.h>

#include <system/system.h>
#include <devices/media/media.h>

@@ -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;

/**
50 changes: 28 additions & 22 deletions firmware/app/utils/mem_mng.c
Original file line number Diff line number Diff line change
@@ -88,35 +88,41 @@ 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;

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)
25 changes: 22 additions & 3 deletions firmware/config/config.h
Original file line number Diff line number Diff line change
@@ -25,7 +25,7 @@
*
* \author Gabriel Mariano Marcelino <[email protected]>
*
* \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_ */

0 comments on commit 18d3983

Please sign in to comment.