Sfoglia il codice sorgente

1.在下升级调试通过,
2.v7.4.0.0

yidongFan 1 mese fa
parent
commit
9b6ec35c51

+ 3 - 3
BoardInterface/onechip_load_inf.c

@@ -28,10 +28,10 @@
 #define STR1(R)  #R
 #define STR2(R)  STR1(R)
 
-const char Software_Ver[] __attribute__((at(VERINFO_ADDR_BASE + 0x00)))  = "Soft: " STR2(SOFT_VERSION_1) "." STR2(SOFT_VERSION_2) "." STR2(SOFT_VERSION_3) "." STR2(SOFT_VERSION_4);
-const char Compiler_Date[] __attribute__((at(VERINFO_ADDR_BASE + 0x10))) = "Time: " __DATE__  "-" __TIME__;
+const char Software_Ver[] = "Soft: " STR2(SOFT_VERSION_1) "." STR2(SOFT_VERSION_2) "." STR2(SOFT_VERSION_3) "." STR2(SOFT_VERSION_4);
+const char Compiler_Date[]= "Time: " __DATE__  "-" __TIME__;
 #ifdef ONE_CHIP_GIT_SHA_SHORT
-const char git_sha[] __attribute__((at(VERINFO_ADDR_BASE + 0x30))) = "SHA: " ONE_CHIP_GIT_SHA_SHORT;
+const char git_sha[]  = "SHA: " ONE_CHIP_GIT_SHA_SHORT;
 #endif  
 
 /**********************************************************************************

+ 10 - 4
Core/Src/main.c

@@ -103,8 +103,7 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
 						if(sysinf.ms_conter%(OFFLINE_TIME/2) == 0){
 							sysinf.upheart_flag = 1;
 						}
-				 }
-				 
+				 }				 
     }
 }
 /* USER CODE END 0 */
@@ -117,7 +116,15 @@ int main(void)
 {
 
   /* USER CODE BEGIN 1 */
-
+  //  while(1){
+  //     for(unsigned int i=0;i<10000;i++){
+  //         i++;
+  //         i--;
+  //     }
+  //   	HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_14); 
+  //  }
+  SCB->VTOR = 0x8010000;
+   __enable_irq();
   /* USER CODE END 1 */
 
   /* MCU Configuration--------------------------------------------------------*/
@@ -126,7 +133,6 @@ int main(void)
   HAL_Init();
 
   /* USER CODE BEGIN Init */
-
   /* USER CODE END Init */
 
   /* Configure the system clock */

+ 5 - 0
Core/Src/stm32f1xx_it.c

@@ -82,6 +82,11 @@ void NMI_Handler(void)
   /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
    while (1)
   {
+    for(unsigned int i=0;i<10000;i++){
+          i++;
+          i--;
+      }
+    	HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_14); 
   }
   /* USER CODE END NonMaskableInt_IRQn 1 */
 }

+ 9 - 0
Core/Src/system_stm32f1xx.c

@@ -174,6 +174,15 @@ const uint8_t APBPrescTable[8U] =  {0, 0, 0, 0, 1, 2, 3, 4};
   */
 void SystemInit (void)
 {
+
+	 /* while(1){
+      for(unsigned int i=0;i<10000;i++){
+          i++;
+          i--;
+      }
+    	HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_14); 
+   }
+	 */
 #if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG)
   #ifdef DATA_IN_ExtSRAM
     SystemInit_ExtMemCtl(); 

+ 115 - 4
DriverInterface/communication.c

@@ -3,7 +3,7 @@
 #include "onechip_include_header.h"
 
 
-char DeviceNum[64] = "mini7 2312230001 v1.1, ";
+char DeviceNum[60] = "mini7 2312230001 v1.1, ";
 uint8_t pc_send_wait = 0;     //数据发送等待,0可以立即发送;>0正在发送请等待
 uint8_t pc_send_cmd = 0;     //当前发送cmd
 
@@ -94,6 +94,42 @@ int data_send_to_pc(pc_cmd_type cmd, char *data, unsigned short len)
    return 0;
 }
 
