From c8240d55741f0ed86099a0a8c616f4fc68372134 Mon Sep 17 00:00:00 2001
From: yincheng.zhong <634916154@qq.com>
Date: 星期四, 25 十二月 2025 10:17:55 +0800
Subject: [PATCH] OTA功能测试完成,4G超时时间异常,出现4G中断情况,等杜工修改。

---
 STM32H743/HAL/MCUFlash.c |   40 +++++++++++++++++++++++++++-------------
 1 files changed, 27 insertions(+), 13 deletions(-)

diff --git a/STM32H743/HAL/MCUFlash.c b/STM32H743/HAL/MCUFlash.c
index 834f679..cf30959 100644
--- a/STM32H743/HAL/MCUFlash.c
+++ b/STM32H743/HAL/MCUFlash.c
@@ -10,6 +10,7 @@
  *******************************************************************************/
 #include "MCUFlash.h"
 #include "stm32h7xx_hal.h"
+#include "HIDO_Debug.h"
 
 /*******************************************************************************
  *                                  Macro                                      *
@@ -124,25 +125,23 @@
     }
     else
     {
-#if 0
-        /* Bank 2 锟斤拷锟斤拷 8-15 */
+        /* Bank 2 鎵囧尯 0-7 (瀹為檯缂栧彿8-15锛屼絾HAL搴撲娇鐢�0-7) */
         if (address <= FLASH_SECTOR8_END)
-            return FLASH_SECTOR_8;
+            return FLASH_SECTOR_0;
         else if (address <= FLASH_SECTOR9_END)
-            return FLASH_SECTOR_9;
+            return FLASH_SECTOR_1;
         else if (address <= FLASH_SECTOR10_END)
-            return FLASH_SECTOR_10;
+            return FLASH_SECTOR_2;
         else if (address <= FLASH_SECTOR11_END)
-            return FLASH_SECTOR_11;
+            return FLASH_SECTOR_3;
         else if (address <= FLASH_SECTOR12_END)
-            return FLASH_SECTOR_12;
+            return FLASH_SECTOR_4;
         else if (address <= FLASH_SECTOR13_END)
-            return FLASH_SECTOR_13;
+            return FLASH_SECTOR_5;
         else if (address <= FLASH_SECTOR14_END)
-            return FLASH_SECTOR_14;
+            return FLASH_SECTOR_6;
         else if (address <= FLASH_SECTOR15_END)
-            return FLASH_SECTOR_15;
-#endif
+            return FLASH_SECTOR_7;
     }
 
     return 0xFFFFFFFF;
@@ -292,7 +291,10 @@
     HIDO_UINT32 remaining = _u32WriteLen;
     HIDO_UINT32 addr = _u32WriteAddr;
     HIDO_UINT8 const *src = _pu8WriteData;
-    HIDO_UINT8 wordBuf[MCU_FLASH_WORD_BYTES];
+    
+    /* 浣跨敤32浣嶆暟缁勭‘淇�4瀛楄妭瀵归綈锛岄伩鍏岺AL_FLASH_Program涓嚭鐜伴潪瀵归綈璁块棶瀵艰嚧鐨凥ardFault */
+    HIDO_UINT32 wordBuf32[MCU_FLASH_WORD_BYTES / 4];
+    HIDO_UINT8 *wordBuf = (HIDO_UINT8 *)wordBuf32;
 
     while (remaining > 0)
     {
@@ -315,8 +317,20 @@
         /* 宸叉摝闄ゆ牎楠岋細褰撳墠 Flash 涓 32 瀛楄妭蹇呴』鍏ㄤ负 0xFF */
         for (HIDO_UINT32 i = 0; i < MCU_FLASH_WORD_BYTES; i++)
         {
-            if (*(volatile HIDO_UINT8 *)(addr + i) != 0xFF)
+            HIDO_UINT8 byteVal = *(volatile HIDO_UINT8 *)(addr + i);
+            if (byteVal != 0xFF)
             {
+                /* 鎵撳嵃璇︾粏鐨勬摝闄ゆ鏌ュけ璐ヤ俊鎭� */
+                HIDO_Debug("[MCUFlash] Write failed: Address 0x%08X+%d not erased (value=0x%02X, expected=0xFF)\r\n",
+                           addr, i, byteVal);
+                /* 鎵撳嵃鍛ㄥ洿8瀛楄妭鐨勫唴瀹� */
+                HIDO_UINT32 dumpStart = (i >= 4) ? (i - 4) : 0;
+                HIDO_Debug("[MCUFlash] Context[%d-%d]: ", dumpStart, dumpStart + 7);
+                for (HIDO_UINT32 j = dumpStart; j < dumpStart + 8 && j < MCU_FLASH_WORD_BYTES; j++)
+                {
+                    HIDO_Debug("%02X ", *(volatile HIDO_UINT8 *)(addr + j));
+                }
+                HIDO_Debug("\r\n");
                 return HIDO_ERR; /* 鏈摝闄ゆ垨鑴忔暟鎹紝闇�鍏堣皟鐢� MCUFlash_Erase */
             }
         }

--
Gitblit v1.10.0