12下一页
返回列表 发新帖我要提问本帖赏金: 2.00元(功能说明)

[STM32F4] 【NUCLEO-F412ZG】移植Coremark失败,求解---(问题已解决)

[复制链接]
2771|23
 楼主| 数码小叶 发表于 2016-12-14 11:05 | 显示全部楼层 |阅读模式
本帖最后由 数码小叶 于 2016-12-15 10:58 编辑

本来想用NUCLEO-F412ZG移植Coremark跑分的,可是两天一直没成功,所以还是把过程发出来,希望有人能看出哪不正确,感觉思路已经陷入死胡同了,问题不解决一直卡着。。。。

开始用的串口一直没输出,于是今天才用的是板载的STLINK 虚拟串口。
在确认工程可以正常输出的情况下,
QQ截图20161214102620.png

然后开始移植:



将需要的6个.c文件和.h文件复制到工程下,并添加进工程
QQ截图20161214103052.png


然后开始编辑Core_portme.c 文件。
首先复制原main中的初始化函数到Core_portme.c 中
QQ截图20161214103447.png


然后再把main中相关函数复制过来。


修改start_time函数如下


  1. void start_time(void)
  2. {
  3.         Tick = 0;
  4.   SysTick_Config(SystemCoreClock/1000);
  5. };


修改stop_time函数如下
void stop_time(void)
{
        SysTick->CTRL &=SysTick_Counter_Disable;
  SysTick->VAL = SysTick_Counter_Clear;      
}

修改CORE_TICKS get_time函数如下
  1. CORE_TICKS get_time(void)
  2. {
  3.         CORE_TICKS elapsed =(CORE_TICKS)Tick;
  4.   return elapsed;
  5. }

修改stm32f4xx_it.h中的SysTick_Handler函数如下
  1. void SysTick_Handler(void)
  2. {
  3.     extern __IO uint32_t Tick;
  4.     Tick++;
  5. }




再屏蔽相关宏定义
QQ截图20161214104811.png


添加宏定义
QQ截图20161214104959.png

设置迭代次数
QQ截图20161214105212.png

然后把工程中的main删除,编译,无错后下载,可是就是没输出。。。。。。。。。



WAMCNCN 发表于 2016-12-14 11:25 | 显示全部楼层
按照那个移植文档应该没问题,仔细检查下
 楼主| 数码小叶 发表于 2016-12-14 11:28 | 显示全部楼层
WAMCNCN 发表于 2016-12-14 11:25
按照那个移植文档应该没问题,仔细检查下

我觉得我肯定是哪掉坑里了,而我自己在里面发掘不了
WAMCNCN 发表于 2016-12-14 11:30 | 显示全部楼层
你是用cubemx生成的工程吗
paderboy 发表于 2016-12-14 13:32 | 显示全部楼层
按照教程一步一步检查下。。。

肯定是哪个环节疏漏了。。。。多检查几次对比下。。 这是我412 IAR下的coremark 跑分结果。。。

stm32f412zg-coremark-10.png

 楼主| 数码小叶 发表于 2016-12-14 14:11 | 显示全部楼层
paderboy 发表于 2016-12-14 13:32
按照教程一步一步检查下。。。

肯定是哪个环节疏漏了。。。。多检查几次对比下。。 这是我412 IAR下的core ...

我现在完全发现不了哪个环节出错了。。
paderboy 发表于 2016-12-14 16:38 | 显示全部楼层
数码小叶 发表于 2016-12-14 14:11
我现在完全发现不了哪个环节出错了。。

把你工程发一份上来,看看,哪出的错。。
 楼主| 数码小叶 发表于 2016-12-14 16:50 | 显示全部楼层
paderboy 发表于 2016-12-14 16:38
把你工程发一份上来,看看,哪出的错。。

好的
121.part01.rar (4 MB, 下载次数: 5)
121.part02.rar (2.16 MB, 下载次数: 4)

火山LF 发表于 2016-12-14 17:00 | 显示全部楼层
小叶,我是那个帮你顶上去的孩纸
 楼主| 数码小叶 发表于 2016-12-14 17:01 | 显示全部楼层
