Explorar o código

解决TBC_BUFFER缓存数组内存未对齐时,导致VF和IF模式单片机死机的问题。

dd hai 5 meses
pai
achega
fee1bcf2bf

+ 1 - 1
.launches/empty_LP_MSPM0G3507_APP_Normal_20250107.launch

@@ -4,7 +4,7 @@
         <mapEntry key="org.eclipse.cdt.debug.ui.memory.memorybrowser.MemoryBrowser@#$Texas Instruments XDS110 USB Debug Probe/CORTEX_M0P@#$0" value="32-Bit Hex - TI Style"/>
     </mapAttribute>
     <mapAttribute key="ccs.memoryview.pageexpr">
-        <mapEntry key="org.eclipse.cdt.debug.ui.memory.memorybrowser.MemoryBrowser@#$Texas Instruments XDS110 USB Debug Probe/CORTEX_M0P" value="@@0x000000"/>
+        <mapEntry key="org.eclipse.cdt.debug.ui.memory.memorybrowser.MemoryBrowser@#$Texas Instruments XDS110 USB Debug Probe/CORTEX_M0P" value="@@0x20207f68"/>
     </mapAttribute>
     <stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_DEBUGGER_PROPERTIES.MSPM0G3507.ccxml.Texas Instruments XDS110 USB Debug Probe/CORTEX_M0P" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot; ?&gt;&#10;&lt;PropertyValues&gt;&#10;&#10;  &lt;property id=&quot;ConnectOnStartup&quot;&gt;&#10;    &lt;curValue&gt;1&lt;/curValue&gt;&#10;  &lt;/property&gt;&#10;&#10;  &lt;property id=&quot;EnableInstalledBreakpoint&quot;&gt;&#10;    &lt;curValue&gt;1&lt;/curValue&gt;&#10;  &lt;/property&gt;&#10;&#10;  &lt;property id=&quot;IgnoreSoftLaunchFailures&quot;&gt;&#10;    &lt;curValue&gt;0&lt;/curValue&gt;&#10;  &lt;/property&gt;&#10;&#10;  &lt;property id=&quot;FlashEraseSelection&quot;&gt;&#10;    &lt;curValue&gt;Erase MAIN memory sectors by range (specify below)&lt;/curValue&gt;&#10;  &lt;/property&gt;&#10;&#10;  &lt;property id=&quot;FlashEraseSectorsStartAddress&quot;&gt;&#10;    &lt;curValue&gt;00007000&lt;/curValue&gt;&#10;  &lt;/property&gt;&#10;&#10;  &lt;property id=&quot;FlashEraseSectorsEndAddress&quot;&gt;&#10;    &lt;curValue&gt;0001FFFF&lt;/curValue&gt;&#10;  &lt;/property&gt;&#10;&#10;&lt;/PropertyValues&gt;&#10;"/>
     <setAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_HIDE_CONFIG_ELEMENT_TYPES">

+ 3 - 7
1.FrameLayer/Source/TimeTask_Event.c

