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

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

[复制链接]
1948|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 数码小叶 于 2016-12-15 10:58 编辑

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

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


然后开始移植:



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



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



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


修改start_time函数如下


void start_time(void) 
{
        Tick = 0;
  SysTick_Config(SystemCoreClock/1000);
};


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

修改CORE_TICKS get_time函数如下
CORE_TICKS get_time(void) 
{
        CORE_TICKS elapsed =(CORE_TICKS)Tick;
  return elapsed;
}

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




再屏蔽相关宏定义



添加宏定义


设置迭代次数


然后把工程中的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生成的工程吗

使用特权

评论回复
5
paderboy| | 2016-12-14 13:32 | 只看该作者
按照教程一步一步检查下。。。

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



使用特权

评论回复
6
数码小叶|  楼主 | 2016-12-14 14:11 | 只看该作者
paderboy 发表于 2016-12-14 13:32
按照教程一步一步检查下。。。

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

我现在完全发现不了哪个环节出错了。。

使用特权

评论回复
7
paderboy| | 2016-12-14 16:38 | 只看该作者
数码小叶 发表于 2016-12-14 14:11
我现在完全发现不了哪个环节出错了。。

把你工程发一份上来,看看,哪出的错。。

使用特权

评论回复
8
数码小叶|  楼主 | 2016-12-14 16:50 | 只看该作者
paderboy 发表于 2016-12-14 16:38
把你工程发一份上来,看看,哪出的错。。

好的
121.part01.rar (4 MB)
121.part02.rar (2.16 MB)

使用特权

评论回复
9
火山LF| | 2016-12-14 17:00 | 只看该作者
小叶,我是那个帮你顶上去的孩纸

使用特权

评论回复
10
数码小叶|  楼主 | 2016-12-14 17:01 | 只看该作者
火山LF 发表于 2016-12-14 17:00
小叶,我是那个帮你顶上去的孩纸

你是个好孩子

使用特权

评论回复
11
paderboy| | 2016-12-14 19:28 | 只看该作者
哥们帮你找的问题了,我就下我修该的截图帖出来,您自己对比下看看。。。
你原来的工程里这里是默认的200 和400 太小了。。。。





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



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


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



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

使用特权

评论回复

打赏榜单

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

12
huaiqiao| | 2016-12-14 20:48 | 只看该作者
paderboy 发表于 2016-12-14 13:32
按照教程一步一步检查下。。。

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

你是用iar还是keil啊。
之前我用keil也好像没成功,最后放弃了。。。。。

使用特权

评论回复
13
huaiqiao| | 2016-12-14 20:49 | 只看该作者
paderboy 发表于 2016-12-14 19:28
哥们帮你找的问题了,我就下我修该的截图帖出来,您自己对比下看看。。。
你原来的工程里这里是默认的200  ...

我知道了,原来是堆和栈,太小了所致。。。。

使用特权

评论回复
14
paderboy| | 2016-12-14 21:18 | 只看该作者
huaiqiao 发表于 2016-12-14 20:48
你是用iar还是keil啊。
之前我用keil也好像没成功,最后放弃了。。。。。

iar keil都没问题。是没移植好。多注意细节。。。往往就是小细节,才失败的。。

使用特权

评论回复
15
paderboy| | 2016-12-14 21:19 | 只看该作者
huaiqiao 发表于 2016-12-14 20:49
我知道了,原来是堆和栈,太小了所致。。。。

堆和栈太小,还有ITERATION 也太小。。。也会不成功的。。

使用特权

评论回复
16
数码小叶|  楼主 | 2016-12-15 08:30 | 只看该作者
paderboy 发表于 2016-12-14 21:19
堆和栈太小,还有ITERATION 也太小。。。也会不成功的。。

太谢谢了,死活也想不到堆栈设置,果然是思路陷入定势了。这下终于安心了。那个ITERATION是我自己改的,改了很多值,开始是12000的。可是还有个疑问,为啥他不报错呢,一般堆栈小了应该报错的啊

使用特权

评论回复
17
数码小叶|  楼主 | 2016-12-15 08:32 | 只看该作者
huaiqiao 发表于 2016-12-14 20:48
你是用iar还是keil啊。
之前我用keil也好像没成功,最后放弃了。。。。。

stm32一直用的keil,感觉keil比IAR好用

使用特权

评论回复
18
paderboy| | 2016-12-15 10:54 | 只看该作者
数码小叶 发表于 2016-12-15 08:30
太谢谢了,死活也想不到堆栈设置,果然是思路陷入定势了。这下终于安心了。那个ITERATION是我自己改的, ...


使用特权

评论回复
19
paderboy| | 2016-12-15 10:56 | 只看该作者
数码小叶 发表于 2016-12-15 08:32
stm32一直用的keil,感觉keil比IAR好用

keil用习惯了。。。IAR 针对Coremark跑分确实厉害。。。跑多不少的分数。。。

使用特权

评论回复
20
数码小叶|  楼主 | 2016-12-15 11:14 | 只看该作者
paderboy 发表于 2016-12-15 10:56
keil用习惯了。。。IAR 针对Coremark跑分确实厉害。。。跑多不少的分数。。。 ...

确实,我重新设置了下,也才260分

使用特权

评论回复
发新帖 本帖赏金 2.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

103

主题

2540

帖子

19

粉丝