Flash code updated

pull/34/head
erikkaashoek 4 years ago
parent 44ba1781d5
commit 833c870ced

@ -19,14 +19,14 @@
*/
MEMORY
{
flash0 : org = 0x08000000, len = 236k
flash0 : org = 0x08000000, len = 240k
flash1 : org = 0x00000000, len = 0
flash2 : org = 0x00000000, len = 0
flash3 : org = 0x00000000, len = 0
flash4 : org = 0x00000000, len = 0
flash5 : org = 0x00000000, len = 0
flash6 : org = 0x00000000, len = 0
flash7 : org = 0x0803B000, len = 20k
flash7 : org = 0x0803C000, len = 16k
ram0 : org = 0x20000000, len = 40k
ram1 : org = 0x00000000, len = 0
ram2 : org = 0x00000000, len = 0

@ -78,6 +78,7 @@ checksum(const void *start, size_t len)
return value;
}
int
config_save(void)
{
@ -85,6 +86,7 @@ config_save(void)
uint16_t *dst = (uint16_t*)SAVE_CONFIG_ADDR;
int count = sizeof(config_t) / sizeof(uint16_t);
config.magic = CONFIG_MAGIC;
config.checksum = checksum(&config, sizeof config - sizeof config.checksum);
@ -92,6 +94,9 @@ config_save(void)
/* erase flash pages */
flash_erase_page((uint32_t)dst);
#if SAVE_CONFIG_SIZE > FLASH_PAGESIZE // two flash pages
flash_erase_page(((uint32_t)dst) + FLASH_PAGESIZE);
#endif
/* write to flash */
while (count-- > 0) {
@ -156,6 +161,7 @@ caldata_save(uint16_t id)
flash_program_half_word((uint32_t)dst, *src++);
dst++;
}
#if 0
// Flash stored trace to flash
count = sizeof(stored_t) / sizeof(uint16_t);
src = (uint16_t*)&stored_t[0];
@ -163,7 +169,7 @@ caldata_save(uint16_t id)
flash_program_half_word((uint32_t)dst, *src++);
dst++;
}
#endif
/* after saving data, make active configuration points to flash */
// active_props = (setting_t*)saveareas[id];
// lastsaveid = id;
@ -220,9 +226,11 @@ caldata_recall(uint16_t id)
/* duplicated saved data onto sram to be able to modify marker/trace */
memcpy(dst, src, sizeof(setting_t));
#if 0
// Restore stored trace
src = &(src[1]);
memcpy(stored_t, src, sizeof(stored_t));
#endif
update_min_max_freq();
update_frequencies();
set_scale(setting.scale);

@ -212,15 +212,21 @@ typedef uint32_t freq_t;
#define CORRECTION_LOW_ULTRA 2
#define CORRECTION_LNA_ULTRA 3
#ifdef DIRECT_CORRECTION
#define CORRECTION_DIRECT 4
#define CORRECTION_LNA_DIRECT 5
#define CORRECTION_LOW_OUT 6
#define CORRECTION_HIGH 7
#define CORRECTION_SIZE 8
#define CORRECTION_DIRECT 4
#define CORRECTION_LNA_DIRECT 5
#define CORRECTION_LOW_OUT 6
#define CORRECTION_LOW_OUT_DIRECT 7
#define CORRECTION_LOW_OUT_ADF 8
#define CORRECTION_LOW_OUT_MIXER 9
#define CORRECTION_HIGH 10
#define CORRECTION_SIZE 11
#else
#define CORRECTION_LOW_OUT 4
#define CORRECTION_HIGH 5
#define CORRECTION_SIZE 6
#define CORRECTION_LOW_OUT 4
#define CORRECTION_LOW_OUT_DIRECT 5
#define CORRECTION_LOW_OUT_ADF 6
#define CORRECTION_LOW_OUT_MIXER 7
#define CORRECTION_HIGH 8
#define CORRECTION_SIZE 9
#endif
#endif
typedef float measurement_t[TRACES_MAX][POINTS_COUNT];
@ -1239,23 +1245,33 @@ extern int linear_averaging;
// config save area (flash7 addr)
#ifdef TINYSA3
#define SAVE_CONFIG_ADDR 0x0801D000
#define SAVE_CONFIG_SIZE FLASH_PAGESIZE
#define FLASH_END 0x08020000
#endif
#ifdef TINYSA4
#define SAVE_CONFIG_ADDR 0x0803A800
#define SAVE_CONFIG_ADDR 0x0803C000
#define SAVE_CONFIG_SIZE FLASH_PAGESIZE*2
#define FLASH_END 0x08040000
#endif
#define SAVE_CONFIG_SIZE 0x00000800
typedef char assert_config[sizeof(config_t)> SAVE_CONFIG_SIZE ? -1 : 1]; // Check config size
// setting_t save area (save area + config size)
#define SAVE_PROP_CONFIG_ADDR (SAVE_CONFIG_ADDR + SAVE_CONFIG_SIZE)
#ifdef TINYSA4
#define SAVE_PROP_CONFIG_SIZE 0x00001000
#define SAVE_PROP_CONFIG_SIZE 0x00000800
#else
#define SAVE_PROP_CONFIG_SIZE 0x00000800
#endif
typedef char assert_setting[sizeof(setting_t)> SAVE_PROP_CONFIG_SIZE ? -1 : 1]; // Check setting size
// Should include all save slots
#define SAVE_CONFIG_AREA_SIZE (SAVE_CONFIG_SIZE + SAVEAREA_MAX * SAVE_PROP_CONFIG_SIZE)
typedef char assert_flash[ SAVE_CONFIG_ADDR + SAVE_CONFIG_AREA_SIZE >= FLASH_END ? -1 : 1];
#else
#define SAVEAREA_MAX 4

Loading…
Cancel
Save

Powered by TurnKey Linux.