打印
[STM32F7]

【NucleoF767ZI-评测】指令执行速度测试

[复制链接]
1343|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wdzfd|  楼主 | 2016-8-14 15:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wdzfd 于 2016-8-14 15:57 编辑

NucleoF767ZI-评测】指令执行速度测试
首先感谢ST公司和21IC搞的本次活动, 这次板载的STM32F767ZI-144应该是STM32 Nucleo-144板中MCU功能最强大的,
该CORTEX-M7内核提供了指令cache和数据cache, 还有ITCM和DTCM。
下面就是一个简单的闪灯程序来测试下指令执行速度, 具体步骤如下:
1. 安装mdk5软件,  下载 stm32cube_fw_f7_v140.zip固件包, 下载地址ST论坛之前有网友评测时提供了,请自行查看.
2. 解压stm32cube_fw_f7_v140.zip包内的STM32Cube_FW_F7_V1.4.0\Drivers
    和STM32Cube_FW_F7_V1.4.0\Projects\STM32F767ZI-Nucleo下面所有内容.
3. 用mdk软件打开STM32Cube_FW_F7_V1.4.0\Projects\STM32F767ZI-Nucleo\Examples
     \GPIO\GPIO_IOToggle\MDK-ARM\Project.uvprojx 下工程.

4. 把main.c文件HAL_Delay(100);延迟修改为下面函数.
/* -3- Toggle IO in an infinite loop */
  while (1)
  {
    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
    /* Insert delay 100 ms */
    //HAL_Delay(100);
                   delay();
  }

void delay(void){
  unsigned int i,j;
  for(i=1000;i>0;i--)
    for(j=216000;j>0;j--);
}

5. 编译下载到NucleoF767ZI板上可以看到大概2秒钟闪一次,
    按时钟216M计算时间差不多调用一次延迟函数的时间为1秒的。
6. 修改STM32F7xx_HAL_CONFIG.H文件中下面两项
#define  PREFETCH_ENABLE              0U
#define  ART_ACCLERATOR_ENABLE        0U /* To enable instruction cache and prefetch */

7. 编译下载到NucleoF767ZI板上可以看到大概2秒钟闪一次, 发现速度没有明显变化, 不解中。
8. 使用Keil 自定义sct分散加载文件, 我们把延迟函数定义到ITCM, 如下图示:


9.自定义sct分散加载文件内容如下:
;*************************************************************
; *** Scatter-Loading Description Filegenerated by uVision ***
;*************************************************************
LR_IROM1 0x08000000 0x00200000  {   
;load region size_region
ER_IROM1 0x08000000 0x00200000
{
   ; load address = executionaddress
   *.o (RESET, +First)  
   *(InRoot$$Sections)
   .ANY (+RO)  }   
   ER_ITCM 0x00000000 0x00002000 {  
  ; load address = executionaddress  
  .ANY (.code_TCM)   
   }  
   RW_IRAM1 0x20000000 0x00080000 {  
  ;  RW data  
  .ANY (+RW +ZI)  
  }
}
10. 加如下编译指示把延迟函数void delay(void)定义到ITCM:
__attribute__((__section__(".code_TCM")))
调试时可以看到程序指针是跳到
0x00000004开始循环的。
11. 编译下载到NucleoF767ZI板上可以看到大概2秒钟闪一次. 发现速度还是没有明显变化,求高手解释下为什么,
难道是
STM32F767ZI芯片在FLASH上执行已经达到最高速度了?




沙发
mmuuss586| | 2016-8-14 18:27 | 只看该作者
谢楼主分享;、

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

129

帖子

0

粉丝