<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: S32K118 optimizing code makes SDK FLASH_DRV_EraseSector() return STATUS_ERROR in S32K</title>
    <link>https://community.nxp.com/t5/S32K/S32K118-optimizing-code-makes-SDK-FLASH-DRV-EraseSector-return/m-p/1879733#M36152</link>
    <description>&lt;P&gt;Hola, tengo el mismo problema, ¿has podido solucionarlo y si es así, podrías decirme cómo?&lt;BR /&gt;Todo lo mejor.&lt;/P&gt;</description>
    <pubDate>Mon, 03 Jun 2024 09:47:43 GMT</pubDate>
    <dc:creator>Pilma</dc:creator>
    <dc:date>2024-06-03T09:47:43Z</dc:date>
    <item>
      <title>S32K118 optimizing code makes SDK FLASH_DRV_EraseSector() return STATUS_ERROR</title>
      <link>https://community.nxp.com/t5/S32K/S32K118-optimizing-code-makes-SDK-FLASH-DRV-EraseSector-return/m-p/1614178#M21319</link>
      <description>&lt;P&gt;Hello Community,&lt;/P&gt;&lt;P&gt;I'm working on a bootloader for a custom PCB with the S32K118 processor. Here i communicate al the data of the hexfile through the CAN communication and write each flash sector to the following address and upwards: 0x20000.This bootloader successfully flashes the communicated data to the flash of the MCU. And if i jump to the application that is flashed it seems to work fine.&lt;/P&gt;&lt;P&gt;But when i change the optimization level of my bootloader code from none to for example -O3 like below in my build settings:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="melvinw_0-1678719505598.png" style="width: 576px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/214323i22C7DF860EA8F566/image-dimensions/576x298?v=v2" width="576" height="298" role="button" title="melvinw_0-1678719505598.png" alt="melvinw_0-1678719505598.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Something strange happens in on of my methods:&lt;/P&gt;&lt;P&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;status_t abs_Flash_Write_Sector(uint32_t address, uint32_t size, uint8_t* sourceBuffer, uint32_t bufferSize)&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;{&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;status_t ret = STATUS_SUCCESS;&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;uint32_t failAddress = 0;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;INT_SYS_DisableIRQGlobal();&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;/* Set callback function before a long time consuming flash operation&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;* (ex: erasing) to let the application code do other tasks while flash&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;* in operation. In this case we use it to enable interrupt for&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;* Flash Command Complete event */&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;flash_callback_t pCallBack = (flash_callback_t)CCIF_Callback;&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;flashSSDConfig.CallBack = pCallBack;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;/* Erase the specific PFlash sector */&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;/* Configure address, size to erase sector function. For example on S32K144 */&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;size = FEATURE_FLS_PF_BLOCK_SECTOR_SIZE;&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;ret = FLASH_DRV_EraseSector(&amp;amp;flashSSDConfig, address, size);&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;----------- HERE MY CODE CRASHES (more info below)&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;DEV_ASSERT(STATUS_SUCCESS == ret);&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;/* Disable Callback */&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;flashSSDConfig.CallBack = NULL_CALLBACK;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;/* Verify the erase operation at margin level value of 1, user read */&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;ret = FLASH_DRV_VerifySection(&amp;amp;flashSSDConfig, address, size / FTFx_DPHRASE_SIZE, 1u);&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;DEV_ASSERT(STATUS_SUCCESS == ret);&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;/* Write some data to the erased PFlash sector */&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;ret = FLASH_DRV_Program(&amp;amp;flashSSDConfig, address, bufferSize, sourceBuffer);&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;DEV_ASSERT(STATUS_SUCCESS == ret);&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;/* Verify the program operation at margin level value of 1, user margin */&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;ret = FLASH_DRV_ProgramCheck(&amp;amp;flashSSDConfig, address, bufferSize, sourceBuffer, &amp;amp;failAddress, 1u);&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;DEV_ASSERT(STATUS_SUCCESS == ret);&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;INT_SYS_EnableIRQGlobal();&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;return ret;&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&lt;EM&gt;}&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;When this method is called the and i run the debug with my Universal Multilink Debug probe its shows that is crashes and goes to the default ISR. And when i place a breakpoint the&amp;nbsp;FLASH_DRV_EraseSector() returns a STATUS_ERROR.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="melvinw_1-1678720082930.png" style="width: 605px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/214324i65865624042D6790/image-dimensions/605x236?v=v2" width="605" height="236" role="button" title="melvinw_1-1678720082930.png" alt="melvinw_1-1678720082930.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;When i unplug the debug probe restart the pcb and run my code without debug. The same fault seems to happen when i start to flash my hexfile to the device. Because is can see it stops working on the same spot.&lt;/P&gt;&lt;P&gt;I'm not sure why this is happening. I've read that uninitialized variables can cause this behavior, but i made sure that everything i could think of is initialized.&lt;/P&gt;&lt;P&gt;Does anybody have a clou what can be the cause of this? Any help is greatly appriciated.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below my linker file of the bootloader:&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;/* Entry Point */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;ENTRY(Reset_Handler)&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;HEAP_SIZE = DEFINED(__heap_size__) ? __heap_size__ : 0x00000200;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;STACK_SIZE = DEFINED(__stack_size__) ? __stack_size__ : 0x00000200;&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;/* If symbol __flash_vector_table__=1 is defined at link time&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;* the interrupt vector will not be copied to RAM.&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;* Warning: Using the interrupt vector from Flash will not allow&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;* INT_SYS_InstallHandler because the section is Read Only.&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;*/&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;M_VECTOR_RAM_SIZE = DEFINED(__flash_vector_table__) ? 0x0 : 0x00C0;&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;/* Specify the memory areas */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;MEMORY&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;{&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;/* Flash */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;m_interrupts (RX) : ORIGIN = 0x00000000, LENGTH = 0x000000C0&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;m_flash_config (RX) : ORIGIN = 0x00000400, LENGTH = 0x00000010&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;m_text (RX) : ORIGIN = 0x00000410, LENGTH = 0x0001FFFF - 0x00000410 /* 16KB - 0x10*/&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;/* SRAM_L */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;m_custom (RW) : ORIGIN = 0x1FFFFC00, LENGTH = 0x00000400&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;/* SRAM_U */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;m_data (RW) : ORIGIN = 0x20000000, LENGTH = 0x000030C0&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;m_data_2 (RW) : ORIGIN = 0x200030C0, LENGTH = 0x00002740&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;m_exchange_info (RW) : ORIGIN = 0x20005800, LENGTH = 0x00000010&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;}&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;/* Define output sections */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;SECTIONS&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;{&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;/* The startup code goes first into internal flash */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;.interrupts :&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;{&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__VECTOR_TABLE = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__interrupts_start__ = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;. = ALIGN(4);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;KEEP(*(.isr_vector)) /* Startup code */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__interrupts_end__ = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;. = ALIGN(4);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;} &amp;gt; m_interrupts&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;.flash_config :&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;{&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;. = ALIGN(4);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;KEEP(*(.FlashConfig)) /* Flash Configuration Field (FCF) */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;. = ALIGN(4);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;} &amp;gt; m_flash_config&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;/* The program code and other data goes into internal flash */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;.text :&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;{&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;. = ALIGN(4);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;*(.text) /* .text sections (code) */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;*(.text*) /* .text* sections (code) */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;*(.rodata) /* .rodata sections (constants, strings, etc.) */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;*(.rodata*) /* .rodata* sections (constants, strings, etc.) */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;*(.init) /* section used in crti.o files */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;*(.fini) /* section used in crti.o files */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;*(.eh_frame) /* section used in crtbegin.o files */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;. = ALIGN(4);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;} &amp;gt; m_text&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;/* Section used by the libgcc.a library for fvp4 */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;.ARM :&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;{&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__exidx_start = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;*(.ARM.exidx*)&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__exidx_end = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;} &amp;gt; m_text&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__etext = .; /* Define a global symbol at end of code. */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__DATA_ROM = .; /* Symbol is used by startup for data initialization. */&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;.interrupts_ram :&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;{&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;. = ALIGN(4);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__VECTOR_RAM__ = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__RAM_START = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__interrupts_ram_start__ = .; /* Create a global symbol at data start. */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;*(.m_interrupts_ram) /* This is a user defined section. */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;. += M_VECTOR_RAM_SIZE;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;. = ALIGN(4);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__interrupts_ram_end__ = .; /* Define a global symbol at data end. */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;} &amp;gt; m_data&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__VECTOR_RAM = DEFINED(__flash_vector_table__) ? ORIGIN(m_interrupts) : __VECTOR_RAM__ ;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__RAM_VECTOR_TABLE_SIZE = DEFINED(__flash_vector_table__) ? 0x0 : (__interrupts_ram_end__ - __interrupts_ram_start__) ;&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;.data : AT(__DATA_ROM)&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;{&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;. = ALIGN(4);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__DATA_RAM = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__data_start__ = .; /* Create a global symbol at data start. */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;*(.data) /* .data sections */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;*(.data*) /* .data* sections */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;. = ALIGN(4);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__data_end__ = .; /* Define a global symbol at data end. */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;} &amp;gt; m_data&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__DATA_END = __DATA_ROM + (__data_end__ - __data_start__);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__CODE_ROM = __DATA_END; /* Symbol is used by code initialization. */&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;.code : AT(__CODE_ROM)&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;{&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;. = ALIGN(4);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__CODE_RAM = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__code_start__ = .; /* Create a global symbol at code start. */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__code_ram_start__ = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;*(.code_ram) /* Custom section for storing code in RAM */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;. = ALIGN(4);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__code_end__ = .; /* Define a global symbol at code end. */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__code_ram_end__ = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;} &amp;gt; m_data&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__CODE_END = __CODE_ROM + (__code_end__ - __code_start__);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__CUSTOM_ROM = __CODE_END;&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;/* Custom Section Block that can be used to place data at absolute address. */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;/* Use __attribute__((section (".customSection"))) to place data here. */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;/* Use this section only when MTB (Micro Trace Buffer) is not used, because MTB uses the same RAM area, as described in S32K Reference Manual. */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;.customSectionBlock ORIGIN(m_custom) : AT(__CUSTOM_ROM)&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;{&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__customSectionStart = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__customSection_start__ = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;KEEP(*(.customSection)) /* Keep section even if not referenced. */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__customSection_end__ = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;} &amp;gt; m_custom&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__CUSTOM_END = __CUSTOM_ROM + (__customSection_end__ - __customSection_start__);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__rom_end = __CUSTOM_END;&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;/* Uninitialized data section. */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;.bss :&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;{&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;/* This is used by the startup in order to initialize the .bss section. */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;. = ALIGN(4);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__BSS_START = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__bss_start__ = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;*(.bss)&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;*(.bss*)&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;*(COMMON)&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;. = ALIGN(4);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__bss_end__ = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__BSS_END = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;} &amp;gt; m_data_2&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;/* Put heap section after the program data */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;.heap :&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;{&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;. = ALIGN(8);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__end__ = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__heap_start__ = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;PROVIDE(end = .);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;PROVIDE(_end = .);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;PROVIDE(__end = .);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__HeapBase = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;. += HEAP_SIZE;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__HeapLimit = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__heap_limit = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__heap_end__ = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;} &amp;gt; m_data_2&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;/* Initializes stack on the end of block */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__StackTop = ORIGIN(m_data_2) + LENGTH(m_data_2);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__StackLimit = __StackTop - STACK_SIZE;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;PROVIDE(__stack = __StackTop);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__RAM_END = __StackTop;&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;.stack __StackLimit :&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;{&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;. = ALIGN(8);&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__stack_start__ = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;. += STACK_SIZE;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;__stack_end__ = .;&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;} &amp;gt; m_data_2&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;.ARM.attributes 0 : { *(.ARM.attributes) }&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;/* Memory validation */&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;ASSERT(__rom_end &amp;lt;= (ORIGIN(m_text) + LENGTH(m_text)), "Region m_text overflowed!")&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;ASSERT(__StackLimit &amp;gt;= __HeapLimit, "region m_data_2 overflowed with stack and heap")&lt;/FONT&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;}&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 13 Mar 2023 15:24:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K118-optimizing-code-makes-SDK-FLASH-DRV-EraseSector-return/m-p/1614178#M21319</guid>
      <dc:creator>melvinw</dc:creator>
      <dc:date>2023-03-13T15:24:38Z</dc:date>
    </item>
    <item>
      <title>Re: S32K118 optimizing code makes SDK FLASH_DRV_EraseSector() return STATUS_ERROR</title>
      <link>https://community.nxp.com/t5/S32K/S32K118-optimizing-code-makes-SDK-FLASH-DRV-EraseSector-return/m-p/1614292#M21323</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/208739"&gt;@melvinw&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please refer to this community post:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://community.nxp.com/t5/S32K/Does-the-MCU-function-and-performance-exactly-same-for-O3-and-Os/td-p/1610886" target="_blank" rel="noopener"&gt;Does the MCU function and performance exactly same for (-O3) and (-Os)?&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;B.R.&lt;/P&gt;
