diff --git a/firmware/hexray/RSM/CMakeLists.txt b/firmware/hexray/RSM/CMakeLists.txt index 5e3eec6d41..9bb72ad0ec 100644 --- a/firmware/hexray/RSM/CMakeLists.txt +++ b/firmware/hexray/RSM/CMakeLists.txt @@ -105,6 +105,7 @@ if ("${TARGET}" STREQUAL "binary") "stm32h5xx_hal_pcd_ex.c" "stm32h5xx_ll_usb.c" "stm32h5xx_hal_iwdg.c" + "stm32h5xx_hal_icache.c" ) stm32h562xx_cube_library( "hexray_RSM_stm32" diff --git a/firmware/hexray/RSM/src/cubemx/Inc/stm32h5xx_hal_conf.h b/firmware/hexray/RSM/src/cubemx/Inc/stm32h5xx_hal_conf.h index d292327c97..f064313557 100644 --- a/firmware/hexray/RSM/src/cubemx/Inc/stm32h5xx_hal_conf.h +++ b/firmware/hexray/RSM/src/cubemx/Inc/stm32h5xx_hal_conf.h @@ -88,7 +88,7 @@ extern "C" /*#define HAL_USART_MODULE_ENABLED */ /*#define HAL_WWDG_MODULE_ENABLED */ /*#define HAL_PSSI_MODULE_ENABLED */ -/*#define HAL_ICACHE_MODULE_ENABLED */ +#define HAL_ICACHE_MODULE_ENABLED #define HAL_PCD_MODULE_ENABLED #define HAL_GPIO_MODULE_ENABLED #define HAL_EXTI_MODULE_ENABLED diff --git a/firmware/hexray/RSM/src/cubemx/RSM.ioc b/firmware/hexray/RSM/src/cubemx/RSM.ioc index 13b1bb6d1d..191fe25ea8 100644 --- a/firmware/hexray/RSM/src/cubemx/RSM.ioc +++ b/firmware/hexray/RSM/src/cubemx/RSM.ioc @@ -73,23 +73,24 @@ Mcu.ContextProject=TrustZoneDisabled Mcu.Family=STM32H5 Mcu.IP0=ADC1 Mcu.IP1=BOOTPATH -Mcu.IP10=PWR -Mcu.IP11=RCC -Mcu.IP12=SPI3 -Mcu.IP13=SYS -Mcu.IP14=TIM1 -Mcu.IP15=TIM3 -Mcu.IP16=TIM7 -Mcu.IP17=USB +Mcu.IP10=NVIC +Mcu.IP11=PWR +Mcu.IP12=RCC +Mcu.IP13=SPI3 +Mcu.IP14=SYS +Mcu.IP15=TIM1 +Mcu.IP16=TIM3 +Mcu.IP17=TIM7 +Mcu.IP18=USB Mcu.IP2=CORTEX_M33_NS Mcu.IP3=DEBUG Mcu.IP4=FDCAN1 Mcu.IP5=GPDMA1 Mcu.IP6=I2C2 -Mcu.IP7=IWDG -Mcu.IP8=MEMORYMAP -Mcu.IP9=NVIC -Mcu.IPNb=18 +Mcu.IP7=ICACHE +Mcu.IP8=IWDG +Mcu.IP9=MEMORYMAP +Mcu.IPNb=19 Mcu.Name=STM32H562RITx Mcu.Package=LQFP64 Mcu.Pin0=PH0-OSC_IN(PH0) @@ -120,23 +121,24 @@ Mcu.Pin30=PB7 Mcu.Pin31=PB8 Mcu.Pin32=VP_CORTEX_M33_NS_VS_Hclk Mcu.Pin33=VP_GPDMA1_VS_GPDMACH0 -Mcu.Pin34=VP_IWDG_VS_IWDG -Mcu.Pin35=VP_PWR_VS_SECSignals -Mcu.Pin36=VP_PWR_VS_LPOM -Mcu.Pin37=VP_SYS_VS_tim6 -Mcu.Pin38=VP_TIM1_VS_ClockSourceINT -Mcu.Pin39=VP_TIM1_VS_indirect_ch1 +Mcu.Pin34=VP_ICACHE_VS_ICACHE +Mcu.Pin35=VP_IWDG_VS_IWDG +Mcu.Pin36=VP_PWR_VS_SECSignals +Mcu.Pin37=VP_PWR_VS_LPOM +Mcu.Pin38=VP_SYS_VS_tim6 +Mcu.Pin39=VP_TIM1_VS_ClockSourceINT Mcu.Pin4=PA2 -Mcu.Pin40=VP_TIM3_VS_ClockSourceINT -Mcu.Pin41=VP_TIM7_VS_ClockSourceINT -Mcu.Pin42=VP_BOOTPATH_VS_BOOTPATH -Mcu.Pin43=VP_MEMORYMAP_VS_MEMORYMAP +Mcu.Pin40=VP_TIM1_VS_indirect_ch1 +Mcu.Pin41=VP_TIM3_VS_ClockSourceINT +Mcu.Pin42=VP_TIM7_VS_ClockSourceINT +Mcu.Pin43=VP_BOOTPATH_VS_BOOTPATH +Mcu.Pin44=VP_MEMORYMAP_VS_MEMORYMAP Mcu.Pin5=PA3 Mcu.Pin6=PA4 Mcu.Pin7=PA5 Mcu.Pin8=PA6 Mcu.Pin9=PA7 -Mcu.PinsNb=44 +Mcu.PinsNb=45 Mcu.ThirdPartyNb=0 Mcu.UserConstants=TIM1_FREQUENCY,1000;TIM3_PRESCALER,250;TIM3_ARR,(TIMx_FREQUENCY / TIM3_PRESCALER / TIM3_FREQUENCY);TIM3_FREQUENCY,10000;TIM1_ARR,(TIMx_FREQUENCY / TIM1_PRESCALER / TIM1_FREQUENCY);LSI_FREQUENCY,32000;TIM1_PRESCALER,250;TIMx_FREQUENCY,250000000;IWDG_RESET_FREQUENCY,5;IWDG_PRESCALER,4 Mcu.UserName=STM32H562RITx @@ -321,7 +323,7 @@ ProjectManager.ToolChainLocation= ProjectManager.UAScriptAfterPath= ProjectManager.UAScriptBeforePath= ProjectManager.UnderRoot=false -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_GPDMA1_Init-GPDMA1-false-HAL-true,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_FDCAN1_Init-FDCAN1-false-HAL-true,6-MX_I2C2_Init-I2C2-false-HAL-true,7-MX_SPI3_Init-SPI3-false-HAL-true,8-MX_USB_PCD_Init-USB-false-HAL-true,9-MX_TIM1_Init-TIM1-false-HAL-true,10-MX_TIM3_Init-TIM3-false-HAL-true,11-MX_IWDG_Init-IWDG-false-HAL-true,0-MX_CORTEX_M33_NS_Init-CORTEX_M33_NS-false-HAL-true,0-MX_PWR_Init-PWR-false-HAL-true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_GPDMA1_Init-GPDMA1-false-HAL-true,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_FDCAN1_Init-FDCAN1-false-HAL-true,6-MX_I2C2_Init-I2C2-false-HAL-true,7-MX_SPI3_Init-SPI3-false-HAL-true,8-MX_USB_PCD_Init-USB-false-HAL-true,9-MX_TIM1_Init-TIM1-false-HAL-true,10-MX_TIM3_Init-TIM3-false-HAL-true,11-MX_IWDG_Init-IWDG-false-HAL-true,12-MX_TIM7_Init-TIM7-false-HAL-true,0-MX_CORTEX_M33_NS_Init-CORTEX_M33_NS-false-HAL-true,0-MX_PWR_Init-PWR-false-HAL-true RCC.ADCFreq_Value=96000000 RCC.AHBFreq_Value=96000000 RCC.APB1Freq_Value=96000000 @@ -451,6 +453,8 @@ VP_CORTEX_M33_NS_VS_Hclk.Mode=Hclk_Mode VP_CORTEX_M33_NS_VS_Hclk.Signal=CORTEX_M33_NS_VS_Hclk VP_GPDMA1_VS_GPDMACH0.Mode=SIMPLEREQUEST_GPDMACH0 VP_GPDMA1_VS_GPDMACH0.Signal=GPDMA1_VS_GPDMACH0 +VP_ICACHE_VS_ICACHE.Mode=DefaultMode +VP_ICACHE_VS_ICACHE.Signal=ICACHE_VS_ICACHE VP_IWDG_VS_IWDG.Mode=IWDG_Activate VP_IWDG_VS_IWDG.Signal=IWDG_VS_IWDG VP_MEMORYMAP_VS_MEMORYMAP.Mode=CurAppReg diff --git a/firmware/hexray/RSM/src/cubemx/RSM.ioc.md5 b/firmware/hexray/RSM/src/cubemx/RSM.ioc.md5 index e9ff97acc9..a40083d021 100644 --- a/firmware/hexray/RSM/src/cubemx/RSM.ioc.md5 +++ b/firmware/hexray/RSM/src/cubemx/RSM.ioc.md5 @@ -1 +1 @@ -e59443c64f7b2420719cca874c88c17a \ No newline at end of file +d7f9cecba97c088fca3381d5238fa598 \ No newline at end of file diff --git a/firmware/hexray/RSM/src/cubemx/Src/main.c b/firmware/hexray/RSM/src/cubemx/Src/main.c index 750c428135..fb4fe229bc 100644 --- a/firmware/hexray/RSM/src/cubemx/Src/main.c +++ b/firmware/hexray/RSM/src/cubemx/Src/main.c @@ -79,6 +79,7 @@ static void MX_TIM1_Init(void); static void MX_TIM3_Init(void); static void MX_IWDG_Init(void); static void MX_TIM7_Init(void); +static void MX_ICACHE_Init(void); /* USER CODE BEGIN PFP */ /* USER CODE END PFP */ @@ -126,6 +127,7 @@ int main(void) MX_TIM3_Init(); MX_IWDG_Init(); MX_TIM7_Init(); + MX_ICACHE_Init(); /* USER CODE BEGIN 2 */ HAL_GPIO_WritePin(BRAKE_LIGHT_EN_3V3_GPIO_Port, BRAKE_LIGHT_EN_3V3_Pin, GPIO_PIN_RESET); ; @@ -403,6 +405,32 @@ static void MX_I2C2_Init(void) /* USER CODE END I2C2_Init 2 */ } +/** + * @brief ICACHE Initialization Function + * @param None + * @retval None + */ +static void MX_ICACHE_Init(void) +{ + /* USER CODE BEGIN ICACHE_Init 0 */ + + /* USER CODE END ICACHE_Init 0 */ + + /* USER CODE BEGIN ICACHE_Init 1 */ + + /* USER CODE END ICACHE_Init 1 */ + + /** Enable instruction cache (default 2-ways set associative cache) + */ + if (HAL_ICACHE_Enable() != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN ICACHE_Init 2 */ + + /* USER CODE END ICACHE_Init 2 */ +} + /** * @brief IWDG Initialization Function * @param None diff --git a/firmware/hexray/VC/src/cubemx/Src/main.c b/firmware/hexray/VC/src/cubemx/Src/main.c index 66a2bef35c..8c7e7cb4b2 100644 --- a/firmware/hexray/VC/src/cubemx/Src/main.c +++ b/firmware/hexray/VC/src/cubemx/Src/main.c @@ -103,6 +103,11 @@ int main(void) tasks_preInit(); /* USER CODE END 1 */ + /* Enable the CPU Cache */ + + /* Enable I-Cache---------------------------------------------------------*/ + SCB_EnableICache(); + /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ diff --git a/firmware/hexray/VC/src/cubemx/VC.ioc b/firmware/hexray/VC/src/cubemx/VC.ioc index 1c1e7383f2..9074384394 100644 --- a/firmware/hexray/VC/src/cubemx/VC.ioc +++ b/firmware/hexray/VC/src/cubemx/VC.ioc @@ -70,6 +70,11 @@ ADC2.SamplingTime-5\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 CAD.formats= CAD.pinconfig= CAD.provider= +CORTEX_M7.CPU_DCache=Disabled +CORTEX_M7.CPU_ICache=Enabled +CORTEX_M7.IPParameters=CPU_ICache,CPU_DCache,default_mode_Activation,MPU_Control +CORTEX_M7.MPU_Control=__NULL +CORTEX_M7.default_mode_Activation=1 FDCAN1.AutoRetransmission=ENABLE FDCAN1.CalculateBaudRateNominal=1000000 FDCAN1.CalculateTimeBitNominal=1000 diff --git a/firmware/hexray/VC/src/cubemx/VC.ioc.md5 b/firmware/hexray/VC/src/cubemx/VC.ioc.md5 index 1b7930e400..631cf9516d 100644 --- a/firmware/hexray/VC/src/cubemx/VC.ioc.md5 +++ b/firmware/hexray/VC/src/cubemx/VC.ioc.md5 @@ -1 +1 @@ -e8b7471a71be545faa2268e4776b5693 \ No newline at end of file +c8dbe170d5fecca21265218c991c6c75 \ No newline at end of file