瀏覽代碼

【V3.1.254.65】增加软件重启记录

CHENJIE-PC\QiXiang_CHENJIE 3 年之前
父節點
當前提交
1ca6836fa8
共有 5 個文件被更改,包括 54 次插入50 次删除
  1. 2 2
      inc/AppConfig.h
  2. 8 7
      inc/AppSignal.h
  3. 34 33
      src/AppSignal.c
  4. 8 1
      src/AppTaskMain.c
  5. 2 7
      src/AppTaskTcp.c

+ 2 - 2
inc/AppConfig.h

@@ -2,7 +2,7 @@
  * @Author       : ChenJie
  * @Date         : 2021-10-14 09:27:15
  * @LastEditors  : ChenJie
- * @LastEditTime : 2021-12-13 16:22:39
+ * @LastEditTime : 2021-12-14 11:34:14
  * @Description  : App Config H file 配置文件,可以针对不同参数进行更改
  * @FilePath     : \PLAT\project\ec616_0h00\apps\qx_app\inc\AppConfig.h
  */
@@ -14,7 +14,7 @@
 #define DATA_MODULE_TYPE (1)           // 1表示NB模块,2表示4G cat1
 #define EOLSTATE (0)                   // 1表示下线检测跳过,使用默认值,0表示使用下线检测
 #define DEFAULT_SN "RLTEST00000000001" //默认上传的SN编码
-#define APPSWVERSION 0x0301FF41        //数据模块软件版本号
+#define APPSWVERSION 0x0301FE41        //数据模块软件版本号
 #define RELAYCONFIG 1                  //继电器配置
 #define TCP_ADD "iotp.fast-fun.cn"     //数据上传的地址
 #define TCP_PORT 8712                  //数据上传的端口

+ 8 - 7
inc/AppSignal.h

@@ -2,7 +2,7 @@
  * @Author       : ChenJie
  * @Date         : 2021-10-14 09:27:15
  * @LastEditors  : ChenJie
- * @LastEditTime : 2021-11-12 16:11:45
+ * @LastEditTime : 2021-12-14 11:23:33
  * @Description  : Global variable definition H file
  * @FilePath     : \PLAT\project\ec616_0h00\apps\qx_app\inc\AppSignal.h
  */
@@ -14,14 +14,14 @@
 #include "bsp_custom.h"
 #include "lwip_config_ec6160h00.h"
 #include "BCUDisp.h"
-//declear the bool vars
+// declear the bool vars
 extern volatile BOOL NB_Fota_update_flag;
 extern volatile BOOL BMS_Fota_update_flag;
 extern UINT32 ErrFlg;
 
 extern BOOL downloadReady;
 
-//extern declear the UINT8 vars
+// extern declear the UINT8 vars
 extern UINT8 AvgBattTemp;
 extern UINT8 battCellTemp[8];
 extern UINT8 battHeatEnableState;
@@ -70,12 +70,13 @@ extern UINT8 UartCmdRecvFlag;
 extern UINT8 UartErrorFlag;
 extern UINT8 UartInterruptcount;
 extern UINT8 UartRecvFlag;
-extern UINT8 UDSService[2];              //uds 服务
+extern UINT8 UDSService[2];              // uds 服务
 extern UINT8 UDSSubService[2];           // uds 子服务
 extern UINT8 UDSSubServiceActionCode[2]; // uds 子服务状态
 extern UINT8 UDSSwitch;
 extern UINT8 UDSDialogMode;
-//declear the UINT16 vars
+extern UINT8 SysResetFlag;
+// declear the UINT16 vars
 extern UINT16 battCellU[28];
 extern UINT16 battI;
 extern UINT16 battPackVol;
@@ -87,7 +88,7 @@ extern UINT16 ErrorNum[ErrorNumLength];
 extern UINT16 updateDifferDataPackageCounter;
 extern INT16 xyzData[3];
 extern UINT8 otherTempAvg;
-//declear the UINT32 vars
+// declear the UINT32 vars
 extern UINT32 battBalanceoInfo;
 extern UINT32 battProtectState;
 extern UINT32 battWarningState;
@@ -96,7 +97,7 @@ extern UINT32 Battdesigncap;
 extern UINT32 PowerVoltage;
 extern volatile UINT32 TimeCounter;
 
