Hello,
I have installed the S32DS v3.5.12 together with the latest RTD (AR: 4.7.0, SW: 2.0.0) for an S32k148 MCU.
I have generated the FreeRTOS example project for the S32K148 MCU as shown in the image below.
I have studied the Linker file linker_flash_s32k148.ld and think I found an error in the generated file. First, examine the memory definition. According to the file 1024 bytes are reserved for the interrupt table inside the flash memory and then additional 16 bytes for the flash configuration flags/bits, etc.
MEMORY
{
int_flash_interrupts : ORIGIN = 0x00000000, LENGTH = 0x00000400 /* 1K */ /* Do not change this section */
int_flash_config : ORIGIN = 0x00000400, LENGTH = 0x00000010 /* 16bytes */ /* Do not change this section */
int_flash : ORIGIN = 0x00000410, LENGTH = 0x0017FBF0 /* ~1.5MB */
int_sram_results : ORIGIN = 0x1FFE0000, LENGTH = 0x00000100 /* 256bytes */
int_sram : ORIGIN = 0x1FFE0100, LENGTH = 0x0003DF00 /* ~248K */
int_sram_stack_c0 : ORIGIN = 0x2001E000, LENGTH = 0x00001000 /* 4K */
ram_rsvd2 : ORIGIN = 0x2001F000, LENGTH = 0 /* End of SRAM */
}
If you continue analyzing the section definition at the beginning
SECTIONS
{
.flash_interrupts :
{
. = ALIGN(2048);
__interrupts_rom_start = .;
KEEP(*(.intc_vector))
. = ALIGN(4);
__interrupts_rom_end = .;
} > int_flash_interrupts
you see that the memory region int_flash_interrupts, which has an assigned size of 1024 bytes contains a 2048 byte alignment instruction, which exceeds the defined region size.
Am I correct? If not, can you explain, what I am missing here.
Best regards,
M_SCH
Solved! Go to Solution.
Hi @M_SCH
The ALIGN(n) instructs the compiler to align a variable on an n-byte boundary starting from the ORIGIN address. This just limits the location of a memory region to a certain n-byte size, this should not interfere with other memory regions as the memory region size does not exceed the n-byte boundary.
B.R.
VaneB
Hi @M_SCH
The ALIGN(n) instructs the compiler to align a variable on an n-byte boundary starting from the ORIGIN address. This just limits the location of a memory region to a certain n-byte size, this should not interfere with other memory regions as the memory region size does not exceed the n-byte boundary.
B.R.
VaneB