STM32

STM32是STMicroelectronics(意法半导体)推出的一系列基于ARM Cortex-M内核的32位微控制器(MCU)产品。这些微控制器提供了广泛的产品系列,覆盖了多种不同的性能和功能需求,适用于各种应用领域,包括工业控制、汽车电子、消费类电子、医疗设备等。

STM32系列微控制器以其高性能、低功耗、丰富的外设接口和灵活的开发工具而闻名。它们通常具有丰富的存储器、多种通信接口(如UART、SPI、I2C、CAN等)、模拟数字转换器(ADC)、定时器、PWM输出等功能,以满足不同应用场景下的需求。

STM32微控制器通常使用标准的ARM Cortex-M内核,包括Cortex-M0、M0+、M3、M4和M7等,这些内核具有不同的性能和功耗特性,可根据具体应用的需求进行选择。此外,STM32系列还提供了多种封装和引脚配置,以满足不同尺寸和集成度的要求。

STMicroelectronics为STM32系列提供了丰富的开发工具和支持资源,包括基于ARM开发环境的集成开发环境(IDE)、调试器、评估板和参考设计等。这些工具和资源有助于开发人员快速开发和部署他们的应用,并提供了全面的技术支持和文档资料,帮助用户充分发挥STM32微控制器的性能和功能优势。

前言

在客户使用基于Cortex-M7内核的STM32F7xx实际测试中,发现同等主频下基于Cortex-M4内核的STM32F4xx芯片执行同样一段简单程序在时间上还要快于STM32F7xx。这个会影响到客户切换到STM32F7xx的信心,也对ST以及ARM宣传上Cortex-M7内核执行时间远快于Cortex-M4内核的说法提出质疑,本文将针对具体案例分析这一情况的产生以及解决办法。

问题描述

客户测试复杂程序运行时间,比如同样180MHz主频下,STM32F7xx执行Coremark测试程序时间远小于STM32F4xx的执行时间;也就是STM32F7xx的性能更佳,运算执行效率更好。但当客户顺序执行程序,尤其是简单程序时发现STM32F7xx执行时间大于STM32F4xx的执行时间,比如运行下面的同样的测试代码,就有明显差距:

volatile uint16_t i;
static volatile uint16_t j = 0;
i = 0;
while(i<300)
{
i++;
}
if(j < 100)
{
j ++;
}
else
{
j = 0;
}

为方便量化时间,使用Timer2计数方式对这段时间进行计数,Timer2运行在90MHz,向上计数,Test_Counter数据用于输出计数数值,增加后代码如下:

volatile uint16_t i;
static volatile uint16_t j = 0;
TIM2->CNT = 0;
__HAL_TIM_ENABLE(&htim2);
i = 0;
while(i<300)
{
i++;
}
if(j < 100)
{
j ++;
}
else
{
j = 0;
}
__HAL_TIM_DISABLE(&htim2);
Test_Counter = __HAL_TIM_GET_COUNTER(&htim2);

通过上面的修改后测试下来,Test_Counter数据分别为:

STM32F446 数据为 1543
STM32F746 数据为 1836
如果使用Keil自带的States cycles计算方法得到如下数据,后面会按照这个来计算执行时间数据。
STM32F446 数据为 3009
STM32F746 数据为 3635

RMW对 STM32F7xx内核运行速度影响的分析

原因分析:

