aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-02-06 15:22:42 +0200
committerShlomo Hecht <shlomo@twine-s.com>2020-02-06 15:22:42 +0200
commit33c0ce2e46a6fca8b48396f8aab1150197af20f3 (patch)
tree7a1c4d218d89b5ec612b2b4cad5cc70aa4a05d79 /Software/Embedded_SW/Embedded
parentcbd8aeea982ba5541d19d13c441711d872dae316 (diff)
downloadTango-33c0ce2e46a6fca8b48396f8aab1150197af20f3.tar.gz
Tango-33c0ce2e46a6fca8b48396f8aab1150197af20f3.zip
read and handle version update (from MCU EEPROM)
Diffstat (limited to 'Software/Embedded_SW/Embedded')
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c24
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h4
-rw-r--r--Software/Embedded_SW/Embedded/Main.c14
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c2
4 files changed, 43 insertions, 1 deletions
diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c
index c3a74efa9..7d9c5e02f 100644
--- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c
+++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c
@@ -10,6 +10,7 @@
#include "MCU_E2Prom.h"
#include "driverlib/eeprom.h"
#include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h"
+#include "Common/SW_Info/SW_Info.h"
uint32_t E2Prom_Data[MAX_EEPROM_STORAGE] = {0,0,0,0,0,0};
uint32_t MCU_E2PromProgram(int Address,uint32_t Data)
@@ -134,6 +135,29 @@ float MCU_E2PromDryerBacklashRead()
return Data;
}
+uint32_t MCU_E2PromEmbeddedVersionProgram(void)
+{
+ uint16_t size;
+ uint32_t Data;
+ size= sizeof(TangoVersion_t);
+ if (size>4)
+ {
+ Report("MCU_E2PromEmbeddedVersionProgram length error",__FILE__,__LINE__,size,RpWarning,(int)0,0);
+ return ERROR;
+ }
+ memcpy((uint8_t*)&Data,&_gTangoVersion,size);
+ EEPROMProgram((uint32_t *)&Data, EMBEDDED_VERSION_ADDR*4, 4);
+ return OK;
+}
+uint32_t MCU_E2PromEmbeddedVersionRead()
+{
+ uint32_t Data;
+ EEPROMRead((uint32_t *)&Data,EMBEDDED_VERSION_ADDR*4, 4);
+
+ Report("MCU_E2PromEmbeddedVersionRead length ",__FILE__,__LINE__,EMBEDDED_VERSION_ADDR*4,RpWarning,(int)(Data),0);
+
+ return Data;
+}
//Each word may not be subject to more than a specific number of programming cycles before an
//erase cycle is required. In other words, for any given word, FlashProgram can only be called
diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h
index 5cab24587..39c892e0a 100644
--- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h
+++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h
@@ -34,6 +34,7 @@ typedef enum {
EEPROM_STORAGE_SERIAL_NUM,
EEPROM_STORAGE_MAC_ADDR,
EEPROM_STORAGE_DRYER_BACKLASH,
+ EEPROM_STORAGE_EMBEDDED_VERSION,
MAX_EEPROM_STORAGE
}EEPROM_STORAGE_USAGE_ENUM;
#define MAX_SERIAL_NUM_LEN 20
@@ -41,6 +42,7 @@ typedef enum {
#define SERIAL_NUM_ADDR EEPROM_STORAGE_SERIAL_NUM*4
#define MAC_ADDR_ADDR (SERIAL_NUM_ADDR + MAX_SERIAL_NUM_LEN)
#define DRYER_BACKLASH_ADDR (MAC_ADDR_ADDR + MAX_MAC_ADDR_LEN)
+#define EMBEDDED_VERSION_ADDR (DRYER_BACKLASH_ADDR+1)
uint32_t MCU_E2PromProgram(int Address,uint32_t Data);
uint32_t MCU_E2PromRead(int Address,uint32_t *Data);
@@ -52,6 +54,8 @@ uint32_t MCU_E2PromSerialNumProgram(char *Data);
uint32_t MCU_E2PromSerialNumRead(char* *Data);
uint32_t MCU_E2PromDryerBacklashProgram(char *Data);
float MCU_E2PromDryerBacklashRead(void);
+uint32_t MCU_E2PromEmbeddedVersionProgram(void);
+uint32_t MCU_E2PromEmbeddedVersionRead();
extern char Serial[21];
diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c
index 9469f9b97..d0ebb8274 100644
--- a/Software/Embedded_SW/Embedded/Main.c
+++ b/Software/Embedded_SW/Embedded/Main.c
@@ -47,6 +47,8 @@
#include "Drivers/USBStick_FileSys/USBstick.h"
#include "Drivers/USBStick_FileSys/USBMSCHFatFs.h"
*/
+#include "Common/SW_Info/SW_Info.h"
+
#include "Modules/Control/control.h"
#include "Modules/Control/MillisecTask.h"
#include "Modules/Heaters/Heaters_ex.h"
@@ -233,7 +235,19 @@ int main(void)
//FlashInit();
#ifndef EVALUATION_BOARD
+ TangoVersion_t Version;
+ uint32_t Data;
+
MCU_E2PromInit();
+ Data = MCU_E2PromEmbeddedVersionRead();
+ memcpy (&Version,&Data,4);
+ if (memcmp(&Version,&_gTangoVersion,4))
+ {
+ LOG_ERROR(Version.m_minor,"Version change, do stuff");
+ FlashInit();
+ MCU_E2PromEmbeddedVersionProgram();
+ }
+
#endif
#ifdef EVALUATION_BOARD
Init_EVB();
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
index a9b539690..6542af287 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
@@ -707,7 +707,7 @@ uint32_t MillisecLowLoop(uint32_t tick)
char Lenstr[160];
static int Counter = 0;
MachineUpdateResponseFunc();
- KeepAliveOneSecondCall();
+ //KeepAliveOneSecondCall();
TemperatureListString(Lenstr);
ReportWithPackageFilter(ThreadFilter,Lenstr,__FILE__,__LINE__,(int)Counter++,RpWarning,(int) msec_millisecondCounter,0);