大多数现代嵌入式软件应用都是从Flash(Flash)存取和执行的。为了加快基于Flash的应用运行时间,开发人员可以选择一些关键功能从RAM执行,让速度更大幅提升......

大多数现代嵌入式软件应用都是从Flash(Flash)存取和执行的。Flash为基于微控制器(MCU)的应用提供了便宜且快速的储存介质。这些应用通常都是实时的,对运行时间和确定性行为有严格要求。虽然Flash速度已经很快,但还是不如从RAM执行程序代码那么快。为了加快基于Flash的应用运行时间,开发人员可以选择一些关键功能从RAM执行,以获得额外的速度提升。

为了从RAM执行一项功能,开发人员通常需要遵循三个步骤,包括:

1.在功能链接器中创建RAM区域
   
2.指定哪些功能应储存在RAM

3.在启动时将这些功能复制到RAM

让我们详细探讨一下这个过程。


步骤#1:在功能链接器中创建RAM区域



每个编译程序都使用不同的语法来定义MCU内的储存区域。对于本文的示例,我们将使用基于GCC的Code Composer Studio以及与TI C2000系列一起使用的语法,我相信它可以提供一个很好的例子。

当我们修改链接器档以包含将从RAM执行的功能时,需要创建一个内存单元来指定功能将从哪里加载到RAM,以及将加载到RAM中哪个位置。

链接器文件将包含指定重要程序分配的区域,例如:

●cinit

●text

●codestart

●stack

●constants

开发人员需要为其RAM功能创建一个区域,可以使用以下程序代码完成:

embeded18123102

如你所见,这是在RAM中创建一个名为ramfuncs的区域。RAM区域将储存在FLASH A扇区的功能加载,它被指定在RAM区RAML0中运行。然后有一些定义用于指定RAM功能的开始和结束位置以及它们的大小。这些值在步骤#3中就显出重要性了。

步骤#2:指定哪些功能应储存在RAM



一旦在链接器中创建了一个RAM区域来储存指定的功能,我们需要指定功能应该驻留其中的链接器。最常用于执行此操作的方法是使用#pragma。通常,我们应该尽量避免在程序代码中使用#pragma,因为它是依赖于编译程序的。这意味着如果编译程序发生改变,开发人员很可能就必须修改#pragma行。对于我们要达到的目的,这没关系,因为我们无论如何都必须修改一个新的链接器档,我们需要找出正确的语法来指定如何将一个功能放入内存区域。

通常从RAM执行的一组通用功能是与存取和控制Flash相关的功能。原因是当我们想要写入或擦除Flash时,大多数MCU都不允许同时执行Flash程序代码!因此,无论如何我们需要将这些功能放入RAM中。我们可以使用类似如下的程序代码将Flash_Init等功能放入RAM区域:

embeded18123102

你可以从这一语句中看到我们正在使用自定义编译程序标识CODE_SECTION来指定Flash_Init功能应放入链接器中的ramfuncs区域。该语句通常应该直接放在功能定义的上方,以提示任何操作该功能的开发人员要将它放到RAM中。 (这也使我们更容易找到它,如果我们认为该功能不需要放在RAM中的话)。

步骤#3:在启动时将功能复制到RAM

该过程的最后一步是确保在微控制器启动期间将我们想要在RAM中执行的功能真正被复制到RAM中。最简单的方法是使用memcpy。我通常在配置系统频率和中断向量表之后执行这一复制操作,但要在初始化板载外围和应用程序代码之前。我在步骤#1中提到过,我们定义的几个变量会在以后派上用场。它们是RamfuncsRunStart、RamfuncsLoadStart和RamfuncsLoadSize。我们将使用memcpy和这些变量将功能复制到RAM中,按照以下语句:

embeded18123104

就这么简单。完成后,开发人员只需简单调用功能,就像通常那样,该功能就可以在RAM中执行。


总结



总之,当开发人员从Flash执行应用程序代码时,他们可以将这些功能复制到RAM中,以加速执行程序代码的关键部份。从RAM执行一个功能将透过消除可能与从Flash存取指令相关的任何等待状态来提高执行速度。这种额外的提升可确保关键功能以尽可能快的速度执行。正如我们所看到的,一旦你操作一两次后,就会发现将功能加载到RAM中并执行其实非常简单。
 