+int data_send_to_pc_withindex(pc_cmd_type cmd, char *data, unsigned short len, unsigned char index)
+{
+    uint16_t check;
+    int ret = -1;
+    msg.head = 0x55aa;
+    msg.seq = index;
+    msg.cmd = cmd;
+    msg.tail = 0x5a;
+    msg.len = len;
+    msg.data = data;
+
+
+	check = checkSum((const unsigned char *)&msg.seq, 4);
+	check += checkSum((const unsigned char *)data, len);
+	msg.checksum = check & 0xFF;
+	msg.tail = (check >> 8);	
+	if(check_to_pc_busy()){		
+		memcpy(&wifi_tx_buf[0], (uint8_t*)&msg, MSG_CMDFRAME_LEN);
+		memcpy(&wifi_tx_buf[MSG_CMDFRAME_LEN], data, len);
+		memcpy(&wifi_tx_buf[MSG_CMDFRAME_LEN+len],  (uint8_t*)&check, 2);
+		wifi_tx_len = MSG_CMDFRAME_LEN+len+2;	
+	}else{
+		return ret;
+	}	
+	if((sysinf.pc_channel_recv  == PC_CONNECT_TYPE_WIFI || cmd == PC_CMD_SETIP ) && PC_CMD_SETWIFI != cmd)
+	{			
+		return WIFI_ReSend();
+	}
+	else
+	{	
+    Van_Debug_UART_Send_DMA((unsigned char *)wifi_tx_buf, wifi_tx_len); //将收到的信息发送出		
+		memset(wifi_tx_buf, 0, sizeof(wifi_tx_buf));
+	}
+   return 0;
+}
+
 
 void PackDeviceNum(void){		
 	int len = 0;
@@ -153,7 +189,14 @@ void send_Devinf_pc(void)
 int handshake_action(unsigned char cmd, unsigned char *parg)
 {
     
-    sysinf.system_OnlineFlag = true;
+    sysinf.system_OnlineFlag = true;   
+    unsigned int verAddr = FLASH_APP1_ADDR + FLASH_APP_VERSION_OFFSET;  
+	PackDeviceNum();
+    if(*(uint32_t *)(verAddr) == 0xffffffff){
+        /*首次上电,跟新版本号*/        
+	    unsigned int len =  strlen(DeviceNum);       
+		Flash_WriteBuffer(verAddr, (uint8_t *)DeviceNum, len);
+	}
     return 0;
 }
 
@@ -288,9 +331,8 @@ int default_pc_response(CmdMessage *pMsg, unsigned char result)
 int handshake_response(CmdMessage *pMsg, unsigned char result)
 {
 	unsigned short len = 0;
-	PackDeviceNum();
 	len = strlen(DeviceNum);
-	return data_send_to_pc((pc_cmd_type)pMsg->cmd, (char*)DeviceNum, len);
+	return data_send_to_pc_withindex((pc_cmd_type)pMsg->cmd, (char*)DeviceNum, len,pMsg->seq);
 }
 
 	
@@ -460,6 +502,54 @@ int set_IP_action(uint8_t cmd, uint8_t *parg)
 	return 0;
 
 }
