广告

加快基于Flash的嵌入式应用的三大步骤

时间:2018-12-31 作者:Jacob Beningo,嵌入式软件开发咨询师、顾问和教育工作者 阅读:
大多数现代嵌入式软件应用都是从Flash(Flash)存取和执行的。为了加快基于Flash的应用运行时间,开发人员可以选择一些关键功能从RAM执行,让速度更大幅提升......
EETC https://www.eet-china.com

大多数现代嵌入式软件应用都是从Flash(Flash)存取和执行的。Flash为基于微控制器(MCU)的应用提供了便宜且快速的储存介质。这些应用通常都是实时的,对运行时间和确定性行为有严格要求。虽然Flash速度已经很快,但还是不如从RAM执行程序代码那么快。为了加快基于Flash的应用运行时间,开发人员可以选择一些关键功能从RAM执行,以获得额外的速度提升。tCWEETC-电子工程专辑
tCWEETC-电子工程专辑
为了从RAM执行一项功能,开发人员通常需要遵循三个步骤,包括:tCWEETC-电子工程专辑
tCWEETC-电子工程专辑
1.在功能链接器中创建RAM区域tCWEETC-电子工程专辑
    tCWEETC-电子工程专辑
2.指定哪些功能应储存在RAMtCWEETC-电子工程专辑
tCWEETC-电子工程专辑
3.在启动时将这些功能复制到RAMtCWEETC-电子工程专辑
tCWEETC-电子工程专辑
让我们详细探讨一下这个过程。tCWEETC-电子工程专辑
tCWEETC-电子工程专辑

tCWEETC-电子工程专辑
步骤#1:在功能链接器中创建RAM区域

tCWEETC-电子工程专辑
tCWEETC-电子工程专辑
每个编译程序都使用不同的语法来定义MCU内的储存区域。对于本文的示例,我们将使用基于GCC的Code Composer Studio以及与TI C2000系列一起使用的语法,我相信它可以提供一个很好的例子。tCWEETC-电子工程专辑
tCWEETC-电子工程专辑
当我们修改链接器档以包含将从RAM执行的功能时,需要创建一个内存单元来指定功能将从哪里加载到RAM,以及将加载到RAM中哪个位置。tCWEETC-电子工程专辑
tCWEETC-电子工程专辑
链接器文件将包含指定重要程序分配的区域,例如:tCWEETC-电子工程专辑
tCWEETC-电子工程专辑
●cinittCWEETC-电子工程专辑
tCWEETC-电子工程专辑
●texttCWEETC-电子工程专辑
tCWEETC-电子工程专辑
●codestarttCWEETC-电子工程专辑
tCWEETC-电子工程专辑
●stacktCWEETC-电子工程专辑
tCWEETC-电子工程专辑
●constantstCWEETC-电子工程专辑
tCWEETC-电子工程专辑
开发人员需要为其RAM功能创建一个区域,可以使用以下程序代码完成: tCWEETC-电子工程专辑
tCWEETC-电子工程专辑
embeded18123102tCWEETC-电子工程专辑
tCWEETC-电子工程专辑
如你所见,这是在RAM中创建一个名为ramfuncs的区域。RAM区域将储存在FLASH A扇区的功能加载,它被指定在RAM区RAML0中运行。然后有一些定义用于指定RAM功能的开始和结束位置以及它们的大小。这些值在步骤#3中就显出重要性了。tCWEETC-电子工程专辑
tCWEETC-电子工程专辑
tCWEETC-电子工程专辑

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

