2024-07-18 10:33 AM
Hi,
I am using STM32F746 controller for development. So my hex file size is too more then controller flash memory. So I am trying to use Moving internal flash data to external flash Making external flash work as internal.
So kindly explain how to achive this process and what are the critical faces are in this process.
If anybody work on this way means explain to me. I am a beginner for this project.
Kindly help to me.
Thanks.
2024-07-18 11:50 AM
Perhaps start by looking at the Execute In Place examples, and those in the BSP from accessing and bringing the memory up
You need to consider how/where you bring up the clocks and external memory interfaces.
You should probably do the bulk of that in a "loader" app in the front of Internal Flash, that brings up the CPU, clocks and PLLs, and gets the pins and QSPI memory working and mapped in the the MCU's address space. Once you've done that you can pass control to app code in Internal and/or External Flash memory.
It's important to bring everything up before use. ARM wants you to do this in SystemInit(), so the C initialization code works properly, and can touch all the memories without complication and faulting. ST's moved a lot of this to main() and HAL_Init(), but that's got a lot of it's own issues.
You must also become familiar with the job of the Linker, and the Linker Script, for placing code and data within the usable address space of the MCU. There's lot of material available documenting the .LD files and linker mechanics, and it's probably best you study that first.