-//declear other vars
+// declear other vars
 extern AppAlgorithmData BcuDataInfo;
 extern AppConfigDataType AppNVMData;
 extern AppDataBody AppDataInfo;

+ 34 - 33
src/AppSignal.c

@@ -3,7 +3,7 @@
  * @Date         : 2021-10-14 09:27:15
  * @Version      : V3.0
  * @LastEditors  : ChenJie
- * @LastEditTime : 2021-11-23 11:58:51
+ * @LastEditTime : 2021-12-14 11:23:07
  * @Description  : Global variable definition c file,此文件存放App使用到的全局变量
  * @FilePath     : \PLAT\project\ec616_0h00\apps\qx_app\src\AppSignal.c
  */
@@ -19,73 +19,74 @@ BOOL downloadReady = FALSE;
 
 /**declear the uint8 vars**/
 UINT8 AvgBattTemp = 0;
-UINT8 battCellTemp[8] = {0};            //Battery temperature 电池温度数值
-UINT8 battHeatEnableState = 0x00;       //bms加热使能状态
-UINT8 battMOSSwitchState = 0x00;        //bms开关状态
+UINT8 battCellTemp[8] = {0};            // Battery temperature 电池温度数值
+UINT8 battHeatEnableState = 0x00;       // bms加热使能状态
+UINT8 battMOSSwitchState = 0x00;        // bms开关状态
 UINT8 battSOC = 0;                      //电池SOC
 UINT8 battSOH = 0;                      //电池SOH
 UINT8 battWorkState = 0x00;             //电池工作状态
 UINT8 BattWorkStateDelay = 0;           //电池工作状态(延时处理后的)
-UINT8 bmsHwVersion = 0;                 //bms硬件版本
-UINT8 bmsSwVersion = 0;                 //bms软件版本
+UINT8 bmsHwVersion = 0;                 // bms硬件版本
+UINT8 bmsSwVersion = 0;                 // bms软件版本
 UINT8 BMSupdatestatus = 0xFF;           //保护板更新状态 0xFF表示未更新,00表示更新成功,c表示校验不过
 UINT8 BuzzerControl = 0;                //蜂鸣器控制状态
-UINT8 CanMsgEnble = 0;                  //Can send status Can中断状态
+UINT8 CanMsgEnble = 0;                  // Can send status Can中断状态
 UINT8 ChargeForbiddenControl = 0x00;    //充电禁止控制
 UINT8 chargerConnectState = 0x00;       //充电器连接状态
 UINT8 DisChargeForbiddenControl = 0x00; //放电禁止控制
 UINT8 fastChargeTemp = 0;               // fast charge plug temprature  快充插头温度
-UINT8 GpsFlag = 0;                      //GPS 数据有效标志位
+UINT8 GpsFlag = 0;                      // GPS 数据有效标志位
 UINT8 HeatForceControl = 0;             //加热强制控制使能
-UINT8 heatTemp1 = 0;                    //Heating plate1 temperature    加热板温度1
-UINT8 heatTemp2 = 0;                    //Heating plate2 temperature    加热板温度2
-UINT8 Lockstatus = 0;                   //Interlock status 高压互锁状态
+UINT8 heatTemp1 = 0;                    // Heating plate1 temperature    加热板温度1
+UINT8 heatTemp2 = 0;                    // Heating plate2 temperature    加热板温度2
+UINT8 Lockstatus = 0;                   // Interlock status 高压互锁状态
 UINT8 maxCellTemp = 0;                  //最高单体温度
 UINT8 minCellTemp = 0;                  //最低单体温度
-UINT8 MOSTemp = 0;                      //mos temprature mos温度
+UINT8 MOSTemp = 0;                      // mos temprature mos温度
 UINT8 nbReservedTemp1 = 0;              //
 UINT8 nbReservedTemp2 = 0;              //
 UINT8 normalChargeTemp = 0;             // normal charge plug temprature    慢充插头温度