+int start_update_app_action(uint8_t cmd, uint8_t *parg)
+{
+	
+    iap_load_app(FLASH_BOOTLOAD_ADDR);
+	return 0;
+
+}
+
+
+/********************************************************************
+ *    uint16_t send_Devinf_pc(void)
+ *
+ *描述:发送设备信息到主机,便于主机下法TCP信息
+ *参数:无
+ *返回:无
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+void start_update_app_response(CmdMessage *pMsg, uint8_t result)
+{
+
+    uint16_t len = 0;
+	len =  strlen(DeviceNum);
+	data_send_to_pc(PC_CMD_STARTUPDATE,DeviceNum,len);
+
+}
+int updateInfo_action(uint8_t cmd, uint8_t *parg)
+{
+	
+	return 1;
+}
+int updateDate_action(uint8_t cmd, uint8_t *parg)
+{
+	
+	return 1;
+}
+
+
+int updateDate_response(CmdMessage *pMsg, unsigned char result)
+{
+
+	unsigned char *data  = (unsigned char *)pMsg->data;
+    *(unsigned int *)(data+4) =  *(unsigned int *)data;	
+    *(unsigned int *)(data+8) =  result;
+	return data_send_to_pc((pc_cmd_type)pMsg->cmd, pMsg->data, 12);
+}
+
 int send_temp_parm(uint8_t cmd, uint8_t *parg)
 {
 	/*设置温度*/
@@ -557,6 +647,27 @@ const struct PCActionPack mPCActionPack[] =
             .datalen = 0xff,
         },
 
+        {
+            .cmd = PC_CMD_STARTUPDATE,
+            .action = start_update_app_action,
+            .response = NULL,
+            .datalen = 0xff,
+        },
+
+        // {
+        //     .cmd = PC_CMD_UPDATEINFO,
+        //     .action = updateInfo_action,
+        //     .response = set_response,
+        //     .datalen = 0xff,
+        // },
+        // {
+        //     .cmd = PC_CMD_UPDATEDATA,
+        //     .action = updateDate_action,
+        //     .response = updateDate_response,
+        //     .datalen = 0xff,
+        // },
+        
+
 };
 
 void pc_resend_del(uint8_t seq){

+ 5 - 0
DriverInterface/communication.h

@@ -35,6 +35,11 @@ typedef  enum
 	PC_CMD_ASKSTATE = 0x12,
 	PC_CMD_SETSTATE = 0x13,/*设置强制改变模块状态*/
 	PC_CMD_UPDATETEMP = 0x14,/*设置强制改变模块状态*/
+
+	PC_CMD_STARTUPDATE = 0x20,/*开始升级*/
+	PC_CMD_UPDATEINFO = 0x21,/*升级包信息*/	
+	PC_CMD_UPDATEDATA = 0x22,/*升级数据*/
+	
 	UINON_CMD_TEMP_ADJ = 0x40, /*校准参数*/
 	UINON_CMD_TEMP_PID = 0x41, /*PID参数*/
 	UINON_CMD_TEMP_ADJ_GET = 0x42, /*校准参数*/

+ 21 - 0
DriverInterface/onchip_flash.c

@@ -293,3 +293,24 @@ uint8_t cfg_param_init(void)
 
 	return rlt;
 }
+
+/**
+ * @brief       跳转到应用程序段(执行APP)
+ * @param       appxaddr : 应用程序的起始地址
+
+ * @retval      无
+ */
+void iap_load_app(uint32_t appxaddr)
+{
+    if (((*(volatile  uint32_t *)appxaddr) & 0x2FFE0000) == 0x20000000)     /* 检查栈顶地址是否合法.可以放在内部SRAM共64KB(0x20000000) */
+    {
+        /* 用户代码区第二个字为程序开始地址(复位地址) */
+        iapfun jump2app = (iapfun) * (volatile uint32_t *)(appxaddr + 4);
+        HAL_DeInit();
+        /* 初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址) */
+        __set_MSP(*(volatile uint32_t *)appxaddr);
+        
+        /* 跳转到APP */
+        jump2app();
+    }
+}

+ 10 - 0
DriverInterface/onchip_flash.h

@@ -1,7 +1,17 @@
 
 #ifndef USR_ONCHIP_FLASH_H_
 #define USR_ONCHIP_FLASH_H_
+typedef void (*iapfun)(void);                   /* 定义一个函数类型的参数 */
 
