Flash code updated

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

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

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

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

Loading…
Cancel
Save

Powered by TurnKey Linux.