2021-06-05 01:03 PM
Based on Reference Manual of the STM32H742IG (RM0433 Rev 7; Table 16.), Flash memory for 1MB devices is divided in two banks with address ranges 0x800000-0x807FFFF and 0x810000-0x817FFFF. There is 512kB gap between them.
As a test i have created a project in the CubeIDE (1.6.1 with H7 package 1.9.0) for STM32H742IG with big byte array. Generated binary file is without a gap. For example, array addresses fall to this gap.
From listing:
t = img_map[642000];
80002de: 4a05 ldr r2, [pc, #20] ; (80002f4 <main+0x1c>)
80002e0: 4b05 ldr r3, [pc, #20] ; (80002f8 <main+0x20>)
80002e2: 4413 add r3, r2
80002e4: 781b ldrb r3, [r3, #0]
80002f4: 08001838 .word 0x08001838
80002f8: 0009cbd0 .word 0x0009cbd0
img_map[642000] is at address 0x809E408 (in gap between banks).
So, is there a gap between banks, and code should handle this? Or there is no gap, and RM is wrong? Or am i miss something?
Regards,
Slavo T.
2023-02-16 02:19 AM
Interesting cross-read about dual bank and single bank configurations: https://community.st.com/s/question/0D53W00000AYzlKSAT/is-dual-bank-flash-configuration-available-for-stm32h743xxxx