tCWEETC-电子工程专辑
tCWEETC-电子工程专辑
一旦在链接器中创建了一个RAM区域来储存指定的功能,我们需要指定功能应该驻留其中的链接器。最常用于执行此操作的方法是使用#pragma。通常,我们应该尽量避免在程序代码中使用#pragma,因为它是依赖于编译程序的。这意味着如果编译程序发生改变,开发人员很可能就必须修改#pragma行。对于我们要达到的目的,这没关系,因为我们无论如何都必须修改一个新的链接器档,我们需要找出正确的语法来指定如何将一个功能放入内存区域。tCWEETC-电子工程专辑
tCWEETC-电子工程专辑
通常从RAM执行的一组通用功能是与存取和控制Flash相关的功能。原因是当我们想要写入或擦除Flash时,大多数MCU都不允许同时执行Flash程序代码!因此,无论如何我们需要将这些功能放入RAM中。我们可以使用类似如下的程序代码将Flash_Init等功能放入RAM区域:tCWEETC-电子工程专辑
tCWEETC-电子工程专辑
embeded18123102tCWEETC-电子工程专辑
tCWEETC-电子工程专辑
你可以从这一语句中看到我们正在使用自定义编译程序标识CODE_SECTION来指定Flash_Init功能应放入链接器中的ramfuncs区域。该语句通常应该直接放在功能定义的上方,以提示任何操作该功能的开发人员要将它放到RAM中。 (这也使我们更容易找到它,如果我们认为该功能不需要放在RAM中的话)。tCWEETC-电子工程专辑
tCWEETC-电子工程专辑
步骤#3:在启动时将功能复制到RAMtCWEETC-电子工程专辑
tCWEETC-电子工程专辑
该过程的最后一步是确保在微控制器启动期间将我们想要在RAM中执行的功能真正被复制到RAM中。最简单的方法是使用memcpy。我通常在配置系统频率和中断向量表之后执行这一复制操作,但要在初始化板载外围和应用程序代码之前。我在步骤#1中提到过,我们定义的几个变量会在以后派上用场。它们是RamfuncsRunStart、RamfuncsLoadStart和RamfuncsLoadSize。我们将使用memcpy和这些变量将功能复制到RAM中,按照以下语句:tCWEETC-电子工程专辑
tCWEETC-电子工程专辑
embeded18123104tCWEETC-电子工程专辑
tCWEETC-电子工程专辑
就这么简单。完成后,开发人员只需简单调用功能,就像通常那样,该功能就可以在RAM中执行。tCWEETC-电子工程专辑
tCWEETC-电子工程专辑

tCWEETC-电子工程专辑
总结

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

EETC https://www.eet-china.com
本文为EET电子工程专辑 原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
您可能感兴趣的文章
  • 行AI之术,察腠理之疾 《扁鹊见蔡桓公》相信大家小时候都背过,蔡桓公讳疾忌医,最后导致病入骨髓、体痛致死。时至今日,人们虽然不再讳疾忌医,但医疗资源紧缺让大家只能把大量时间耗费在大医院排队中。在疾病之初,症状初显甚至未显之时,能否在家中通过自查发现呢?不是每家都可以有神医扁鹊,但未来AI和先进半导体技术的加持下,每家都可以有精准而方便的家用医疗器械……
  • 六大技术支柱, 英特尔开启多元化计算时代的一把秘钥 只用了不到半年的时间,Agilex FPGA就成为“六大技术支柱”落地的最佳载体,英特尔强大的系统研发和整合能力可见一斑。
  • 青城山下问医道:AI医疗“硬”创新之难,堪比修仙? 说到青城山下,你可能说着说着就唱出来了。这是中国民间传说《白蛇传》中白素贞修仙的地方,“洞中千年修此身”后,白娘子就来到了苏杭地区,与她做大夫的相公许仙一起开药铺,悬壶济世。看来青城山除了是道教名山,还和医道有着渊源,近日在青城山脚下举办的第三届 “青城山中国IC生态高峰论坛”,就以智慧医疗电子为主题,聚集了生态链各个环节的厂商、机构代表和精英人士……
  • 新型双条件玻璃破碎检测方案 玻璃破碎检测方案已经发展一定年头,主要用来检测家庭住宅或商业楼宇门窗玻璃的破损情况。此类方案也可归类为一种监控设备,用以提高家庭或商业环境的安全性,避免非法进入。贝能国际以此需求为牵引,开发出全新双条件玻璃破碎检测方案,同时检测敲击玻璃时发出的低频声音、玻璃破碎时发出的高频声音以及玻璃破碎时带来的压力变化,一举解决市面上现有方案的缺陷。
  • 美将多家中国超算及半导体研究机构加入实体清单 美国商务部6月21日正式将五个中国实体列入美国黑名单,包括了中科曙光、无锡江南计算技术研究所、海光公司、成都海光集成电路和成都海光微电子技术以及这五个实体的许多别名。这是继上个月将华为公司列入“实体清单”后,美国对中国企业採取的又一起单边制裁行动。美国商务部声称,因为担心这四家中国公司……
  • 有关麒麟810和华为nova 5,有些事华为没告诉你 “因为夜的黑,光才被衬托得更美。”这话其实是用来形容华为nova 5系列手机的拍照能力的,不过在现如今这个国际环境大背景下,倒似更有深意了,也更符合华为现在的处境。华为消费业务手机产品线总裁何刚在华为nova 5系列产品发布会上,说出这句话的时候,发布会所在地的武汉还在下着小雨。
相关推荐
    广告
    近期热点
    广告
    广告
    广告
    可能感兴趣的话题
    广告