Skip to main content
SToma
Associate III
June 5, 2021
Question

Flash banks address ranges for STM32H742(3) devices with 1MB and CubeIDE

  • June 5, 2021
  • 5 replies
  • 4576 views

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.

This topic has been closed for replies.

5 replies

TDK
Super User
June 5, 2021

If you have a chip onhand, can you use STM32CubeProgrammer to read memory from those locations and verify the RM is correct? Seems way odd to have FLASH memory with a gap in the middle. I would guess the RM is wrong, but can't verify it and could be wrong.

"If you feel a post has answered your question, please click ""Accept as Solution""."
TDK
Super User
June 5, 2021

FWIW, this table is new in the rev7 manual.

Also, CubeMX generated code thinks the 1MB is contiguous:

> FLASH (rx)   : ORIGIN = 0x08000000, LENGTH = 1024K

"If you feel a post has answered your question, please click ""Accept as Solution""."
Pavel A.
Super User
June 5, 2021

Maybe link script generated by Cube for H742 is wrong (copied from H743 which has no gap).

Maybe H742 actually has 1 MB in one of two banks, like some H750's have more than 128K flash, but the extra flash is not guaranteed to work.

Do not try to access it in production code.

--pa

TDK
Super User
June 5, 2021
Maybe. I would expect 1MB devices to only have 1MB of flash but could be wrong. Certainly if 2MB is actually present and usable in CubeProgrammer it doesn't help clarify the situation at all.
"If you feel a post has answered your question, please click ""Accept as Solution""."
SToma
STomaAuthor
Associate III
June 5, 2021

So, finally i wired up device. And it doesn't help at all, because my device is 2MB. I am able write different values (and then read them) to 0x8000000, 0x8080000, 0x8100000, 0x8180000 addresses.

Seems, i must ask support of STM.

Khouloud ZEMMELI
ST Employee
June 29, 2021

Hi All,

Thanks for raising the point,

It will be internally checked, I'll keep you posted.

Khouloud

mwb
Associate III
February 15, 2023

Dear ST employees,

can you give us an update on this?

Kind regards

mwb
Associate III
February 16, 2023