I tried simple code using Keil MDK5 for STM32F769 CPU. I've used Keil simulator and noticed that vector table is settled at 0 (ITCM RAM) with BOOT_ADDRx =0, directing CPU to start from 0. The question is how vector table was filled in RAM. If JTAG did it, what will happen when I don't have JTAG, ie in production ? If some code from flash did it, how CPU started from flash at the first place, if at least stack addr should be at 0 ?
What I noticed viewing memory contents at 0x0800 0000 and at 0, that they are the same in vector table region. My code consists of only three lines and I'm not the one who arranged the table at 0. Then how it emerged there (at 0) ? Also, what confuses me is stack pointer. AFAIK CPU expect it to be at address 0, which is (being RAM) undefined at power up.
I do not know this specific device, but often, the flash (or parts of it) are mapped to zero. So the CPU will fetch SP and PC from flash. But I guess an ST forum is the better place to ask those ST specific question.