<?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: s9keaz128 Variable Address Allocation in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/s9keaz128-Variable-Address-Allocation/m-p/2356336#M68327</link>
    <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/261762"&gt;@Tom77854&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;
&lt;P&gt;I think the issue comes from an incorrect definition location of __DATA_ROM. The linker does not automatically reserve space in FLASH just because AT() is specified.&lt;BR /&gt;To verify this, you can check the generated .map file to see whether any section actually occupies address 0x00010000. Alternatively, you can directly inspect the Flash contents in the debugger—for example, by checking whether there is valid data at 0x00010000 in the debugger’s Memory View.&lt;BR /&gt;My recommended approach is to define a dedicated ROM region and assign a section to it, for example:&lt;/P&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;MEMORY&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLASH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RX) : ORIGIN = 0x00000000, LENGTH = 128K&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DATA_ROM&amp;nbsp; (RX) : ORIGIN = 0x00010000, LENGTH = 8K&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SRAM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RW) : ORIGIN = 0x1FFFF000, LENGTH = 16K&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;.data_rom :&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __DATA_ROM = .;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; KEEP(*(.data_init))&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;} &amp;gt; DATA_ROM&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;.data : AT(__DATA_ROM)&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __data_start__ = .;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.data)&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.data*)&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __data_end__ = .;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;} &amp;gt; SRAM&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;Hope it helps.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;BR&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;Celeste&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;
&lt;/DIV&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;</description>
    <pubDate>Mon, 27 Apr 2026 06:47:21 GMT</pubDate>
    <dc:creator>Celeste_Liu</dc:creator>
    <dc:date>2026-04-27T06:47:21Z</dc:date>
    <item>
      <title>s9keaz128 Variable Address Allocation</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/s9keaz128-Variable-Address-Allocation/m-p/2353596#M68319</link>
      <description>&lt;P&gt;Hello, experts.&lt;/P&gt;&lt;P&gt;It's about linker scripts. l want to place the data's LMA at a fixed address such as 0x00010000 instead of following right after the text. So l modify the linker scripts and startup code. It really generated the hex what l wanted. But when l debug, it doesn't work and jump to default ISR.&lt;/P&gt;&lt;P&gt;this is what l modify.&amp;nbsp;I will put the original code in the attachment.&lt;/P&gt;&lt;P&gt;linker scripts&lt;/P&gt;&lt;P&gt;__DATA_ROM = 0x00010000; /* Symbol is used by startup for data initialization */&lt;/P&gt;&lt;P&gt;startup.s&lt;/P&gt;&lt;P&gt;ldr r1, =__DATA_ROM&lt;BR /&gt;ldr r2, =__data_start__&lt;BR /&gt;ldr r3, =__data_end__&lt;/P&gt;</description>
      <pubDate>Mon, 20 Apr 2026 09:05:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/s9keaz128-Variable-Address-Allocation/m-p/2353596#M68319</guid>
      <dc:creator>Tom77854</dc:creator>
      <dc:date>2026-04-20T09:05:57Z</dc:date>
    </item>
    <item>
      <title>Re: s9keaz128 Variable Address Allocation</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/s9keaz128-Variable-Address-Allocation/m-p/2355169#M68324</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/261762"&gt;@Tom77854&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;
&lt;P&gt;Thanks for your post.&amp;nbsp;I’ve noticed your case and will need some time to look into it further. I’ll keep you informed of any updates as soon as possible. If there is any progress on your side, please feel free to share it with me.&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;Celeste&lt;/P&gt;</description>
      <pubDate>Thu, 23 Apr 2026 10:46:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/s9keaz128-Variable-Address-Allocation/m-p/2355169#M68324</guid>
      <dc:creator>Celeste_Liu</dc:creator>
      <dc:date>2026-04-23T10:46:47Z</dc:date>
    </item>
    <item>
      <title>Re: s9keaz128 Variable Address Allocation</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/s9keaz128-Variable-Address-Allocation/m-p/2356336#M68327</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/261762"&gt;@Tom77854&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;
&lt;P&gt;I think the issue comes from an incorrect definition location of __DATA_ROM. The linker does not automatically reserve space in FLASH just because AT() is specified.&lt;BR /&gt;To verify this, you can check the generated .map file to see whether any section actually occupies address 0x00010000. Alternatively, you can directly inspect the Flash contents in the debugger—for example, by checking whether there is valid data at 0x00010000 in the debugger’s Memory View.&lt;BR /&gt;My recommended approach is to define a dedicated ROM region and assign a section to it, for example:&lt;/P&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;MEMORY&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLASH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RX) : ORIGIN = 0x00000000, LENGTH = 128K&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DATA_ROM&amp;nbsp; (RX) : ORIGIN = 0x00010000, LENGTH = 8K&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SRAM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RW) : ORIGIN = 0x1FFFF000, LENGTH = 16K&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;.data_rom :&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __DATA_ROM = .;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; KEEP(*(.data_init))&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;} &amp;gt; DATA_ROM&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;.data : AT(__DATA_ROM)&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __data_start__ = .;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.data)&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.data*)&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __data_end__ = .;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;} &amp;gt; SRAM&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;Hope it helps.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;BR&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="scriptor-paragraph"&gt;&lt;SPAN&gt;Celeste&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;
&lt;/DIV&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 27 Apr 2026 06:47:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/s9keaz128-Variable-Address-Allocation/m-p/2356336#M68327</guid>
      <dc:creator>Celeste_Liu</dc:creator>
      <dc:date>2026-04-27T06:47:21Z</dc:date>
    </item>
  </channel>
</rss>

