不断挑战,极致体验—STM32F769I-DISCO评测(性能测试篇)
扫描二维码
随时随地手机看文章
此为下篇:性能测试
主要测试以下内容:
Coremark
功耗测试
时钟精度测试
硬件Jepg解码测试
网络测试
DSP测试
移植UCOSiii
emwin试跑
上篇请戳:硬件详解篇
五、STM32F769I-DISCO性能测试
(1) CoreMark跑分测试
CoreMark是用来衡量嵌入式系统中中心处理单元(CPU,或叫做微控制器MCU)性能的标准。该标准于2009年由EEMBC组织的Shay Gla-On提出,并且试图将其发展成为工业标准,从而代替陈旧的Dhrystone标准。代码使用C语言写成,包含如下的运算法则:列举(寻找并排序),数学矩阵操作(普通矩阵运算)和状态机(用来确定输入流中是否包含有效数字),最后还包括CRC(循环冗余校验)。
官方称:无论是从嵌入式闪存还是外部存储器来执行代码:216 MHz 处理器频率下性能达到 1082 CoreMark /462 DMIPS。
图43 coremark跑分
测试结果:1074,跟官方宣称的1082相差不大。
(2)功耗测试
- Sleep Mode
运行状态:
- System Running at PLL (216MHz)
- Flash 5 wait state
- Instruction and Data caches ON
- Prefetch OFF
- Code running from Internal FLASH
- All peripherals disabled.
- Wakeup using EXTI Line (USER Button on PA.0 pin)
图44 功耗测试
官方标出的数据:测试结果跟官方的标的参数相差不大。
图45 官方功耗数据
- STOP Mode
运行状态:
- RTC Clocked by LSI
- Regulator in LP mode
- HSI, HSE OFF and LSI if not used as RTC Clock source
- No IWDG
- FLASH in deep power down mode
- Automatic Wakeup using RTC clocked by LSI (after ~20s)
图46 功耗测试
官方标出的数据:
图47 官方功耗数据
- STANDBY Mode
运行状态:
- Backup SRAM and RTC OFF
- IWDG and LSI OFF
- Wakeup using WakeUp Pin (USER Button on PA.0 pin)
图48 功耗测试
官方标出的数据:
图49 官方功耗数据[!--empirenews.page--]
- STANDBY Mode with RTC clocked by LSI
运行状态:
- RTC Clocked by LSI
- IWDG OFF and LSI OFF if not used as RTC Clock source
- Backup SRAM OFF
- Automatic Wakeup using RTC clocked by LSI (after ~20s)
图50 功耗测试
官方标出的数据:
图51 官方功耗数据
- STANDBY Mode with backup SRAM ON
运行状态:
- RTC Clocked by LSI
- IWDG OFF and LSI OFF if not used as RTC Clock source
- Backup SRAM ON
- Automatic Wakeup using RTC clocked by LSI (after ~20s)
图52 功耗测试
官方标出的数据:
图53 官方功耗数据
(3)时钟精度测试
ST的时钟系统也算复杂,时钟源一般有外部高速晶振、内部高速晶振、外部低速晶振和内部低速晶振,又是倍频,分频一系列处理后得到系统时钟,总线时钟,外设时钟。时钟对于MCU而言就像脉搏一样,在恶劣情况下如果出现外部晶振短路的情况会导致MCU无法正常运行。如果MCU应用于安全生产时,有可能造成安全事故。为了应对这一突发状况,ST公司生产的STM32采用双时钟机制,在外部晶振被短路的情况下,转而使用内部RC振荡器作为自己时钟心跳保证系统正常运行。然而RC振荡器并不是非常的准确,我们希望能够在外部晶振恢复正常的情况下继续使用外部晶振。
STM32CubeMX上相当方便地配置系统,这图形化配置软件写得相当好,我爱上她了,从此将主要精力放在关键功能上。
图54 时钟配置
这里我们来测试时钟的准确性,这里需要的工具是一台示波器,代码也比较简单,用STM32CubeMX配置一下即可,采用MCO(PA8)内部时钟输出脚,板子上是测试点TP2,查看一下原理图就能找得到,这里就不多说了。
首先新建一个工程,分别在High Speed Clock(HSE)和Low Speed Clock(LSE)选择Crystal/Ceramic Resonator使能外部高速时钟和外部低速时钟,并勾选Master Clock Output 1
使能系统时钟输出。
图55 配置时钟源
首先要配置好系统时钟,这里的系统时钟需要配置为216MHz使用倍频时间,测试时钟准确度。
图56 系统时钟配置
这里选择MCO输出的源
图57 配置mco输出频率
这里测试了5项:
1:LSE(内部低速晶振时钟)内部低速晶振标定是32KHz,精度是存在一定的偏差的,倘若要做精确的RTC,建议还是采用外部晶振好点。
图58 mco输出低速晶振
2:HSE(外部高速晶振时钟),晶振的本身特性,导致出来的波形有点奇怪。
下图是直接测晶振输出的波形,还算不错。
图59 25M外部晶振
经过MCO时,信号饱和失真了,由于时间问题这里只做频率分析了,测出来的频率为25.02MHz,跟实际标称的频率非常接近了。
图60 mco输出HSE时钟[!--empirenews.page--]
3:HSI(内部高速晶振时钟),此现象跟外部高速晶振时钟一样,测出来的频率为16.34MHz,跟实际标称的16MHz有点出入,内部高速时钟精度还是有很大的误差的。
图61 mco输出HSI
4:PLLCLK-HSE源(系统时钟,由外部高速晶振时钟倍频)生成的系统时钟跟配置出来的216MHz相差不大,外部晶振还是相当准确的。
图62 mco输出HSE生成的系统时钟
5:PLLCLK-HSE源(系统时钟,由内部高速晶振时钟倍频),而用内部高速晶振生成的系统时钟偏差比较大,会出现偏移。
图63 mco输出HSI生成的系统时钟
(4)硬件JPEG解码
硬件JPEG解码是F769I-DISCO这块板子的一大特色,这里就拍个视频对比一下开启硬件JPEG和关闭硬件JPEG后的区别吧。
硬件JPEG测试:
从视频中可以看到,开启了硬件JPEG后,播放的帧率也达到20+fps,关闭硬件JPEG后,能感觉到明显的卡顿。
这里再测试播放1080P视频看看,虽然标定最大支持720P,还是忍不住测试一下。
1080P视频播放:
通过视频可以看到,播放1080P的视频还是可以的,稍微卡一下,肉眼察觉不出来,播放速度慢慢赶不上原画的了。
(5)网络测试
l 以太网测试
一块面向物联网的开发板是少不了以太网的(或者是wifi等无线通信模块),网络最重要的参数就是带宽和吞吐量了,带宽主要受限于以太网硬件支持。
Lwip移植,Socket编程这里就不详细说了,这里主要是测试一下网络吞吐量。
先测试一下官方的例程,官方的例程是一个网页测试,首先先把官方的例程编译然后下载到板子上,用网线连接路由器,让板子复位后,等待板子获取ip地址。
图64 官方lwip测试
然后打开网页在地址栏上输入板子的ip地址,就会显示出下图,是关于STM32F7的一些介绍及一些资源信息。
图65 实验结果
可以实时查看当前的任务的数量,占用的资源。
图66 显示板子运行状态
接下来测一下,网络吞吐量,修改一下官方的代码,用于网络吞吐量的测试。测试主要是网络测试工具自动发送功能,改变发送的数据量和发送的时间间隔,用wireshark抓包软件进行抓包分析。
图67 网络调试工具[!--empirenews.page--]
从wireshark抓出来的包可以看到吞吐量在10k/ms后数据包就不再增加了,达到了极限了,测试效果非常的好。这其中包含很多TCP的复杂处理,慢启动,拥塞处理,TCP窗口等就不一一在这解释了。
图68 wireshark网络分析图
l WI-FI测试
测试wifi得硬件上支持,板子上已经预留了ESP8266-01模块的接口了,买一块wifi模块就可以进行测试了,但是记得接口一定要对着上的,市面上很多wifi模块跟板子的接口是不对应的。
图69 扩展板电路
将模块插入WIFI接口中即可。
图70 esp8266模块实物
接下来就是软件的问题了,TX为PD2,RX为PC12,用的是uart5,RST为PJ14,CH_PD为PH7,RST和CH_PD拉高即可,接下来就是配置串口,数据接收发送处理了。ESP8266那边就不做详细讲解了,用的是AT指令。这里就不做吞吐量测试了,都是一个道理的,只是从有线变成无线了,也受限与串口速率。
图71 测试网络
这里就写了个小应用,将ESP8266收到的信息显示在LCD上。
图72 wifi测试结果
(6)DSP测试
STM32F7在数字信号处理方面有 DSP 指令集,支持诸如单周期乘加指令(MAC),优化的单指令多数据指令(SIMD),饱和算数等多种数字信号处理指令集,在数字信号处理能力方面得到了大大的提升。
测试 STM32F7 的 DSP 库基础数学函数:
arm_cos_f32 和 arm_sin_f32 和标准库基础数学函数:cosf 和 sinf 的速度差别,并在 LCD 屏幕上面显示两者计算所用时间。测试结果表明,使用DSP库后,处理时间缩短了很多。
图73 DSP测试
第二个测试是测试傅里叶变换,在stm32F4上测试结果为0.5ms左右,在F7上测试只需要0.03ms,差距有多大,让数据来说话。
图74 FFT测试
(7)移植ucosiii
移植ucosiii比较简单,直接在ucosiii官网上将STM32746G-Discovery移植好的例子拿来用,非常方便快捷,ucosiii已经实现与各类MCU实现无缝对接了。
用STMcubeMX新建一个工程,配置好LED灯,如下图将ucoiii相关文件一一加到工程中,并添加头文件路径即可。
图75 ucos移植
修改启动文件的中断服务函数,改用ucosiii的内部中断服务函数。
图76 修改源码
在主函数中让LED以1HZ的频率闪烁,验证ucoiii已经跑起来了。
图77 添加LED驱动
移植成功后就可以进行下一步开发了,创建任务,尽情DIY吧!
(8)STemwin试跑
官方已经移植好STemwin了,但是没有跑官方测试Demo,这里给大家放个测试视频。
stemwin试跑:
资源:
开发板介绍:http://pan.baidu.com/s/1geASu1l
原理图:http://pan.baidu.com/s/1hscA6kG
Hal固件:http://pan.baidu.com/s/1c9WPwM
STM32F769I-DISCO ucosiii:http://pan.baidu.com/s/1hr725mO
串口助手:http://pan.baidu.com/s/1cEaA3W
MDK:http://pan.baidu.com/s/1qYnjCsc
IAR:http://pan.baidu.com/s/1kUZMCNP
STM32F769I-DISCO coremark:http://pan.baidu.com/s/1o8Mz9hg
参考手册:http://pan.baidu.com/s/1o7VCIj4
本文系21ic原创,未经许可禁止转载