本文为EET电子工程专辑原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
阅读全文,请先
您可能感兴趣
华为Mate 70系列中的Mate 70搭载了麒麟9010芯片,而Mate 70 Pro/Pro+/RS则首发了麒麟9020芯片。近日,百万粉丝的网红博主@杨长顺维修家 对华为Mate 70 RS进行了拆解……
此次发布的iQOO Neo10系列不仅在性能上进行了全面升级,还在用户体验方面引入了多项创新技术,其中再次采用汇顶科技超声波指纹方案,引发了广泛关注。
今年进博会上,瑞萨展示了不少AI相关的技术。在我们与赖长青的对谈中,他也解读了AI对于瑞萨而言意味着什么...
根据柏能科技集团官网的最新信息,公司已将总部从香港迁往新加坡,成立PC Partner Singapore PTE Ltd,并已于15日在新加坡证券交易所(SGX)成功挂牌上市。
智能嵌入式视觉和机器学习等实时计算密集型应用对能效、硬件级安全性和高可靠性的需求日益增长。同时,不断扩大的航天市场对计算的需求也在不断增加。
目前AI芯片设计人员通常会在系统CPU旁边集成单独的IP模块,以满足AI日益增长的需求。这种方法导致了AI芯片的配置不够理想,因为通常需要依赖三家不同的IP供应商和三套工具链,这不仅使得功率、性能和面积(PPA)指标较差,也增加了适应新算法的难度。
目前,智能终端NFC功能的使用频率越来越高,面对新场景新需求,ITMA多家成员单位一起联合推动iTAP(智能无感接近式协议)标准化项目,预计25年上半年发布1.0标准,通过功能测试、兼容性测试,确保新技术产业应用。
中科院微电子所集成电路制造技术重点实验室刘明院士团队提出了一种基于记忆交叉阵列的符号知识表示解决方案,首次实验演示并验证了忆阻神经-模糊硬件系统在无监督、有监督和迁移学习任务中的应用……
C&K Switches EITS系列直角照明轻触开关提供表面贴装 PIP 端子和标准通孔配置,为电信、数据中心和专业音频/视频设备等广泛应用提供创新的多功能解决方案。
投身国产浪潮向上而行,英韧科技再获“中国芯”认可
今日,长飞先进武汉基地建设再次迎来新进展——项目首批设备搬入仪式于光谷科学岛成功举办,长飞先进总裁陈重国及公司主要领导、嘉宾共同出席见证。对于半导体行业而言,厂房建设一般主要分为四个阶段:设备选型、设
点击蓝字 关注我们安森美(onsemi)在2024年先后推出两款超强功率半导体模块新贵,IGBT模块系列——SPM31 IPM,QDual 3。值得注意的是,背后都提到采用了最新的FS7技术,主要性能
近期,多个储能电站项目上新。■ 乐山电力:募资2亿建200MWh储能电站12月17日晚,乐山电力(600644.SH)公告,以简易程序向特定对象发行A股股票申请已获上交所受理,募集资金总额为2亿元。发
12月18日,珠海京东方晶芯科技举行设备搬入仪式。插播:加入LED显示行业群,请加VX:hangjia188在10月31日,珠海京东方晶芯科技有限公司发布了Mini/Micro LED COB显示产品
有博主基于曝光的信息绘制了iPhone 17系列渲染图,对比iPhone 16系列,17系列最大变化是采用横置相机模组,背部DECO为条形跑道设计,神似谷歌Pixel 9系列,这是iPhone六年来的
来源:IT之家12 月 18 日消息,LG Display 韩国当地时间今日宣布,已将自行开发的“AI 生产系统”投入到 OLED 生产线的日常运行之中,该系统可提升 LG Display 的 OLE
“ 洞悉AI,未来触手可及。”整理 | 美股研究社在这个快速变化的时代,人工智能技术正以前所未有的速度发展,带来了广泛的机会。《AI日报》致力于挖掘和分析最新的AI概念股公司和市场趋势,为您提供深度的
2024年度PlayStation游戏奖今日公布,《宇宙机器人》获得年度最佳PS5游戏,《使命召唤:黑色行动6》获得年度最佳PS4游戏。在这次评选中,《宇宙机器人》获得多个奖项,包括最佳艺术指导奖、最
扫描关注一起学嵌入式,一起学习,一起成长在嵌入式开发软件中查找和消除潜在的错误是一项艰巨的任务。通常需要英勇的努力和昂贵的工具才能从观察到的崩溃,死机或其他计划外的运行时行为追溯到根本原因。在最坏的情
 “ AWS 的收入增长应该会继续加速。 ”作者 | RichardSaintvilus编译 | 华尔街大事件亚马逊公司( NASDAQ:AMZN ) 在当前水平上还有 38% 的上涨空间。这主要得益