4949#include STM32_HAL_H
5050
5151//only enable the Reset Handler overwrite for the H7 for now
52- #if (CPY_STM32H7 )
52+ #if (CPY_STM32H7 ) || ( CPY_STM32F7 )
5353
5454// Device memories must be accessed in order.
5555#define DEVICE 2
@@ -86,7 +86,7 @@ extern uint32_t _ld_itcm_flash_copy;
8686extern void main (void );
8787extern void SystemInit (void );
8888
89- // This replaces the Reset_Handler in startup_*.S and SystemInit in system_*.c.
89+ // This replaces the Reset_Handler in gcc/ startup_*.s, calls SystemInit from system_*.c
9090__attribute__((used , naked )) void Reset_Handler (void ) {
9191 __disable_irq ();
9292 __set_MSP ((uint32_t ) & _ld_stack_top );
@@ -105,20 +105,20 @@ __attribute__((used, naked)) void Reset_Handler(void) {
105105
106106 // Mark all the flash the same until instructed otherwise.
107107 MPU -> RBAR = ARM_MPU_RBAR (11 , 0x08000000U );
108- MPU -> RASR = ARM_MPU_RASR (EXECUTION , ARM_MPU_AP_FULL , NORMAL , NOT_SHAREABLE , CACHEABLE , BUFFERABLE , NO_SUBREGIONS , ARM_MPU_REGION_SIZE_2MB );
108+ MPU -> RASR = ARM_MPU_RASR (EXECUTION , ARM_MPU_AP_FULL , NORMAL , NOT_SHAREABLE , CACHEABLE , BUFFERABLE , NO_SUBREGIONS , CPY_FLASH_REGION_SIZE );
109109
110110 // This the ITCM. Set it to read-only because we've loaded everything already and it's easy to
111111 // accidentally write the wrong value to 0x00000000 (aka NULL).
112112 MPU -> RBAR = ARM_MPU_RBAR (12 , 0x00000000U );
113- MPU -> RASR = ARM_MPU_RASR (EXECUTION , ARM_MPU_AP_RO , NORMAL , NOT_SHAREABLE , CACHEABLE , BUFFERABLE , NO_SUBREGIONS , ARM_MPU_REGION_SIZE_64KB );
113+ MPU -> RASR = ARM_MPU_RASR (EXECUTION , ARM_MPU_AP_RO , NORMAL , NOT_SHAREABLE , CACHEABLE , BUFFERABLE , NO_SUBREGIONS , CPY_ITCM_REGION_SIZE );
114114
115115 // This the DTCM.
116116 MPU -> RBAR = ARM_MPU_RBAR (14 , 0x20000000U );
117- MPU -> RASR = ARM_MPU_RASR (EXECUTION , ARM_MPU_AP_FULL , NORMAL , NOT_SHAREABLE , CACHEABLE , BUFFERABLE , NO_SUBREGIONS , ARM_MPU_REGION_SIZE_128KB );
117+ MPU -> RASR = ARM_MPU_RASR (EXECUTION , ARM_MPU_AP_FULL , NORMAL , NOT_SHAREABLE , CACHEABLE , BUFFERABLE , NO_SUBREGIONS , CPY_DTCM_REGION_SIZE );
118118
119119 // This is AXI SRAM (D1).
120- MPU -> RBAR = ARM_MPU_RBAR (15 , 0x24000000U );
121- MPU -> RASR = ARM_MPU_RASR (EXECUTION , ARM_MPU_AP_FULL , NORMAL , NOT_SHAREABLE , CACHEABLE , BUFFERABLE , NO_SUBREGIONS , ARM_MPU_REGION_SIZE_512KB );
120+ MPU -> RBAR = ARM_MPU_RBAR (15 , CPY_SRAM_START_ADDR );
121+ MPU -> RASR = ARM_MPU_RASR (EXECUTION , ARM_MPU_AP_FULL , NORMAL , NOT_SHAREABLE , CACHEABLE , BUFFERABLE , CPY_SRAM_SUBMASK , CPY_SRAM_REGION_SIZE );
122122
123123 /* Enable MPU */
124124 ARM_MPU_Enable (MPU_CTRL_PRIVDEFENA_Msk );
0 commit comments