@@ -195,18 +195,18 @@ void Event_10ms(void)
     {
         if(cp_stFlg.RotateDirectionSelect == ForwardRotate)
         {
-            uart_slSpdRefRpm = ((SLONG)MC_MotorSPD_rpm_Percent * cp_stMotorPara.swRSpeedRpm) / 50;
+            uart_slSpdRefRpm = ((SLONG)MC_MotorSPD_rpm_Percent * cp_stMotorPara.swRSpeedRpm) / 100;
 //            uart_slSpdRefRpm = 5500;
 //            uart_slSpdRefRpm = Signal_detect();
         }
         else if(cp_stFlg.RotateDirectionSelect == BackwardRotate)
         {
-            uart_slSpdRefRpm =  -((SLONG)MC_MotorSPD_rpm_Percent * cp_stMotorPara.swRSpeedRpm) / 50;
+            uart_slSpdRefRpm =  -((SLONG)MC_MotorSPD_rpm_Percent * cp_stMotorPara.swRSpeedRpm) / 100;
 //            uart_slSpdRefRpm = -5500;
 //            uart_slSpdRefRpm = -Signal_detect();
         }
        //uart_slSpdRefRpm = - ((SLONG)bikethrottle_stBikeThrottleOut.uwThrottlePercent* 5750)/1000;  
-        if(abs(uart_slSpdRefRpm) < 300)
+        if(abs(uart_slSpdRefRpm) < 100)
         {
           uart_slSpdRefRpm = 0;
         }
@@ -447,7 +447,6 @@ void event_voAssCmd(void)
             /* 力矩中轴助力模式判断 */
             if(cp_stBikeRunInfoPara.uwBikeGear > 0)
             {   
-#if 0 //正常模式
                 if((cp_stBikeRunInfoPara.uwBikeGear == 0x22)||(bikethrottle_stBikeThrottleOut.uwThrottlePercent > 250))
                 {
                     /* 力矩中轴速度模式 */
@@ -458,9 +457,6 @@ void event_voAssCmd(void)
                     /* 力矩中轴力矩助力模式 */
                     event_enMode = TorqAss;
                 }
-#else //仪表挡位控制转速
-                event_enMode = SpdAss;
-#endif
             }
             else 
             {

+ 1 - 0
2.MotorDrive/Include/alignstartup.h

@@ -98,6 +98,7 @@ _ALIGN_EXT ALIGN_OUT align_stOut = ALIGN_OUT_DEFAULT;
 _ALIGN_EXT ALIGN_COF align_stCoef;
 _ALIGN_EXT ALIGN_OUT align_stOut;
 #endif
+
 /************************************************************************
  RAM ALLOCATION:
 *************************************************************************/

+ 1 - 1
2.MotorDrive/Source/spdctrmode.c

@@ -171,7 +171,7 @@ void scm_voSpdCtrMdCoef(void)
 {
     ULONG ulLpfTm; // unit: us
     UWORD uwLqPu = 0;
-    ULONG ulAccel100rpmpsPu = USER_MOTOR_1000RPMPS2PU_Q29;
+    ULONG ulAccel100rpmpsPu = USER_MOTOR_240RPMPS2PU_Q29;
 
     if (abs(scm_swIqRefPu) < mn_swIqTurn1Pu)
     {

+ 2 - 2
3.BasicFunction/Source/AssistCurve.c

@@ -12,7 +12,7 @@
 #include "bikeinformation.h"
 #include "Cadence.h"
 #include "FSM_1st.h"
-#include "Syspar.h"
+#include "syspar.h"
 #include "flash_master.h"
 #include "string.h"
 #include "typedefine.h"
@@ -676,7 +676,7 @@ void AssitCuvApplPerVolt(void)
             if((ass_CalIn.uwGearSt > 0) && (BikeBrake_blGetstate() == FALSE) &&(BMS_RunInfo.Status.Status_Bit.Charge==FALSE))
             {
 //                if((ass_CalIn.blStopAssistEnble == FALSE) || (ass_CalIn.StartAssistEnble == TRUE))//5启动根据脉冲数
-                if((ass_CalIn.StartAssistEnble == TRUE))//5启动根据脉冲数
+                if(ass_CalIn.StartAssistEnble == TRUE)//5启动根据脉冲数
                 {
                     ass_CalCoef.swTorqFilterGain = 0;
                     ass_CalCoef.swSmoothGain = 0;

+ 2 - 29
3.BasicFunction/Source/CadAssist.c

@@ -12,7 +12,7 @@
 #include "bikeinformation.h"
 #include "Cadence.h"
 #include "FSM_1st.h"
-#include "Syspar.h"
+#include "syspar.h"
 #include "flash_master.h"
 #include "string.h"
 #include "typedefine.h"
@@ -874,7 +874,6 @@ void ass_voAssistCmdDeal(void)
     /** Record Last assist mode */
     ass_stCadAssParaPro.uwAssitModeLast = ass_stCadAssParaPro.uwAssitMode;
     
-#if 0
     /** Cart Comand */
     if(ass_stCadAssParaIn.uwGearSt == 0x22)
     {
@@ -919,7 +918,7 @@ void ass_voAssistCmdDeal(void)
                    {
                         ass_MaxSpeed.MaxBikeSpeed = ass_MaxSpeed.uwGearFour;
                    }
-                    else if((ass_stCadAssParaIn.uwGearSt == 5)  )
+                    else if(ass_stCadAssParaIn.uwGearSt == 5)
                     {
                         ass_MaxSpeed.MaxBikeSpeed =  ass_stCadAssCoef.uwThrottleMaxBikeSpeed ;
                     }
@@ -1086,33 +1085,7 @@ void ass_voAssistCmdDeal(void)
         ass_stCadAssParaPro.uwAssitMode = 0;
         tmp_slAssistSpdCmd = 0;                 /**< Q15 */
     }
-#else //仪表挡位控制转速
-    if((ass_stCadAssParaIn.uwGearSt >= 0x01) && (ass_stCadAssParaIn.uwGearSt <= 0x05) )
-    {
-        ass_stCadAssParaPro.uwAssitMode = 6;
-        if(ass_stCadAssParaIn.uwGearSt == 0x01)
-            MC_MotorSPD_rpm_Percent = 20;
-        else if(ass_stCadAssParaIn.uwGearSt == 0x02)
-            MC_MotorSPD_rpm_Percent = 40;
-        else if(ass_stCadAssParaIn.uwGearSt == 0x03)
-            MC_MotorSPD_rpm_Percent = 60;
-        else
-            MC_MotorSPD_rpm_Percent = 100;
-        tmp_slAssistSpdCmd = (SLONG)ass_stCadAssCoef.swKmhToMSpdPu*(SLONG)ass_stCadAssCoef.uwThrottleMaxBikeSpeed >> 4;
-        tmp_slAssistSpdCmd= ((SLONG)MC_MotorSPD_rpm_Percent * tmp_slAssistSpdCmd) / 100;
 
-        if(MC_MotorSPD_rpm_Percent <= 2)
-        {
-            tmp_slAssistSpdCmd = 0;
-            ass_stCadAssParaPro.uwAssitMode = 0;
-        }
-    }
-    else
-    {
-        ass_stCadAssParaPro.uwAssitMode = 0;
-        tmp_slAssistSpdCmd = 0;                 /**< Q15 */
-    }
-#endif
     /** Stop Assist when Bike Brake */
     if((BikeBrake_blGetstate() == TRUE) ||(BMS_RunInfo.Status.Status_Bit.Charge!=0))
     {

+ 1 - 1
3.BasicFunction/Source/Cadence.c

@@ -16,7 +16,7 @@
 #include "syspar.h"
 #include "typedefine.h"
 #include "mathtool.h"
-#include "cadence.h"
+#include "Cadence.h"
 #include "CodePara.h"
 #include "AssistCurve.h" 
 #include "CadAssist.h"

+ 1 - 1
3.BasicFunction/Source/bikethrottle.c

@@ -25,7 +25,7 @@
 #include "bikespeed.h"
 #include "alarm.h"
 #include "FSM_1st.h"
-#include "cadence.h"
+#include "Cadence.h"
 #include "bikebrake.h"
 #include "UserGpio_Config.h"
 /******************************

+ 7 - 6
4.BasicHardwSoftwLayer/2.BasicSoftwLayer/Include/macroequ.h

@@ -45,12 +45,13 @@ Constant Table
 /************************************************************************
  Exported Variables:
 ************************************************************************/
+
 #ifdef _MACROEQU_C_
-_MACROEQU_EXT UWORD MN_BUFFER[0x20];
-_MACROEQU_EXT UWORD TBP_BUFFER[0x20];
-_MACROEQU_EXT UWORD TBS_BUFFER[0x20];
-_MACROEQU_EXT UWORD TBC_BUFFER[0x20];
-_MACROEQU_EXT UWORD FUNCTION_BUFFER[0x20];
+_MACROEQU_EXT UWORD MN_BUFFER[0x20]        __attribute__((section(".buffer_section")));
+_MACROEQU_EXT UWORD TBP_BUFFER[0x20]       __attribute__((section(".buffer_section")));
+_MACROEQU_EXT UWORD TBS_BUFFER[0x20]       __attribute__((section(".buffer_section")));
+_MACROEQU_EXT UWORD TBC_BUFFER[0x20]       __attribute__((section(".buffer_section")));
+_MACROEQU_EXT UWORD FUNCTION_BUFFER[0x20]  __attribute__((section(".buffer_section")));
 #else
 _MACROEQU_EXT UWORD MN_BUFFER[0x20];
 _MACROEQU_EXT UWORD TBP_BUFFER[0x20];
@@ -85,4 +86,4 @@ _MACROEQU_EXT UWORD FUNCTION_BUFFER[0x20];
 *************************************************************************
  End of this File (EOF):
  Do not put anything after this part!
-************************************************************************/
+************************************************************************/

+ 3 - 2
device_linker.cmd

@@ -37,7 +37,8 @@
 MEMORY
 {
     FLASH           (RX)  : origin = 0x00007000, length = 0x00019000
-    SRAM            (RWX) : origin = 0x20202000, length = 0x00006000
+    SRAM            (RWX) : origin = 0x20202000, length = 0x00005C00
+    BUFFER          (RWX) : origin = 0x20207C00, length = 0x00000400
     BCR_CONFIG      (R)   : origin = 0x41C00000, length = 0x00000080
     BSL_CONFIG      (R)   : origin = 0x41C00100, length = 0x00000080
 }
@@ -61,7 +62,7 @@ SECTIONS
     .bss    :   > SRAM
     .sysmem :   > SRAM
     .stack  :   > SRAM (HIGH)
-
+    .buffer_section  :  > BUFFER
     .BCRConfig  : {} > BCR_CONFIG
     .BSLConfig  : {} > BSL_CONFIG
 }