You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

S32K324 MCU何时从Flash加载SRAM中定义的函数?

S32K324 MCU中SRAM函数的加载时机解析

对于你用__attribute__((section(".test_sram_section")))定义的SRAM函数,其从Flash加载到SRAM的时机是MCU复位后,ENTRY POINT(复位处理函数)执行用户代码之前,具体流程如下:

  • 硬件复位触发后,MCU进入复位处理函数(即你所说的ENTRY POINT,通常是Reset_Handler),这个函数的核心前置工作就是段初始化操作:

    • 链接脚本会将你标记的.test_sram_section函数代码,在Flash中分配一个镜像存储段(比如命名为.test_sram_section_rom),同时在SRAM中预留目标地址空间
    • 启动代码会读取链接脚本中定义的段地址符号(如__test_sram_section_start、__test_sram_section_end、__test_sram_section_rom_start),将Flash镜像段的内容完整复制到SRAM的目标地址
    • 同时启动代码还会完成.bss段的零初始化,确保全局变量初始状态正确
  • 你在ENTRY POINT后立刻设置断点能在SRAM中找到该函数,是因为复位处理函数的最开头就完成了所有段复制操作,在执行任何用户业务代码前,SRAM中的函数已经加载完成。

需要注意的是,这种基于section标记的SRAM函数属于预加载型,完全由启动代码在复位阶段完成复制;如果是运行时动态生成的SRAM函数,加载时机则由用户代码控制,但显然你的场景属于前者。

内容的提问来源于stack exchange,提问作者Plus C Primer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 07:47:04