58 FX3 Programmers Manual, Doc. # 001-64707 Rev. *C
FX3 Firmware
__exidx_start = .;
.ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
__exidx_end = .;
}
The contents of each section of the memory map are explained below.
5.1.3.1 I-TCM
All instructions that are recommended to be placed under I-TCM are labeled under section
CYU3P_ITCM_SECTION. This contains all the interrupt handlers for the system. If the application
requires to place a different set of instructions it is possible. Only restriction is that first 256 bytes are
reserved.
5.1.3.2 D-TCM
SVC, IRQ, FIQ and SYS stacks are recommended to be located in the D-TCM. This gives maximum
performance from RTOS. These stacks are automatically initialized by the library inside the
CyU3PFirmwareEntry location with the following allocation:
SYS_STACK Base: 0x10000000 Size 2KB
ABT_STACK Base: 0x10000800 Size 256B
UND_STACK Base: 0x10000900 Size 256B
FIQ_STACK Base: 0x10000A00 Size 512B
IRQ_STACK Base: 0x10000C00 Size 1KB
SVC_STACK Base: 0x10001000 Size 4KB
If for any reason the application needs to modify this, it can be done before invoking
CyU3PDeviceInit() inside the main() function. Changing this is not recommended.
5.1.3.3 Code Area
The code can be placed in the 512KB SYS_MEM area. It is recommended to place the code area in
the beginning and then the data / heap area. Code area starts after the reserved 12KB and here
180KB is allocated for code area in the linker script file. Note that this 180KB allocation can be
changed in this file (fx3.ld).
5.1.3.4 Data Area
The global data area and the uninitialized data area follow the code area. Here in the above linker
script file, 32KB is allocated for this.
5.1.3.5 RTOS managed heap area
This area is where the thread memory and also other dynamically allocated memory to be used by
the application are placed. The memory allocated for this is done inside the RTOS port helper file
cyfxtx.c.
To modify this memory size / location change the definition for:
#define CY_U3P_MEM_HEAP_BASE ((uint8_t *)0x40038000)
#define CY_U3P_MEM_HEAP_SIZE (0x8000)
32KB is allocated for RTOS managed heap. The size of this area can be changed incyfxtx.c.