kopia lustrzana https://github.com/SP8EBC/ParaTNC
removed sections for configuration data from ParaMETEO linker script, temporary workaround for ParaMETEO hw rev b power management
rodzic
83b97537ae
commit
c266446420
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<launchConfiguration type="ilg.gnumcueclipse.debug.gdbjtag.openocd.launchConfigurationType">
|
<launchConfiguration type="ilg.gnumcueclipse.debug.gdbjtag.openocd.launchConfigurationType">
|
||||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.PERIPHERALS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <peripherals> <peripheral name="GPIOC"/> </peripherals> "/>
|
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.PERIPHERALS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <peripherals> <peripheral name="GPIOC"/> <peripheral name="GPIOB"/> </peripherals> "/>
|
||||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doContinue" value="true"/>
|
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doContinue" value="true"/>
|
||||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doDebugInRam" value="false"/>
|
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doDebugInRam" value="false"/>
|
||||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doFirstReset" value="true"/>
|
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doFirstReset" value="true"/>
|
||||||
|
|
|
@ -117,102 +117,6 @@ SECTIONS
|
||||||
. = ALIGN(8);
|
. = ALIGN(8);
|
||||||
} >FLASH
|
} >FLASH
|
||||||
|
|
||||||
__config_section_default_start = 0x0801E000; /* Page 120 and 121 */
|
|
||||||
__config_section_first_start = 0x0801E800; /* Page 122 and 123 */
|
|
||||||
__config_section_second_start = 0x0801F000; /* Page 124 and 125 */
|
|
||||||
__config_section_third_start = 0x0801F800; /* Page 126 and 127 */
|
|
||||||
|
|
||||||
.config_section_default __config_section_default_start :
|
|
||||||
{
|
|
||||||
FILL(0xDD)
|
|
||||||
|
|
||||||
. = ALIGN(8);
|
|
||||||
|
|
||||||
start = .;
|
|
||||||
|
|
||||||
KEEP(*(.config_section_default));
|
|
||||||
|
|
||||||
. = start + 0x10;
|
|
||||||
KEEP(*(.config_section_default.mode));
|
|
||||||
|
|
||||||
. = start + 0x20;
|
|
||||||
KEEP(*(.config_section_default.basic));
|
|
||||||
|
|
||||||
. = start + 0x100;
|
|
||||||
KEEP(*(.config_section_default.sources));
|
|
||||||
|
|
||||||
. = start + 0x120;
|
|
||||||
KEEP(*(.config_section_default.umb));
|
|
||||||
|
|
||||||
. = start + 0x140;
|
|
||||||
KEEP(*(.config_section_default.rtu));
|
|
||||||
} >FLASH
|
|
||||||
|
|
||||||
.config_section_first __config_section_first_start :
|
|
||||||
{
|
|
||||||
FILL(0xAA)
|
|
||||||
|
|
||||||
. = ALIGN(8);
|
|
||||||
|
|
||||||
start = .;
|
|
||||||
|
|
||||||
KEEP(*(.config_section_first));
|
|
||||||
|
|
||||||
. = start + 0x10;
|
|
||||||
KEEP(*(.config_section_first.mode));
|
|
||||||
|
|
||||||
. = start + 0x20;
|
|
||||||
KEEP(*(.config_section_first.basic));
|
|
||||||
|
|
||||||
. = start + 0x100;
|
|
||||||
KEEP(*(.config_section_first.sources));
|
|
||||||
|
|
||||||
. = start + 0x120;
|
|
||||||
KEEP(*(.config_section_first.umb));
|
|
||||||
|
|
||||||
. = start + 0x140;
|
|
||||||
KEEP(*(.config_section_first.rtu));
|
|
||||||
|
|
||||||
. = 0x7FC;
|
|
||||||
KEEP(*(.config_section_first.crc));
|
|
||||||
|
|
||||||
} >FLASH
|
|
||||||
|
|
||||||
.config_section_second __config_section_second_start :
|
|
||||||
{
|
|
||||||
FILL(0xBB)
|
|
||||||
|
|
||||||
. = ALIGN(8);
|
|
||||||
|
|
||||||
start = .;
|
|
||||||
|
|
||||||
KEEP(*(.config_section_second));
|
|
||||||
|
|
||||||
. = start + 0x10;
|
|
||||||
KEEP(*(.config_section_second.mode));
|
|
||||||
|
|
||||||
. = start + 0x20;
|
|
||||||
KEEP(*(.config_section_second.basic));
|
|
||||||
|
|
||||||
. = start + 0x100;
|
|
||||||
KEEP(*(.config_section_second.sources));
|
|
||||||
|
|
||||||
. = start + 0x120;
|
|
||||||
KEEP(*(.config_section_second.umb));
|
|
||||||
|
|
||||||
. = start + 0x140;
|
|
||||||
KEEP(*(.config_section_second.rtu));
|
|
||||||
|
|
||||||
. = 0x7FC;
|
|
||||||
KEEP(*(.config_section_second.crc));
|
|
||||||
|
|
||||||
} >FLASH
|
|
||||||
|
|
||||||
.config_section_third __config_section_third_start :
|
|
||||||
{
|
|
||||||
KEEP(*(.config_section_third))
|
|
||||||
} >FLASH
|
|
||||||
|
|
||||||
.preinit_array :
|
.preinit_array :
|
||||||
{
|
{
|
||||||
. = ALIGN(8);
|
. = ALIGN(8);
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
volatile const config_data_mode_t __attribute__((section(".config_section_default.mode"))) config_data_mode_default = {
|
const config_data_mode_t __attribute__((section(".config_section_default.mode"))) config_data_mode_default = {
|
||||||
#ifdef _DIGI
|
#ifdef _DIGI
|
||||||
.digi = 1,
|
.digi = 1,
|
||||||
#else
|
#else
|
||||||
|
@ -126,7 +126,7 @@ volatile const config_data_mode_t __attribute__((section(".config_section_defaul
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
volatile const config_data_basic_t __attribute__((section(".config_section_default.basic"))) config_data_basic_default = {
|
const config_data_basic_t __attribute__((section(".config_section_default.basic"))) config_data_basic_default = {
|
||||||
.callsign = _CALL,
|
.callsign = _CALL,
|
||||||
.ssid = _SSID,
|
.ssid = _SSID,
|
||||||
.latitude = _LAT,
|
.latitude = _LAT,
|
||||||
|
@ -194,7 +194,7 @@ volatile const config_data_basic_t __attribute__((section(".config_section_defau
|
||||||
* Data sources for different parameters
|
* Data sources for different parameters
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
volatile const config_data_wx_sources_t __attribute__((section(".config_section_default.sources"))) config_data_wx_sources_default = {
|
const config_data_wx_sources_t __attribute__((section(".config_section_default.sources"))) config_data_wx_sources_default = {
|
||||||
#ifdef _TEMPERATURE_INTERNAL
|
#ifdef _TEMPERATURE_INTERNAL
|
||||||
.temperature = WX_SOURCE_INTERNAL,
|
.temperature = WX_SOURCE_INTERNAL,
|
||||||
#endif
|
#endif
|
||||||
|
@ -259,7 +259,7 @@ volatile const config_data_wx_sources_t __attribute__((section(".config_section_
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
volatile const config_data_umb_t __attribute__((section(".config_section_default.umb"))) config_data_umb_default = {
|
const config_data_umb_t __attribute__((section(".config_section_default.umb"))) config_data_umb_default = {
|
||||||
#ifdef _UMB_SLAVE_ID
|
#ifdef _UMB_SLAVE_ID
|
||||||
.slave_id = _UMB_SLAVE_ID,
|
.slave_id = _UMB_SLAVE_ID,
|
||||||
#else
|
#else
|
||||||
|
@ -291,7 +291,7 @@ volatile const config_data_umb_t __attribute__((section(".config_section_default
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
volatile const config_data_rtu_t __attribute__((section(".config_section_default.rtu"))) config_data_rtu_default = {
|
const config_data_rtu_t __attribute__((section(".config_section_default.rtu"))) config_data_rtu_default = {
|
||||||
.slave_speed = _RTU_SLAVE_SPEED,
|
.slave_speed = _RTU_SLAVE_SPEED,
|
||||||
|
|
||||||
.slave_parity = _RTU_SLAVE_PARITY,
|
.slave_parity = _RTU_SLAVE_PARITY,
|
||||||
|
|
|
@ -114,7 +114,7 @@ uint32_t configuration_handler_check_crc(void) {
|
||||||
crc_current = CRC_CalcCRC((uint32_t)0x0);
|
crc_current = CRC_CalcCRC((uint32_t)0x0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef STM32L471xxconfig_kiss_flash_state
|
#ifdef STM32L471xx
|
||||||
// reset CRC engine
|
// reset CRC engine
|
||||||
LL_CRC_ResetCRCCalculationUnit(CRC);
|
LL_CRC_ResetCRCCalculationUnit(CRC);
|
||||||
|
|
||||||
|
@ -130,6 +130,7 @@ uint32_t configuration_handler_check_crc(void) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//crc_expected = *__config_section_second_end;
|
//crc_expected = *__config_section_second_end;
|
||||||
|
crc_expected = *(config_section_second_start + CRC_32B_WORD_OFFSET);
|
||||||
|
|
||||||
// check if calculated CRC value match value stored in flash memory
|
// check if calculated CRC value match value stored in flash memory
|
||||||
if (crc_expected == crc_current) {
|
if (crc_expected == crc_current) {
|
||||||
|
@ -244,6 +245,9 @@ uint32_t configuration_handler_restore_default_first(void) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
|
||||||
// set programming counter. If second region is also screwed the first one will be used as a source
|
// set programming counter. If second region is also screwed the first one will be used as a source
|
||||||
// if second is OK it will be used instead (if its programming counter has value three or more).
|
// if second is OK it will be used instead (if its programming counter has value three or more).
|
||||||
|
@ -400,6 +404,9 @@ uint32_t configuration_handler_restore_default_second(void) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
|
||||||
// set programming counter. If second region is also screwed the first one will be used as a source
|
// set programming counter. If second region is also screwed the first one will be used as a source
|
||||||
// if second is OK it will be used instead (if its programming counter has value three or more).
|
// if second is OK it will be used instead (if its programming counter has value three or more).
|
||||||
|
|
|
@ -319,6 +319,8 @@ int main(int argc, char* argv[]){
|
||||||
// if not store the flag in the backup register to block
|
// if not store the flag in the backup register to block
|
||||||
// reinitializing once again in the consecutive restart
|
// reinitializing once again in the consecutive restart
|
||||||
configuration_set_bits_register(CONFIG_FIRST_FAIL_RESTORING);
|
configuration_set_bits_register(CONFIG_FIRST_FAIL_RESTORING);
|
||||||
|
|
||||||
|
configuration_clear_bits_register(CONFIG_FIRST_CRC_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -591,7 +591,9 @@ void pwr_save_pooling_handler(const config_data_mode_t * config, const config_da
|
||||||
pwr_save_switch_mode_to_l7((timers->wx_transmit_period * 60) - 120);
|
pwr_save_switch_mode_to_l7((timers->wx_transmit_period * 60) - 120);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
reinit_sensors= pwr_save_switch_mode_to_c1();
|
// TODO: Workaround here for HW-RevB!!!
|
||||||
|
//reinit_sensors= pwr_save_switch_mode_to_c1();
|
||||||
|
reinit_sensors = pwr_save_switch_mode_to_c0();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -670,7 +672,9 @@ void pwr_save_pooling_handler(const config_data_mode_t * config, const config_da
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (pwr_save_seconds_to_wx <= 30) {
|
if (pwr_save_seconds_to_wx <= 30) {
|
||||||
pwr_save_switch_mode_to_c1();
|
// TODO: Workaround here for HW-RevB!!!
|
||||||
|
//reinit_sensors= pwr_save_switch_mode_to_c1();
|
||||||
|
pwr_save_switch_mode_to_c0();
|
||||||
|
|
||||||
// do not reinitialize everything as reinitialization had been done when switching to m4 mode
|
// do not reinitialize everything as reinitialization had been done when switching to m4 mode
|
||||||
reinit_sensors = 0;
|
reinit_sensors = 0;
|
||||||
|
|
Ładowanie…
Reference in New Issue