火山LF 发表于 2016-12-14 17:00
小叶,我是那个帮你顶上去的孩纸

你是个好孩子
paderboy 发表于 2016-12-14 19:28 | 显示全部楼层
哥们帮你找的问题了,我就下我修该的截图帖出来,您自己对比下看看。。。
你原来的工程里这里是默认的200 和400 太小了。。。。

QQ截图20161214191946.png



然后这里也太小了,至少要10000。。你原来的只有1200

QQ截图20161214191958.png

这是安装你发上来的工程修改成功后的截图。。。不过跑分不理想。。。
QQ截图20161214192022.png

看你是配置的内部晶振。。。。

QQ截图20161214192038.png

最后把修改好的工程,上传上来了。。。你自己再看看。。。 数码小叶-Coremark.rar (550.96 KB, 下载次数: 32)

打赏榜单

数码小叶 打赏了 2.00 元 2016-12-15
理由:太感谢了!

huaiqiao 发表于 2016-12-14 20:48 | 显示全部楼层
paderboy 发表于 2016-12-14 13:32
按照教程一步一步检查下。。。

肯定是哪个环节疏漏了。。。。多检查几次对比下。。 这是我412 IAR下的core ...

你是用iar还是keil啊。
之前我用keil也好像没成功,最后放弃了。。。。。
huaiqiao 发表于 2016-12-14 20:49 | 显示全部楼层
paderboy 发表于 2016-12-14 19:28
哥们帮你找的问题了,我就下我修该的截图帖出来,您自己对比下看看。。。
你原来的工程里这里是默认的200  ...

我知道了,原来是堆和栈,太小了所致。。。。
paderboy 发表于 2016-12-14 21:18 | 显示全部楼层
huaiqiao 发表于 2016-12-14 20:48
你是用iar还是keil啊。
之前我用keil也好像没成功,最后放弃了。。。。。

iar keil都没问题。是没移植好。多注意细节。。。往往就是小细节,才失败的。。
paderboy 发表于 2016-12-14 21:19 | 显示全部楼层
huaiqiao 发表于 2016-12-14 20:49
我知道了,原来是堆和栈,太小了所致。。。。

堆和栈太小,还有ITERATION 也太小。。。也会不成功的。。
 楼主| 数码小叶 发表于 2016-12-15 08:30 | 显示全部楼层
paderboy 发表于 2016-12-14 21:19
堆和栈太小,还有ITERATION 也太小。。。也会不成功的。。

太谢谢了,死活也想不到堆栈设置,果然是思路陷入定势了。这下终于安心了。那个ITERATION是我自己改的,改了很多值,开始是12000的。可是还有个疑问,为啥他不报错呢,一般堆栈小了应该报错的啊
 楼主| 数码小叶 发表于 2016-12-15 08:32 | 显示全部楼层
huaiqiao 发表于 2016-12-14 20:48
你是用iar还是keil啊。
之前我用keil也好像没成功,最后放弃了。。。。。

stm32一直用的keil,感觉keil比IAR好用
paderboy 发表于 2016-12-15 10:54 | 显示全部楼层
数码小叶 发表于 2016-12-15 08:30
太谢谢了,死活也想不到堆栈设置,果然是思路陷入定势了。这下终于安心了。那个ITERATION是我自己改的, ...


paderboy 发表于 2016-12-15 10:56 | 显示全部楼层
数码小叶 发表于 2016-12-15 08:32
stm32一直用的keil,感觉keil比IAR好用

keil用习惯了。。。IAR 针对Coremark跑分确实厉害。。。跑多不少的分数。。。
 楼主| 数码小叶 发表于 2016-12-15 11:14 | 显示全部楼层
paderboy 发表于 2016-12-15 10:56
keil用习惯了。。。IAR 针对Coremark跑分确实厉害。。。跑多不少的分数。。。 ...

确实,我重新设置了下,也才260分
您需要登录后才可以回帖 登录 | 注册

本版积分规则

105

主题

2560

帖子

19

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