User manual
Ride7 for ARM Creating a project using the GNU toolchain
- 11 -
The FLASH is the “standard” mode, which your application will very probably use in the final
product. The RAM mode cannot be used in the final application because the RAM content is
modified by a power down.
You can debug in FLASH mode, but only 2 breakpoints can be set in the FLASH at a time, so
you will probably prefer using RAM mode for debugging with hardware debuggers.
Therefore, we recommend debugging the application in RAM mode as long as the RAM is large
enough to hold the program. Then, when the application is validated or grows too large for RAM
mode, you will have to switch to FLASH mode.
Warning: When using a hardware debugger or programmer, always make sure that the mode
specified in the options matches the mode selected by hardware.
2.4.1 FLASH mode for STR7
In this mode, the FLASH at address 0x40000000 (resp. 0x80000000 for the STRx3x, or
0x20000000 for the STR75x) is also seen at address 0.
Therefore, the startup code is placed at 0x40000000 (0x80000000 for STR73x, 0x20000000 for
STR75x) by the linker. The rest of the code is placed after the startup in FLASH.
The data initialization values are also placed in FLASH, and then copied to RAM by the startup
code. The read-only data is also placed in the FLASH and is directly accessed there during the
execution of the application.
2.4.2 FLASH mode for STR9
The startup code is placed at 0x00000000 by the linker. The rest of the code is placed after the
startup in FLASH.
By default, the bank0 of the FLASH will reside at the address 0 (e.g. CSX = 0) and the bank1
(32KB) will reside at the address 0x400000. However, you can modify the option “Flash Bank
Selection”:
• by selecting “bank1 @ 0x0”, you
will invert the respective locations of
the banks 0 and 1 (bank0 will reside at
the address 0x400000),
• by modifying the “High Bank
Address” value, you will force the
relocation address of the upper bank
(either bank1 or bank0). This address
must be larger than the size of the bank
at address 0, and must be a multiple of
the size of the other bank.
The data initialization values are placed in FLASH, and copied to RAM by the startup code.
The read-only data is also placed in the FLASH and is accessed directly there during the
execution of the application.