<?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>S32KのトピックSome issues encountered during Flash driver development on S32K344 under the RTD 4.0.0 environment</title>
    <link>https://community.nxp.com/t5/S32K/Some-issues-encountered-during-Flash-driver-development-on/m-p/2408020#M60648</link>
    <description>&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;Hi everyone,&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;I'm currently working on a Flash driver that runs in SRAM (specifically, in DTCM without cache enabled for convenience). I've run into some issues and would appreciate your insights.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;Project background:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;I have two projects: one includes the C40 driver, and the other (which I'll call &lt;/SPAN&gt;&lt;SPAN class=""&gt;fls_drv_demo&lt;/SPAN&gt;&lt;SPAN class=""&gt;) does not. My goal is to compile the driver in the C40-enabled project, place it at address &lt;/SPAN&gt;&lt;SPAN class=""&gt;0x00500000&lt;/SPAN&gt;&lt;SPAN class=""&gt; via the AT linker directive, and then in &lt;/SPAN&gt;&lt;SPAN class=""&gt;fls_drv_demo&lt;/SPAN&gt;&lt;SPAN class=""&gt;, use &lt;/SPAN&gt;&lt;SPAN class=""&gt;memcpy&lt;/SPAN&gt;&lt;SPAN class=""&gt; to copy it to the intended DTCM address. After that, I hardcode the function addresses and call them to observe Flash behavior changes for verification.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;What I've done so far:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;UL&gt;&lt;LI&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;In the C40-enabled project, I placed all C40 IP-layer functions into the &lt;/SPAN&gt;&lt;SPAN class=""&gt;.ramcode&lt;/SPAN&gt;&lt;SPAN class=""&gt; section and collected them in the &lt;/SPAN&gt;&lt;SPAN class=""&gt;flash_driver&lt;/SPAN&gt;&lt;SPAN class=""&gt; section.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;Custom functions for initialization and programming are placed in the &lt;/SPAN&gt;&lt;SPAN class=""&gt;.Fls_Api_Tab&lt;/SPAN&gt;&lt;SPAN class=""&gt; section, also collected into &lt;/SPAN&gt;&lt;SPAN class=""&gt;flash_driver&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;Linker scripts have been modified accordingly.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;The current problem:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;In the &lt;/SPAN&gt;&lt;SPAN class=""&gt;fls_drv_demo&lt;/SPAN&gt;&lt;SPAN class=""&gt; project, when I call a function pointer—whether it's &lt;/SPAN&gt;&lt;SPAN class=""&gt;Fls_Init&lt;/SPAN&gt;&lt;SPAN class=""&gt; or a programming function like&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;((uint32_t (*)(const uint32_t, const uint8_t*, const uint32_t))(0x2000702C | 1))(0x00540000, flswritearray, 16);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;—the execution always jumps to &lt;/SPAN&gt;&lt;SPAN class=""&gt;0x00406764&lt;/SPAN&gt;&lt;SPAN class=""&gt; after some internal IP-layer function completes.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;Specifically:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;UL&gt;&lt;LI&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;Fls_Init&lt;/SPAN&gt;&lt;SPAN class=""&gt; executes successfully.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;However, during the write function, after the internal &lt;/SPAN&gt;&lt;SPAN class=""&gt;C40_Ip_MainInterfaceSectorErase&lt;/SPAN&gt;&lt;SPAN class=""&gt; finishes and is about to return (pop), the PC pointer ends up at &lt;/SPAN&gt;&lt;SPAN class=""&gt;0x00000000&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;My suspicion:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;I'm wondering whether some internal functions are still being compiled into &lt;/SPAN&gt;&lt;SPAN class=""&gt;.text&lt;/SPAN&gt;&lt;SPAN class=""&gt; or &lt;/SPAN&gt;&lt;SPAN class=""&gt;.mcal.text&lt;/SPAN&gt;&lt;SPAN class=""&gt; sections, causing the program to access the wrong stub area and leading to this behavior. Or is there some additional setup step I'm missing?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;I'm completely stuck at this point and would really appreciate any suggestions or guidance.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;Apologies if the phrasing is a bit off—this was translated with &lt;SPAN class=""&gt;AI&lt;/SPAN&gt; assistance. I've attached some screenshots of the project and the issue for reference.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;Thanks in advance!&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;Linker file configuration in the C40 driver project&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-102549.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395232i8853457E9AEA0A04/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-102549.jpg" title="20260825-102549.jpg" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;The .map file (function and stub region address allocation) generated after modifying the linker in the C40 driver project&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-103800.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395234i9C29C191FA62A7C5/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-103800.jpg" title="20260825-103800.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-103746.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395233i5CFD496A3E0E16B5/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-103746.jpg" title="20260825-103746.jpg" /&gt;&lt;/span&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;The specific contents of the &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;fls_drv_demo&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt; project&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-103909.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395235iF5C24491A4CA040D/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-103909.jpg" title="20260825-103909.jpg" /&gt;&lt;/span&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;OL&gt;&lt;LI&gt;&lt;SPAN class=""&gt;When running the write function (at&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x2000702C&lt;SPAN class=""&gt;), it goes into the internal RTD library function&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;C40_Ip_MainInterfaceSectorErase&lt;SPAN class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;(at&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x200074EC&lt;SPAN class=""&gt;). At&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x20007502&lt;SPAN class=""&gt;, it jumps to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x20007B52&lt;SPAN class=""&gt;, and then the PC points to the address stored at&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x20007B54&lt;SPAN class=""&gt;, which is&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x00406764&lt;SPAN class=""&gt;. Subsequently, when executing the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;pop&lt;SPAN class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;instruction at&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x00406778&lt;SPAN class=""&gt;, the value of&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;r3&lt;SPAN class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;is as shown in the figure, pointing to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x2001FFD8&lt;SPAN class=""&gt;.&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x2001FFD8&lt;SPAN class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;then points to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x20007BA8&lt;SPAN class=""&gt;, and the value at&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x7BA8&lt;SPAN class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;is&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x00000000&lt;SPAN class=""&gt;, causing the program to crash/run away.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-105216.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395237iEA3CD36C200913B5/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-105216.jpg" title="20260825-105216.jpg" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-110659.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395242i9A77CD55E3A7EBE1/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-110659.jpg" title="20260825-110659.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-110639.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395250i6C7F0355D381B360/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-110639.jpg" title="20260825-110639.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-110710.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395252iF0548463526388C9/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-110710.jpg" title="20260825-110710.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395255iF3D5C827D6B6F885/image-size/medium?v=v2&amp;amp;px=400" alt="1.jpg" title="1.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395261iFA993FAF64AD8E0E/image-size/medium?v=v2&amp;amp;px=400" alt="2.jpg" title="2.jpg" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-111431.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395269i06F652FA6AD96C46/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-111431.jpg" title="20260825-111431.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-130859.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395270i3F2E52DBA22584FB/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-130859.jpg" title="20260825-130859.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-130909.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395271i122AC644E35B55AE/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-130909.jpg" title="20260825-130909.jpg" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Tue, 25 Aug 2026 05:17:48 GMT</pubDate>
    <dc:creator>yunaidejiezi</dc:creator>
    <dc:date>2026-08-25T05:17:48Z</dc:date>
    <item>
      <title>Some issues encountered during Flash driver development on S32K344 under the RTD 4.0.0 environment</title>
      <link>https://community.nxp.com/t5/S32K/Some-issues-encountered-during-Flash-driver-development-on/m-p/2408020#M60648</link>
      <description>&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;Hi everyone,&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;I'm currently working on a Flash driver that runs in SRAM (specifically, in DTCM without cache enabled for convenience). I've run into some issues and would appreciate your insights.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;Project background:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;I have two projects: one includes the C40 driver, and the other (which I'll call &lt;/SPAN&gt;&lt;SPAN class=""&gt;fls_drv_demo&lt;/SPAN&gt;&lt;SPAN class=""&gt;) does not. My goal is to compile the driver in the C40-enabled project, place it at address &lt;/SPAN&gt;&lt;SPAN class=""&gt;0x00500000&lt;/SPAN&gt;&lt;SPAN class=""&gt; via the AT linker directive, and then in &lt;/SPAN&gt;&lt;SPAN class=""&gt;fls_drv_demo&lt;/SPAN&gt;&lt;SPAN class=""&gt;, use &lt;/SPAN&gt;&lt;SPAN class=""&gt;memcpy&lt;/SPAN&gt;&lt;SPAN class=""&gt; to copy it to the intended DTCM address. After that, I hardcode the function addresses and call them to observe Flash behavior changes for verification.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;What I've done so far:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;UL&gt;&lt;LI&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;In the C40-enabled project, I placed all C40 IP-layer functions into the &lt;/SPAN&gt;&lt;SPAN class=""&gt;.ramcode&lt;/SPAN&gt;&lt;SPAN class=""&gt; section and collected them in the &lt;/SPAN&gt;&lt;SPAN class=""&gt;flash_driver&lt;/SPAN&gt;&lt;SPAN class=""&gt; section.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;Custom functions for initialization and programming are placed in the &lt;/SPAN&gt;&lt;SPAN class=""&gt;.Fls_Api_Tab&lt;/SPAN&gt;&lt;SPAN class=""&gt; section, also collected into &lt;/SPAN&gt;&lt;SPAN class=""&gt;flash_driver&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;Linker scripts have been modified accordingly.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;The current problem:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;In the &lt;/SPAN&gt;&lt;SPAN class=""&gt;fls_drv_demo&lt;/SPAN&gt;&lt;SPAN class=""&gt; project, when I call a function pointer—whether it's &lt;/SPAN&gt;&lt;SPAN class=""&gt;Fls_Init&lt;/SPAN&gt;&lt;SPAN class=""&gt; or a programming function like&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;((uint32_t (*)(const uint32_t, const uint8_t*, const uint32_t))(0x2000702C | 1))(0x00540000, flswritearray, 16);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;—the execution always jumps to &lt;/SPAN&gt;&lt;SPAN class=""&gt;0x00406764&lt;/SPAN&gt;&lt;SPAN class=""&gt; after some internal IP-layer function completes.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;Specifically:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;UL&gt;&lt;LI&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;Fls_Init&lt;/SPAN&gt;&lt;SPAN class=""&gt; executes successfully.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;LI&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;However, during the write function, after the internal &lt;/SPAN&gt;&lt;SPAN class=""&gt;C40_Ip_MainInterfaceSectorErase&lt;/SPAN&gt;&lt;SPAN class=""&gt; finishes and is about to return (pop), the PC pointer ends up at &lt;/SPAN&gt;&lt;SPAN class=""&gt;0x00000000&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;My suspicion:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;I'm wondering whether some internal functions are still being compiled into &lt;/SPAN&gt;&lt;SPAN class=""&gt;.text&lt;/SPAN&gt;&lt;SPAN class=""&gt; or &lt;/SPAN&gt;&lt;SPAN class=""&gt;.mcal.text&lt;/SPAN&gt;&lt;SPAN class=""&gt; sections, causing the program to access the wrong stub area and leading to this behavior. Or is there some additional setup step I'm missing?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;I'm completely stuck at this point and would really appreciate any suggestions or guidance.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;Apologies if the phrasing is a bit off—this was translated with &lt;SPAN class=""&gt;AI&lt;/SPAN&gt; assistance. I've attached some screenshots of the project and the issue for reference.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;Thanks in advance!&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;Linker file configuration in the C40 driver project&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-102549.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395232i8853457E9AEA0A04/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-102549.jpg" title="20260825-102549.jpg" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;The .map file (function and stub region address allocation) generated after modifying the linker in the C40 driver project&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-103800.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395234i9C29C191FA62A7C5/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-103800.jpg" title="20260825-103800.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-103746.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395233i5CFD496A3E0E16B5/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-103746.jpg" title="20260825-103746.jpg" /&gt;&lt;/span&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;The specific contents of the &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;fls_drv_demo&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt; project&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-103909.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395235iF5C24491A4CA040D/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-103909.jpg" title="20260825-103909.jpg" /&gt;&lt;/span&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;OL&gt;&lt;LI&gt;&lt;SPAN class=""&gt;When running the write function (at&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x2000702C&lt;SPAN class=""&gt;), it goes into the internal RTD library function&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;C40_Ip_MainInterfaceSectorErase&lt;SPAN class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;(at&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x200074EC&lt;SPAN class=""&gt;). At&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x20007502&lt;SPAN class=""&gt;, it jumps to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x20007B52&lt;SPAN class=""&gt;, and then the PC points to the address stored at&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x20007B54&lt;SPAN class=""&gt;, which is&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x00406764&lt;SPAN class=""&gt;. Subsequently, when executing the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;pop&lt;SPAN class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;instruction at&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x00406778&lt;SPAN class=""&gt;, the value of&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;r3&lt;SPAN class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;is as shown in the figure, pointing to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x2001FFD8&lt;SPAN class=""&gt;.&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x2001FFD8&lt;SPAN class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;then points to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x20007BA8&lt;SPAN class=""&gt;, and the value at&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x7BA8&lt;SPAN class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;is&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;0x00000000&lt;SPAN class=""&gt;, causing the program to crash/run away.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-105216.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395237iEA3CD36C200913B5/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-105216.jpg" title="20260825-105216.jpg" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-110659.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395242i9A77CD55E3A7EBE1/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-110659.jpg" title="20260825-110659.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-110639.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395250i6C7F0355D381B360/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-110639.jpg" title="20260825-110639.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-110710.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395252iF0548463526388C9/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-110710.jpg" title="20260825-110710.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395255iF3D5C827D6B6F885/image-size/medium?v=v2&amp;amp;px=400" alt="1.jpg" title="1.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395261iFA993FAF64AD8E0E/image-size/medium?v=v2&amp;amp;px=400" alt="2.jpg" title="2.jpg" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;&lt;SPAN class=""&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-111431.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395269i06F652FA6AD96C46/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-111431.jpg" title="20260825-111431.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-130859.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395270i3F2E52DBA22584FB/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-130859.jpg" title="20260825-130859.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20260825-130909.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/395271i122AC644E35B55AE/image-size/medium?v=v2&amp;amp;px=400" alt="20260825-130909.jpg" title="20260825-130909.jpg" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Tue, 25 Aug 2026 05:17:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/Some-issues-encountered-during-Flash-driver-development-on/m-p/2408020#M60648</guid>
      <dc:creator>yunaidejiezi</dc:creator>
      <dc:date>2026-08-25T05:17:48Z</dc:date>
    </item>
    <item>
      <title>Re: Some issues encountered during Flash driver development on S32K344 under the RTD 4.0.0 environme</title>
      <link>https://community.nxp.com/t5/S32K/Some-issues-encountered-during-Flash-driver-development-on/m-p/2408262#M60662</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/259229"&gt;@yunaidejiezi&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;Based on the disassembly, you forgot to move the&amp;nbsp;OsIf_SuspendAllInterrupts() function to DCTM, all the functions called by the C40_Ip driver must be in DCTM.&lt;/P&gt;
&lt;P&gt;I would recommend using the Mem_43_InFls MCAL driver, which handles the copy-to-RAM automatically at runtime and avoids all of this manual dependency tracking.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;BR, Daniel&lt;/P&gt;</description>
      <pubDate>Tue, 25 Aug 2026 14:38:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/Some-issues-encountered-during-Flash-driver-development-on/m-p/2408262#M60662</guid>
      <dc:creator>danielmartynek</dc:creator>
      <dc:date>2026-08-25T14:38:54Z</dc:date>
    </item>
  </channel>
</rss>

