0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式系统中,FLASH 中的程序代码必须搬到 RAM 中运行吗?

淘晶驰串口屏 ? 2025-08-06 10:19 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式系统里,FLASH 中的程序代码并非必须搬到 RAM 中运行,这得由硬件配置、实际性能需求和应用场景共同决定。就像很多低端单片机,无论是依赖片内 Flash 还是外挂的 SPI NOR Flash,通常都是让代码直接在 Flash 里运行。这类芯片的设计更侧重成本,面对的任务也多是简单的控制逻辑,比如玩具里的动作控制、传感器的数据采集等,Flash 虽运行速度偏慢,但足以支撑这些基础操作,同时还能省下本就有限的 RAM 资源,避免不必要的浪费。

还有一些中等规格的单片机或 SoC,它们可能搭载了少量的 cache,这时候就会采用更灵活的方式 —— 不会把所有代码都一股脑搬到 RAM,而是通过特定的缓存策略,将频繁调用的核心代码和数据从 Flash 读取到 cache 中。借助 cache 更快的访问速度来提升关键环节的执行效率,那些使用频率低的非核心代码则继续留在 Flash 里运行,这样既能在一定程度上提升性能,又不用占用过多的 RAM 空间,在资源和效率之间找到巧妙的平衡。

至于高端 SoC,情况就大不相同了,它们大多会选择把 Flash 中的代码搬运到 RAM 或者 cache 中运行。这是因为高端 SoC 往往要处理复杂的任务,像嵌入式 Linux 系统的运行、图像实时处理、高速数据传输等,对运行速度的要求极高。而 RAM 和 cache 的读写速度远快于 Flash,能有效避免 Flash 的速度限制成为性能瓶颈,让复杂程序得以高效运转,满足高实时性、高吞吐量的需求。