&lt;P&gt;VaneB&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 13 Mar 2023 20:00:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K118-optimizing-code-makes-SDK-FLASH-DRV-EraseSector-return/m-p/1614292#M21323</guid>
      <dc:creator>VaneB</dc:creator>
      <dc:date>2023-03-13T20:00:09Z</dc:date>
    </item>
    <item>
      <title>Re: S32K118 optimizing code makes SDK FLASH_DRV_EraseSector() return STATUS_ERROR</title>
      <link>https://community.nxp.com/t5/S32K/S32K118-optimizing-code-makes-SDK-FLASH-DRV-EraseSector-return/m-p/1615626#M21391</link>
      <description>&lt;P&gt;Thx i will have a long look at it! Until now i haven't found a flag that is causing this problem. Are there other compiler unrelated options that i might want to take into consideration that could cause this kind of behaviour?&lt;/P&gt;&lt;P&gt;Best Regard,&lt;/P&gt;&lt;P&gt;MelvinW&lt;/P&gt;</description>
      <pubDate>Wed, 15 Mar 2023 10:21:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K118-optimizing-code-makes-SDK-FLASH-DRV-EraseSector-return/m-p/1615626#M21391</guid>
      <dc:creator>melvinw</dc:creator>
      <dc:date>2023-03-15T10:21:26Z</dc:date>
    </item>
    <item>
      <title>Re: S32K118 optimizing code makes SDK FLASH_DRV_EraseSector() return STATUS_ERROR</title>
      <link>https://community.nxp.com/t5/S32K/S32K118-optimizing-code-makes-SDK-FLASH-DRV-EraseSector-return/m-p/1616207#M21409</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/208739"&gt;@melvinw&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As it is said in the post shared before: "when your application becomes complex, and the optimizations start harming the overall functionality of your application. This is related to the optimizations that are being done, meaning the code was written to work as one thing, but the optimization changes the overall logic (due to the changes creating a better performance, changing memory accesses and implementing optimized loops), and this new logic can happen to be not compliant with what the original idea was, hence harming functionality.&lt;/P&gt;
