2019-02-20 10:16 AM
There are multiple references in the documentation that allude to being able to do two flash operations in parallel on the STM32H743 as long as you are doing these operations on different banks.
For example, the reference manual RM0433 Section 3.2 states:
• Dual-bank organization supporting:
– simultaneous operations: two read/program/erase operations executed in parallel on both banks (only available on STM32H743/753)
And AN4891 Section 1.5.1 states:
1.5.1 Embedded Flash memory
The STM32H7x3 embeds two independent Flash memory banks (Flash A and Flash B) of 1 MByte size each.
The Flash memory is accessible for read or/and write accesses through the AXI bus. Each bank has its own AMIB connection to the AXI bus matrix which allows simultaneous operations. Two read/program/erase operations can be executed in parallel on the two banks which also allows to avoid contention when two masters have access to the Flash at the same time (two masters access different banks).
When I actually try to use both banks in parallel however, it does not seem to work. Is there something you have to do do enable this? I have looked through the option bytes and have not found any that seem to be relevant.
I am using the HAL Program/Erase function calls: is this part of the problem? They seem to be set up to handle dual banks, but I can't think of another reason why this would not work.
Thank you for your help.
2019-02-20 10:20 AM
You must run from RAM, with every constant, interrupt etc in RAM. If some process tries ti read from FLASH, access and that process stalls. I guess that the HAL procedures are not elaborate enough, but I did not check.
2019-02-20 10:26 AM
So is the documentation just wrong/misleading? You can't actually do parallel flash operations on this board?
2019-02-20 11:10 AM
It is not a matter of the board, it is a metter of the firmware.