2016-03-28 09:28 AM
I am confused about the boot setting in STM32F7xx series.
When the boot pin is low, it boots from flash on ITCM interface (0x0020 000) by default, as shown in the screenshot of the manual.However, in the IAR linker file, the AXIM interface is selected. The program runs ok when downloaded in the flash. So could you tell me is the CPU using ITCM or AXIM interface in this case?Edit:Hi ALL,The way to choose AXIM or ITCM flash interface in IAR is to configure the ROM address in the linker file.For AXIM, ROM starts from0x08000000,
for ITCM, ROM starts from0x00200000.
So the BOOT_ADD0 setting is not working? #stm32f7-axim-itcm-flash-interfac2016-03-28 10:21 AM
This isn't important for linker. For linker check memory map in datasheet. Becose Flash is at 0x0800000. In AXIM 0x0800000 is mapeed to 0x00000000. IN ITCM 0x0020000 is mapped to 0x00000000. ITCM interface maps flash to 0x00200000
2016-03-28 10:23 AM
The content of the FLASH would presumably appear at both addresses, and at start up load the first two vectors SP/PC, and then start execution for the address specified there. So whatever address you've specified to the linker.
2016-03-28 10:31 AM
>>So whatever address you've specified to the linker.
Not true. It depends on the loader. Programming device. I can bet that anyone can use others addresses from 0x08000000.2016-03-28 10:47 AM
I never use IAR. But read data will still be done by done by AXIM. LMA (load memory address) can be different do VMA. LMA must be 0x0800000.
VMA can be 0x0800000 or 0x00200000. If LMA - VMA data will be read by AXIM. If VMA =0x0020000 data will be read by ITCM.2016-03-28 10:54 AM
>>So whatever address you've specified to the linker.
Not true. It depends on the loader. Programming device. I can bet that anyone can use others addresses from 0x08000000. The linker fixates the addresses in the image. The vector table entries point to absolute addresses. The linker base could be 0, 0x200000, 0x8000000, where the FLASH is mapped at ZERO, and all would appear to execute ''normally''
2016-03-28 10:58 AM
Bull shit. Tested. LMA MUST BE 0x0800000. VMA is something else.
Write to Flasg can be done only by AXIM.,2016-03-28 12:14 PM
Bull shit. Tested. LMA MUST BE 0x0800000. VMA is something else. Write to Flasg can be done only by AXIM.,
You must be such a joy to be around. This would all be far more convincing if the numbers had the right numbers of zeros in them. Having the code natively built to function in the ITCM would seem to be far the most desirable out come. Yes, if your loader is incapable of understanding where a .HEX or .ELF/AXF might need some address translation, that's going to be a problem for you. Nevertheless, a .BIN is ''address-less'', having no meta-data specifying where it goes, and a flash loader with a grasp of the architecture can map things to the writeable array as appropriate. When you work with tools, you know how to recognize them.2016-03-28 12:24 PM
You have problem to understand differences LMA and VMA?
Ohh sorry im just human, a can do typo mistake. What with loaders in debugers hmm? In gcc I only change 2 words and add one line to do it correctly. Debuging works, hex genereted with start address 0x08000000. But all function,data addresses, in vetor table and reset address are 0x002XXXXX. So you say that IAR (price XXXX$) can do it? WOW WOW WOW WOW2016-03-29 02:44 AM
Hi ALL,
The way to choose AXIM or ITCM flash interface in IAR is to configure the ROM address in the linker file.For AXIM, ROM starts from0x08000000,
for ITCM, ROM starts from0x00200000.
So the BOOT_ADD0 setting is not working?