打印
[STM32F7]

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

[复制链接]
2281|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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就选择这个选项,不再重复)后,(见下图),你下载目标代码就会出错。




       C/C++Compiler中Optiimization

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



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



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




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

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

  /* Configure the system clock */
  SystemClock_Config();

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART3_UART_Init();
SCB_EnableICache();  //挪个顺序
SCB_EnableDCache();






我跑了1092分,你呢?

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



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





波特率9600

STM32F722ZE_IAR Coremark.rar

14.31 KB

沙发
烟花绽放| | 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 | 只看该作者

使用特权

评论回复
5
kkzz| | 2017-3-11 22:52 | 只看该作者
上图看看测试结果怎么样

使用特权

评论回复
6
sky.sun.zz|  楼主 | 2017-3-12 07:28 | 只看该作者
kkzz 发表于 2017-3-11 22:52
上图看看测试结果怎么样

在1楼3、的插图呀

使用特权

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

本版积分规则

41

主题

730

帖子

13

粉丝