值得注意的是,即便是同一颗芯片,在不同的启动阶段,程序的运行方式也可能存在差异。比如启动初期,boot 代码通常直接在 Flash 中执行,完成芯片初始化、硬件检测等基础工作;等到这些准备工作完成后,再把应用程序代码从 Flash 搬运到 RAM 中运行。这样一来,既保证了启动过程的稳定性 —— 毕竟 boot 代码功能简单,对速度要求不高,直接在 Flash 运行更可靠,又能让复杂的应用程序在速度更快的 RAM 中发挥出更好的性能,兼顾了系统启动的安全性和应用运行的高效性。所以说,FLASH 中的程序代码是否需要搬到 RAM,并没有固定的答案,而是根据实际情况做出的灵活选择。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5161

    文章

    19780

    浏览量

    319590
  • FlaSh
    +关注

    关注

    10

    文章

    1687

    浏览量

    152561
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1393

    浏览量

    117948
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    为什么将延时程序搬到RAM运行反而变慢了?

    原先delay()在主循环中演示闪灯的,后来搬到RAM运行,发现闪灯变慢了,怎么会在RAM
    发表于 05-07 06:32

    labview 能在嵌入式xp运行吗

    比如我用labview 2012写的上位机等,能在工控机的操作系统(WinCE嵌入式xp)运行吗
    发表于 04-24 15:26

    请问F28335的程序FLASH搬到RAM不能仿真运行吗

    F28335的程序FLASH搬到RAM不能仿真运行吗,只能烧写到FLASH
    发表于 09-04 10:59

    请问程序代码如何从FLASH搬到内部RAM运行的?

    请问发烧友哥,当单片机内部空间不够时,使用外部FLASH扩大程序空间,可以运行更大代码的工程,这种技术的资料? 特别是程序代码是如何从
    发表于 02-26 06:35

    请问M3的程序代码可以在内部RAM行吗

    各位好,小弟有几个问题请教:1、M3的程序代码可以在flash执行,那程序代码可不可以在内部RAM
    发表于 08-28 09:50

    如何去编写嵌入式系统程序代码

    嵌入式系统的基本架构是由哪几部分组成的?如何去编写嵌入式系统程序代码
    发表于 07-30 06:32

    嵌入式系统Flash 存储管理

    以TRI 公司的基于NOR FlashFlash 管理软件FMM 为例, 详细介绍嵌入式系统如何根据
    发表于 05-15 13:21 ?15次下载

    如何提高嵌入式应用设计的DSP代码运行性能

    。这种运行方式在传统嵌入式应用设计很有效,但在一些算法比较复杂、系统响应要求快速、通讯任务比较繁重的嵌入式应用
    的头像 发表于 08-07 08:12 ?2824次阅读
    如何提高<b class='flag-5'>嵌入式</b>应用设计<b class='flag-5'>中</b>的DSP<b class='flag-5'>代码</b><b class='flag-5'>运行</b>性能

    如何将Flash程序转移到RAM运行

    对于独立的嵌入式系统,需要把程序存入non-volitale存储单元,常用的也就是flash。但是程序
    的头像 发表于 02-22 11:21 ?8203次阅读

    使用STM32L5的OTFDEC和ICACHE功能实时高效运行片外Flash的加密代码

    使用STM32L5的OTFDEC和ICACHE功能实时高效运行片外Flash的加密代码(嵌入式开发应用)-目标 :? 保护外置
    发表于 07-30 11:11 ?9次下载
    使用STM32L5的OTFDEC和ICACHE功能实时高效<b class='flag-5'>运行</b>片外<b class='flag-5'>Flash</b><b class='flag-5'>中</b>的加密<b class='flag-5'>代码</b>

    从TMS320F281xDSP片上FLASH运行应用程序_从FLASH转移到RAM运行_BIOS

    从TMS320F281xDSP片上FLASH运行应用程序_从FLASH转移到RAM
    发表于 07-30 11:54 ?3次下载
    从TMS320F281xDSP片上<b class='flag-5'>FLASH</b><b class='flag-5'>中</b><b class='flag-5'>运行</b>应用<b class='flag-5'>程序</b>_从<b class='flag-5'>FLASH</b>转移到<b class='flag-5'>RAM</b><b class='flag-5'>运行</b>_BIOS

    在STVDCOSMIC在RAM运行代码stm8 ram运行程序

    在STVDCOSMIC在RAM运行代码stm8 ram
    发表于 09-17 17:12 ?12次下载
    在STVDCOSMIC在<b class='flag-5'>RAM</b><b class='flag-5'>中</b><b class='flag-5'>运行</b><b class='flag-5'>代码</b>stm8 <b class='flag-5'>ram</b><b class='flag-5'>中</b><b class='flag-5'>运行程序</b>

    为什么单片机的代码Flash运行,单片机的代码运行位置跟电脑有什么不同?

    1. 单片机与电脑,在代码运行空间的区别单片机与 电脑/Linux嵌入式代码运行空间上不同。大多数单片机,
    发表于 12-01 16:06 ?6次下载
    为什么单片机的<b class='flag-5'>代码</b>在<b class='flag-5'>Flash</b><b class='flag-5'>中</b><b class='flag-5'>运行</b>,单片机的<b class='flag-5'>代码</b><b class='flag-5'>运行</b>位置跟电脑有什么不同?

    嵌入式开发,如何将Flash程序转移到RAM运行

    对于独立的嵌入式系统,需要把程序存入non-volitale存储单元,常用的也就是flash。但是程序
    发表于 02-09 10:14 ?4次下载
    <b class='flag-5'>嵌入式</b>开发<b class='flag-5'>中</b>,如何将<b class='flag-5'>Flash</b><b class='flag-5'>中</b>的<b class='flag-5'>程序</b>转移到<b class='flag-5'>RAM</b><b class='flag-5'>中</b><b class='flag-5'>运行</b>?

    嵌入式开发,如何将Flash程序转移到RAM运行

    嵌入式开发,如何将Flash程序转移到RAM
    的头像 发表于 10-29 16:23 ?4779次阅读