上面的测试都是在使用了Cache以及ART加速方法测得,如果针对STM32F7xx的性能优化可以参考AN4667 "STM32F7 Series systemarchitecture and performance"这篇应用文档的描述,本例已经对文档描述部分做过优化,但问题依然是STM32F7xx速度慢于STM32F4xx。两颗芯片运行同样代码,比较两颗芯片汇编代码也是相同的:
LDRH r2,[sp,#0x00]
ADDS r2,r2,#1
STRH r2,[sp,#0x00]
LDRH r2,[sp,#0x00]
CMP r2,r3
BCC 0x00000128

通过查看ARM Cortex-M7内核文档发现下面描述:

RMW对 STM32F7xx内核运行速度影响的分析

反映到本例中发现定义的i数据为16-bit数据,同样也在汇编代码上发现了STRB这个汇编代码;这样在RMW(read-modify-write)机制下,当定义为byte以及half-word数据时将有一个先读取数据,修改后再写入数据的过程,这个读取-修改-写入的过程正是能够影响到内核执行效率的问题点,如果定义为32-bit就避免了这个问题的发生。

问题解决:

按照文档说明,我们将16-bit定义数据,改为32-bit的定义数据,即:
volatile uint32_t i;
static volatile uint16_t j = 0;
生成的汇编代码如下:
LDR r0,[sp,#0x00]
ADDS r0,r0,#1
STR r0,[sp,#0x00]
CMP r0,r1
BCC 0x08001F28

测试下来结果如下:

STM32F446 数据为 2102
STM32F746 数据为 1807
可以看到不管是STM32F4xx还是STM32F7xx,当数据定义为32-bit时都有显著的速度提升,当然STM32F7xx的提升更加明显,同样测试条件下STM32F7xx执行时间小于STM32F4xx的执行时间。

因为32-bit数据定义会增加内存,并且有时候定义为byte或halfword更方便,还需要提升速度的话我们看到同样是内核文件给出的说明,可以将RMW机制屏蔽掉:

RMW对 STM32F7xx内核运行速度影响的分析

实际上就是对CM7_DTCMCR寄存器的第1位写0,即可以在程序中有下面的操作:
__IO uint32_t * DTCM_CR =(uint32_t*)(0xE000EF94);
* DTCM_CR &= 0xFFFFFFFD; /* Disable read-modify-write */
禁止RMW后测试下来数据如下:
16-bit定义数据STM32F746 测试cycles数据为 3022
32-bit定义数据STM32F746 测试cycles数据为 1808
可以对比上面的测试数据也可以看到当禁止RMW后STM32F7xx性能也是优于STM32F4xx的。具体测试数据如下:

RMW对 STM32F7xx内核运行速度影响的分析

结论:

需要提升STM32F7xx执行时间,发挥出最大效能时,请参考AN4667,同时需要注意RMW对内核性能发挥的影响。

来源:STM32单片机微信公众号

围观 322

跨多重电子应用领域、全球领先的半导体供应商意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)新推出的两款立即可用的原型板大幅削减LoRaWAN™ 、Sigfox、WM-Bus、6LoWPAN等低功耗广域物联网(LPWAN)技术的评估成本。
新电路板搭载当前市面上销售的尺寸最小且功耗最低的LoRaWAN模块。
电路板尺寸不大于13x12mm,待机功耗在1.2µA以内。

我们的两款LoRa板子都通过LoRaWAN认证,并完全符合美国、欧洲、俄罗斯、印度等使用860-930MHz频段的国家的无线通信法规。除工业标准的通信协议外,板子还支持LPWAN物联网硬件远距离通信专有协议,例如智能表计、警报系统、跟踪设备、定位设备、环境传感器和身体活动传感器远距离连接通信。

B-L072Z-LRWAN1 STM32 LoRa® 探索套件基于Murata®开发的集成STM32L072CZ微控制器(MCU)和Semtech Sx1276收发器的一体化开放式模块,该模块的LoRa® 调制解调器具有超长距离展频通信功能和优异的抗干扰性,同时最大限度降低工作电流。

因为模块是开放的,所以开发人员能够访问STM32L072微控制器及其外设,例如ADC、16位定时器、LP-UART、I2C、SPI和USB 2.0 FS(支持BCD和LPM),在设计应用过程中可以使用STM32L0 HAL和LL嵌入式软件库,从STM32 Nucleo生态系统或种类繁多的Arduino™扩展板中选择扩展板,以进一步扩大电路板的功能。

B-L072Z-LRWAN1 套件包括
板载调试器
64引脚STM32 Nucleo morpho连接器
Arduino兼容连接器和电池插座

准许用户访问完全免费的开发生态系统,包括
MDK-ARM集成开发环境(IDE)
STM32CubeMX配置器和软件工具
以及意法半导体的LoRaWAN协议栈(I-CUBE-LRWAN)
2017年第一季度末,这块板子还将提供支持Sigfox的协议栈。

I-NUCLEO-LRWAN1准许用户访问完全免费的开发生态系统,包括 (25.00美元)是一块支持STM32 Nucleo或Arduino开发板的扩展板,只要插到主板上,即可立即着手开发全功能的LoRa和/或FSK/OOK(频移键控/二进制开关键控)连接应用。这块电路板集成USI®的LoRaWAN模块以及STM32L052T8微控制器和Semtech Sx1272收发器。

USI模块预装有助于简化设计同时节省编程时间的AT指令栈。
I-CUBE-LRWAN协议栈
免费使用。
另外一个产品优势是,为协助物联网(IoT)应用开发,
I-NUCLEO-LRWAN1评估板还配
有意法半导体的LIS2DS12 3轴加速度计
LPS22HB MEMS压力传感器
HTS221温湿传感器

B-L072Z-LRWAN1探索套件和I-NUCLEO-LRWAN1扩展板即日起接受经销商订货,并于本月底前在意法半导体官网st.com上架销售。

❀❀❀关于LoRa套件的详情和相关信息下载链接,请点击“阅读全文”或至中文官网(www.stmcu.com.cn)的“关于STM32”的“新闻中心”版块。

围观 1110

页面

订阅 RSS - STM32