-UINT8 packTemp = 0;                     //battery pack temprature   电池箱体温度
+UINT8 packTemp = 0;                     // battery pack temprature   电池箱体温度
 UINT8 PadInterrupt = 0x00;              //每个bit代表一个中断标志
 UINT8 PosFlag = 0;                      //定位信息是否有效标志位
 UINT8 RelayForbiddenControl = 0x00;     //继电器禁止控制
 UINT8 RelayForceControl = 0x00;         //继电器强制控制
-UINT8 reservedSignal1 = 0;              //can信息保留信号1
-UINT8 reservedSignal2 = 0;              //can信息保留信号2
-UINT8 reservedSignal3 = 0;              //can信息保留信号3
-UINT8 reservedSignal4 = 0;              //can信息保留信号4
-UINT8 reservedSignal5 = 0;              //can信息保留信号5
-UINT8 reservedSignal6 = 0;              //can信息保留信号6
-UINT8 reservedSignal7 = 0;              //can信息保留信号7
-UINT8 reservedSignal8 = 0;              //can信息保留信号8
-UINT8 TcpErrorcount = 0;                //Error count TCP联网错误计数
-UINT8 TcpSendLen = 0;                   //Tcp send status Tcp发送状态
-UINT8 TCPWorkState = 0;                 //Tcp工作状态,0-表示发送,1-表示应答,2-表示监听以及心跳发送
-UINT8 UartCmdRecvFlag = 0;              //Uart控制应答回复
-UINT8 UartErrorFlag = 0;                //Uart故障标志位0表示正常,1表示故障
-UINT8 UartRecvFlag = 0;                 //Uart收到消息标志位0表示未收到,1表示收到
-UINT8 UDSService[2] = {0};              //uds 服务
+UINT8 reservedSignal1 = 0;              // can信息保留信号1
+UINT8 reservedSignal2 = 0;              // can信息保留信号2
+UINT8 reservedSignal3 = 0;              // can信息保留信号3
+UINT8 reservedSignal4 = 0;              // can信息保留信号4
+UINT8 reservedSignal5 = 0;              // can信息保留信号5
+UINT8 reservedSignal6 = 0;              // can信息保留信号6
+UINT8 reservedSignal7 = 0;              // can信息保留信号7
+UINT8 reservedSignal8 = 0;              // can信息保留信号8
+UINT8 TcpErrorcount = 0;                // Error count TCP联网错误计数
+UINT8 TcpSendLen = 0;                   // Tcp send status Tcp发送状态
+UINT8 TCPWorkState = 0;                 // Tcp工作状态,0-表示发送,1-表示应答,2-表示监听以及心跳发送
+UINT8 UartCmdRecvFlag = 0;              // Uart控制应答回复
+UINT8 UartErrorFlag = 0;                // Uart故障标志位0表示正常,1表示故障
+UINT8 UartRecvFlag = 0;                 // Uart收到消息标志位0表示未收到,1表示收到
+UINT8 UDSService[2] = {0};              // uds 服务
 UINT8 UDSSubService[2] = {0};           // uds 子服务
 UINT8 UDSSubServiceActionCode[2] = {0}; // uds 子服务状态
 UINT8 UDSSwitch = 0;                    //下线检测标志位
 UINT8 UartInterruptcount = 0;           //串口中断累加值
-UINT8 UDSDialogMode = 01;               //UDS诊断模式
+UINT8 UDSDialogMode = 01;               // UDS诊断模式
+UINT8 SysResetFlag = 0;
 /**declear the uint16 vars**/
 UINT16 avrgCellVol = 0;                    //平均单体电压
 UINT16 battCellU[28] = {0};                //电池包单体电压
 UINT16 battI = 0;                          //电池总电流
 UINT16 battPackVol = 0;                    //电池总压
-UINT16 ErrorNum[ErrorNumLength] = {0};     //Error array,故障数组
+UINT16 ErrorNum[ErrorNumLength] = {0};     // Error array,故障数组
 UINT16 maxCellVol = 0;                     //最大单体电压
 UINT16 minCellVol = 0;                     //最小单体电压
 UINT16 nbHwVersion = 0;                    //数据模块硬件状态
 UINT16 updateDifferDataPackageCounter = 0; //差分包升级计数器
-INT16 xyzData[3] = {0};                    //xyz三轴数据
+INT16 xyzData[3] = {0};                    // xyz三轴数据
 UINT8 otherTempAvg = 0;
 /**declear the uint32 vars**/
 UINT32 battBalanceoInfo = 0; //电池均衡状态