&lt;P&gt;As for performance, each level will create a different kind of optimization related to loop-unrolling, memory access pipelining, and so. Given that -Os is related to size and -O3 is related to more optimizations, we can assume that -O3 should have a better performance than the -Os one.&lt;/P&gt;
&lt;P&gt;Still, the optimization level is to be taken with care, given that a -Os optimized application can be running as expected. However, once you up the optimization to -O3, the application can fail due to non-compliant behavior.&lt;/P&gt;
&lt;P&gt;Again, this is more related to the compiler itself, rather than the NXP products. We might recommend talking a look into the different optimization flags and see if any of them can be non-compliant with your application."&lt;/P&gt;</description>
      <pubDate>Wed, 15 Mar 2023 21:43:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K118-optimizing-code-makes-SDK-FLASH-DRV-EraseSector-return/m-p/1616207#M21409</guid>
      <dc:creator>VaneB</dc:creator>
      <dc:date>2023-03-15T21:43:16Z</dc:date>
    </item>
    <item>
      <title>Re: S32K118 optimizing code makes SDK FLASH_DRV_EraseSector() return STATUS_ERROR</title>
      <link>https://community.nxp.com/t5/S32K/S32K118-optimizing-code-makes-SDK-FLASH-DRV-EraseSector-return/m-p/1879733#M36152</link>
      <description>&lt;P&gt;Hola, tengo el mismo problema, ¿has podido solucionarlo y si es así, podrías decirme cómo?&lt;BR /&gt;Todo lo mejor.&lt;/P&gt;</description>
      <pubDate>Mon, 03 Jun 2024 09:47:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K118-optimizing-code-makes-SDK-FLASH-DRV-EraseSector-return/m-p/1879733#M36152</guid>
      <dc:creator>Pilma</dc:creator>
      <dc:date>2024-06-03T09:47:43Z</dc:date>
    </item>
    <item>
      <title>Re: S32K118 optimizing code makes SDK FLASH_DRV_EraseSector() return STATUS_ERROR</title>
      <link>https://community.nxp.com/t5/S32K/S32K118-optimizing-code-makes-SDK-FLASH-DRV-EraseSector-return/m-p/1879749#M36153</link>
      <description>&lt;P&gt;Hola, lo he arreglado. Ahora solo uso Optimizar (-O1), ya que otros niveles ya no optimizan mucho. Y los niveles de optimización más altos significaban que la funcionalidad que necesitaba en mi código ya no funcionaba. Espero que esto ayude.&lt;/P&gt;</description>
      <pubDate>Mon, 03 Jun 2024 10:10:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K118-optimizing-code-makes-SDK-FLASH-DRV-EraseSector-return/m-p/1879749#M36153</guid>
      <dc:creator>melvinw</dc:creator>
      <dc:date>2024-06-03T10:10:26Z</dc:date>
    </item>
    <item>
      <title>Re: S32K118 optimizing code makes SDK FLASH_DRV_EraseSector() return STATUS_ERROR</title>
      <link>https://community.nxp.com/t5/S32K/S32K118-optimizing-code-makes-SDK-FLASH-DRV-EraseSector-return/m-p/1879795#M36157</link>
      <description>&lt;P&gt;&lt;FONT&gt;Hola, mucha gracias por tu repuesta.&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT&gt;yo teneia puesto ese método de optimización y he cambiado a varios métodos de optimización y sigo igual, seguiré investigando.&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT&gt;este micro y compilador en nuevo para mí.&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT&gt;muchísimas gracias por todo.&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 03 Jun 2024 11:07:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K118-optimizing-code-makes-SDK-FLASH-DRV-EraseSector-return/m-p/1879795#M36157</guid>
      <dc:creator>Pilma</dc:creator>
      <dc:date>2024-06-03T11:07:48Z</dc:date>
    </item>
  </channel>
</rss>

