cancel
Showing results for 
Search instead for 
Did you mean: 

STM32F7xx Flash interface selection (AXIM or ITCM)

wenbin
Associate II
Posted on March 28, 2016 at 18:28

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.

0690X000006038MQAQ.jpg

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?

0690X00000602vZQAQ.jpg

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 from 

0x08000000, 

for ITCM, ROM starts from 

0x00200000.

So the BOOT_ADD0 setting is not working?

#stm32f7-axim-itcm-flash-interfac
10 REPLIES 10
Radosław
Senior
Posted on March 28, 2016 at 19:21

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

Posted on March 28, 2016 at 19:23

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.

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
Radosław
Senior
Posted on March 28, 2016 at 19:31

>>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.

Radosław
Senior
Posted on March 28, 2016 at 19:47

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.

Posted on March 28, 2016 at 19:54

>>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''

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
Radosław
Senior
Posted on March 28, 2016 at 19:58

Bull shit.   Tested. LMA MUST BE 0x0800000.   VMA is something else.

Write to Flasg can be done only by AXIM.,

Posted on March 28, 2016 at 21:14

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.

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
Radosław
Senior
Posted on March 28, 2016 at 21:24

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 WOW

wenbin
Associate II
Posted on March 29, 2016 at 11:44

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 from 

0x08000000,

for ITCM, ROM starts from 

0x00200000.

So the BOOT_ADD0 setting is not working?