让下一代智能互联嵌入式应用开发更简化

时间:2018-07-24来源:网络

a) 如果被Cortex-M7处理器更新过的内存需要被另一个外设通过总线访问,需要先清缓存(clean cache)以保证外设看到最新的数据。

b) 如果内存被外设通过总线更新,在Cortex-M7处理器访问该内存前,需要先做一个缓存无效(cache invalidate),这样在读取该位置的内容时,处理器将直接从主存储器中获取最新的数据。

Cortex-M7处理器支持多种浮点支持选项,允许没有FPU,只包含单精度FPU或者同时包含单精度和双精度FPU。如果应用程序可以从双精度浮点单元支持中获益,该应用程序应该重新编译以利用双精度FPU。即使应用程序只使用单精度浮点运算,重新编译为Cortex-M7处理器的代码也是有益的,因为在Cortex-M7的FPU基于FPv5,而Cortex-M4处理器的FPU的是FPv4。FPv5增加了额外的浮点处理指令,有助于目标应用程序加速浮点数据处理。

程序代码更改

有许多可能需要更改程序代码的潜在领域。由于处理器具有更高的性能,一些程序代码可能需要由于执行速度变快进行适当的调节。最常见的例子是使用硬编码(hard code)的循环来实现延迟的应用程序,必须调整原本的循环次数以确保延时。

从一个微控制器设备迁移到另一个时,系统内存映射经常发生变化。另外,Cortex-M7处理器初始矢量表并不是必须从地址0x00000000开始。如果应用程序代码假设初始向量表地址为0,用户可能需要更新代码,以便能够通过读取Vector Table Offset寄存器来确定初始矢量表的位置。

由于在Cortex-M7处理器的多总线接口和更强大的写缓存,用户可能会发现有必要在程序代码中插入额外的内存barrier指令。内存barrier的使用指南请参阅“ARM application note AN321 – ARM Cortex-M Programming Guide to Memory Barrier Instructions”。在Cortex-M4处理器上,由于处理器流水线本身的特性,忽略内存barrier指令并不会造成任何问题。但在Cortex-M7处理器上,对内存barrier的需求是很严格的。

行动起来

Cortex-M7不仅继承了Cortex-M系列处理器的特性,如能源效率、高性能、易用性和更小的代码,它专门设计的灵活出色的内存和连接选项使得它特别适合于汽车、物联网和工业连接市场。在Cortex-M7处理器发布之后,基于它的MCU已经相继推出:

-- 意法半导体于2014年10月在ARM TechCon上发布的STM32 F7系列。

-- Atmel公司在2015 CES上发布的针对连接性和通用工业应用AM E70和SAM S70系列

-- Atmel公司在2015 CES上发布的SAM V70和V71系列已取得汽车工业合格证,其采用Cortex-M7 DSP扩展,针对信息娱乐连接和音频应用。

-- NXP也公开宣布了采用Cortex-M7的Kinetis KV5x,针对高性能电源转换、马达控制和工业自动化。

由于ARM Cortex-M4和Cortex-M7处理器在架构上有很多相似之处,确保了大部分应用程序代码可以直接迁移。软件开发人员可以开始动手,以确保他们的应用程序都适合于下一代智能连接嵌入式设备。迁移需要用户进行一些适应性修改。开发者可以根据从ARM Cortex-M4处理器到Cortex-M7处理器的应用程序迁移 - 软件开发人员指南( “Migrating Applications from an ARM Cortex-M4 Processor to a Cortex-M7 Processor - A Software Developer’s Guide”)”白皮书进一步了解迁移过程的细节。该白皮书可以在ARM Connected Community中找到,并提供了深入的技术讨论。

1 2

关键词: 智能互联 嵌入式 简化

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版