2018-02-07 04:42 AM
I am trying to develop sort of second stage bootloader that will be executed from the CCM RAM.
First stage bootloader as USB host reads image from external USB flash and write it on the CCM. When all data are in the CCM, interrupts are disabled; Stack pointer is set accordingly, VTOR set to 0x10000000. But then jump to the address on CCM causes an exception.Blx r3
Where r3 is 0x10006f5d causes hard fault.lr(r14) = 0xffffffe9pc(r15) = 0xfffffffeaspr = 0x61000003Same procedure that will write application (properly configured) in flash after the first 64K and then jump to it works fine.
Does anyone know:
1. That F429 has CCM RAM that allows instructions be executed from there?2. Are there any specific configurations that need to be set in order to allow execution from CCM?3. Anything else I missed to notice.Thanks,Srdjan
2018-02-07 05:00 AM
There's no way to execute code from CCM on 'F429.
JW
2018-02-07 05:00 AM
Check RM0090, page 62. (
http://www.st.com/resource/en/reference_manual/dm00031020.pdf
)If the SRAM section has no connection to the I-Bus,you can't execute code from there.
That F429 has CCM RAM that allows instructions be executed from there?
No.
I-Bus attached RAM yes, but not CCM. That's actually the meaning of the euphemism CCM ...
2018-02-07 05:33 AM
CCM on the F4 is not set up for code execution, there might be a trick with the MMU, but I'd recommend using high SRAM address.
2018-02-07 06:11 AM
Thanks, that was quick and clear.