+#define FLASH_BOOTLOAD_ADDR         0x08000000      /* 第一个应用程序起始地址(存放在内部FLASH)
+                                                 * 保留 0X08000000~0X08010000(64KB) 的空间为 Bootloader 使用
+                                                 */
+#define FLASH_APP1_ADDR         0x08010000                                                     
+#define FLASH_APP2_ADDR         0x08030000
+#define FLASH_APP2_SIZE         0x20000
+#define FLASH_APP_VERSION_OFFSET         0x1ffc0   /*存储app版本,标记*/
+
+void iap_load_app(uint32_t appxaddr);   /* 跳转到APP程序执行 */
 void cfg_load_default_param(void);
 uint8_t cfg_param_verify(void);
 uint8_t cfg_save_cfg_param(void);

File diff suppressed because it is too large
+ 7 - 8
MDK-ARM/mini7_V2.uvguix.Administrator


+ 19 - 3
MDK-ARM/mini7_V2.uvoptx

@@ -154,7 +154,7 @@
           <Type>0</Type>
           <LineNumber>515</LineNumber>
           <EnabledFlag>1</EnabledFlag>
-          <Address>134251616</Address>
+          <Address>134251688</Address>
           <ByteObject>0</ByteObject>
           <HtxType>0</HtxType>
           <ManyObjects>0</ManyObjects>
@@ -165,6 +165,22 @@
           <ExecCommand></ExecCommand>
           <Expression>\\mini7_V2\../DriverInterface/ESP32_WROOM_32D.c\515</Expression>
         </Bp>
+        <Bp>
+          <Number>1</Number>
+          <Type>0</Type>
+          <LineNumber>194</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>134262718</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>1</BreakIfRCount>
+          <Filename>..\DriverInterface\communication.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression>\\mini7_V2\../DriverInterface/communication.c\194</Expression>
+        </Bp>
       </Breakpoint>
       <WatchWindow1>
         <Ww>
@@ -212,7 +228,7 @@
         <Mm>
           <WinNumber>1</WinNumber>
           <SubType>0</SubType>
-          <ItemText>0x0807f800</ItemText>
+          <ItemText>0x0802ffc0</ItemText>
           <AccSizeX>0</AccSizeX>
         </Mm>
       </MemoryWindow1>
@@ -416,7 +432,7 @@
 
   <Group>
     <GroupName>Drivers/STM32F1xx_HAL_Driver</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>

+ 6 - 6
MDK-ARM/mini7_V2.uvprojx

@@ -80,9 +80,9 @@
             <nStopB2X>0</nStopB2X>
           </BeforeMake>
           <AfterMake>
-            <RunUserProg1>0</RunUserProg1>
-            <RunUserProg2>1</RunUserProg2>
-            <UserProg1Name></UserProg1Name>
+            <RunUserProg1>1</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name>C:\Keil_v5\ARM\ARMCC\bin\fromelf   --bin --output ./mini7_V2/mini7_V2.bin ./mini7_V2/mini7_V2.axf</UserProg1Name>
             <UserProg2Name></UserProg2Name>
             <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
             <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
@@ -274,8 +274,8 @@
               </OCR_RVCT3>
               <OCR_RVCT4>
                 <Type>1</Type>
-                <StartAddress>0x8000000</StartAddress>
-                <Size>0x80000</Size>
+                <StartAddress>0x8010000</StartAddress>
+                <Size>0x60000</Size>
               </OCR_RVCT4>
               <OCR_RVCT5>
                 <Type>1</Type>
@@ -336,7 +336,7 @@
             <v6Rtti>0</v6Rtti>
             <VariousControls>
               <MiscControls></MiscControls>
-              <Define>USE_HAL_DRIVER,STM32F103xE</Define>
+              <Define>USE_HAL_DRIVER,STM32F103xE,ONECHIP_MINI_PLUS</Define>
               <Undefine></Undefine>
               <IncludePath>../Core/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include;../BoardInterface;../DriverInterface;../tshell</IncludePath>
             </VariousControls>

Some files were not shown because too many files changed in this diff