[STM32F7] [STM32F7] NUCLEO-F722ZE评测(5)如何在IAR中成功移植Coremark

[复制链接]
2631|5
 楼主| sky.sun.zz 发表于 2017-3-11 14:43 | 显示全部楼层 |阅读模式
本帖最后由 sky.sun.zz 于 2017-3-11 17:41 编辑

[STM32F7] NUCLEO-F722ZE评测(5)如何在IAR中成功移植Coremark

    这几天被这个STM32F722ZE在IAR环境中移植Coremark搞得焦头烂额,相信许多网友都有同感。为什么别人能够移植成功,而我却屡屡失败呢?本菜鸟遇到没有进展的项目总是不肯放弃。经过几天不断摸索,总结出在IAR7.80.4环境下成功移植Coremark的方法,不敢独享,在此与各位分享。
1、   首先,这片STM32F722ZE有点古怪,当你在把C/C++Compiler中Optiimizations的优化级别选择最高时(注:本次移植我们的Optiimizations就选择这个选项,不再重复)后,(见下图),你下载目标代码就会出错。


compiler.png

       C/C++Compiler中Optiimization

在STM32 ST-LINK Utility 4.0中你被告知FLASH的扇区2被保护无法删除。见下图:虽然我们并未对该扇区施行写保护设置,这片芯片为何如此抗拒不得而知。

erase.jpg

解决方法:在IAR的Dubgger-Download中选择Suppress download.

download.png

2、堆栈应该设置大点,我的设置如下:

stack.png


3、在STM32CubeMX配置中,我们理所当然要使能I CACHE和D CACHE,当Optiimizations优化选项未达到最高等级时,代码能够运行,但达不到最高分。当Optiimizations优化选项选择最高时,串口助手一点反应都没有。经过单步调试发现,在初始化过程中,对串口的初始化竟然跳过,认为系统未配置USART口。实在百思不得其解。经过反复跟踪调试,最后发现是STM32CubeMX为你埋雷:在初始化函数中对ICACHE和D CACHE的初始化必须放在初始化串口代码的后面。这个难缠的STM32F722ZE Core mark最后终于搞定。

下面代码的顺序可能曾经消耗了你几个不眠之夜。
  1. HAL_Init();

  2.   /* Configure the system clock */
  3.   SystemClock_Config();

  4.   /* Initialize all configured peripherals */
  5.   MX_GPIO_Init();
  6.   MX_USART3_UART_Init();
  7. SCB_EnableICache();  //挪个顺序
  8. SCB_EnableDCache();




COREMARK.png

我跑了1092分,你呢?

4、在IAR 7.80.4中STM32F722ZE其实还未登堂,请用STM32F722ZC替代。FIASH长度短1半,凑合着用了。


722zc.png
读完本贴,你必定也已经搞定STM32F722ZE Core mark了。祝你成功!





波特率9600

STM32F722ZE_IAR Coremark.rar

14.31 KB, 下载次数: 17

烟花绽放 发表于 2017-3-11 16:25 | 显示全部楼层
表示我是直接生成.bin文件拷贝进去的,,然后测试出来的和你的差不多
 楼主| sky.sun.zz 发表于 2017-3-11 16:36 | 显示全部楼层
烟花绽放 发表于 2017-3-11 16:25
表示我是直接生成.bin文件拷贝进去的,,然后测试出来的和你的差不多

生成.bin文件拷贝进去,这片F722ZE可能也要先删除一下FLASH.
kkzz 发表于 2017-3-11 22:46 | 显示全部楼层
kkzz 发表于 2017-3-11 22:52 | 显示全部楼层
上图看看测试结果怎么样
 楼主| sky.sun.zz 发表于 2017-3-12 07:28 | 显示全部楼层
kkzz 发表于 2017-3-11 22:52
上图看看测试结果怎么样

在1楼3、的插图呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

732

帖子

13

粉丝
快速回复 在线客服 返回列表 返回顶部