-UINT32 Battdesigncap = 0;    //battery design cap 电池包设计容量
+UINT32 Battdesigncap = 0;    // battery design cap 电池包设计容量
 UINT32 battProtectState = 0; //电池保护状态
 UINT32 battWarningState = 0; //电池告警状态
 UINT32 nbSwVersion = 0;      // 数据模块软件状态
@@ -95,7 +96,7 @@ volatile UINT32 TimeCounter = 0x00; //主任务定时器计数
 /**declear the Handle vars**/
 osMutexId_t Error_Mutex = NULL;          //故障互锁句柄
 QueueHandle_t GpsRecvHandle = NULL;      //定位信息队列句柄
-QueueHandle_t UartWriteCmdHandle = NULL; //Uart写命令队列句柄
+QueueHandle_t UartWriteCmdHandle = NULL; // Uart写命令队列句柄
 
 /**declear other vars**/
 

+ 8 - 1
src/AppTaskMain.c

@@ -3,7 +3,7 @@
  * @Date         : 2021-10-14 09:27:15
  * @Version      : V3.0
  * @LastEditors  : ChenJie
- * @LastEditTime : 2021-12-08 18:14:16
+ * @LastEditTime : 2021-12-14 11:33:29
  * @Description  : 主要负责:1.工作模式转换2.定时器定时3.定时保存运行数据4.异常状态重启
  * @FilePath     : \PLAT\project\ec616_0h00\apps\qx_app\src\AppTaskMain.c
  */
@@ -51,6 +51,12 @@ static void MainTask(void *arg)
     slpManRegisterUsrdefinedRestoreCb(appAfterSlp2, NULL, SLPMAN_SLEEP2_STATE);
     slpManWakeSrc_e Wakeup_source;
     Wakeup_source = slpManGetWakeupSrc(); //获取唤醒源
+    LastResetState_e LastResetReasonNum;
+    LastResetReasonNum = appGetLastResetReason();
+    SysResetFlag = 1;
+#ifdef DEBUGLOG
+    Debug_printf("[%d,%d,%d]\n", Wakeup_source, AppDataInfo.SysReStartCount, LastResetReasonNum);
+#endif
     //配置文件及运行数据加载
     if (Error_Mutex == NULL)
     {
@@ -101,6 +107,7 @@ static void MainTask(void *arg)
                 NVIC_EnableIRQ(PadWakeup1_IRQn);
                 UartInterruptcount = 0;
                 PadInterrupt_clrCounter = 0;
+                SysResetFlag = 0;
                 PROC_MAIN_STATE_SWITCH(PROCESS_STATE_LISTEN);
                 break;
             }

+ 2 - 7
src/AppTaskTcp.c

@@ -42,11 +42,6 @@ static void TcpTask(void *arg)
         TcpRecvHandle = osMessageQueueNew(3, sizeof(TcpipConnectionRecvDataInd *), NULL);
     }
     osDelay(5000); //等待驻网延时5s
-    slpManWakeSrc_e Wakeup_source;
-    Wakeup_source = slpManGetWakeupSrc(); //获取唤醒源
-#ifdef DEBUGLOG
-    Debug_printf("[%d,%d]\n", Wakeup_source, AppDataInfo.SysReStartCount);
-#endif
     while (true)
     {
         osDelay(100);
@@ -576,9 +571,9 @@ static void TcpDataInfoAssembleSend()
         static UINT8 Debugcounter = 0;
         if (Debugcounter % 5 == 0)
         {
-            sprintf((char *)rbuf, "A-%x,%d,%d,%x,%x,,%d,%d",
+            sprintf((char *)rbuf, "A-%x,%d,%d,%x,%x,,%d,%d,,%d",
                     battProtectState, AppDataInfo.RelayControl, chargerConnectState, BMSupdatestatus, PadInterrupt,
-                    AppDataInfo.ExpiryTimeArray[1], AppDataInfo.ExpiryTimeArray[2]);
+                    AppDataInfo.ExpiryTimeArray[1], AppDataInfo.ExpiryTimeArray[2], SysResetFlag);
         }
         else
         {