OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10657|回复: 22

求MCU处理一个函数所用的时间

[复制链接]

28

主题

176

帖子

0

精华

高级会员

Rank: 4

积分
738
金钱
738
注册时间
2014-7-1
在线时间
180 小时
发表于 2017-5-18 13:51:37 | 显示全部楼层 |阅读模式
100金钱
在项目开发前遇到一个有关评估的问题,不知道该如何下手,求有知道的高手赐教!

背景是:需要开发一个项目,选定了MCU型号,知道要处理哪些任务,要估算出MCU处理完这些任务所花费的时间是否满足要求,这个估算过程我不知道该如何下手,有人知道吗?

就比如,我选择了Cortex-M3(F103,主频72MHz)为内核的MCU,要处理Func1、Func2、Func3这三个函数,三个函数中有很多子函数,子函数中又有许多语句。我的思路是,首先根据手册找到Cortex-M3一秒钟处理的指令数(1.25MIPS/Mhz,即一秒执行72*1.25*1000000条指令),计算出每条指令所需要的时间,然后把三个函数中所有的语句转化成对应的指令,最后把所有的指令相加计算出三个函数用到的总指令数,就能计算出MCU处理完这三个函数所用到的时间,思路正确吗??


如果思路正确的话,如何把函数转化成对应的指令??感觉这个是难题,希望前辈们多多指点啊!

最佳答案

查看完整内容[请看2#楼]

其实不用考虑那么多,你为什么需要那么精确的时间啊 直接几倍十几倍的选不就行了,那样更稳定
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1606
金钱
1606
注册时间
2015-6-10
在线时间
223 小时
发表于 2017-5-18 13:51:38 | 显示全部楼层
qingyu111 发表于 2017-5-19 08:20
那实际速度与计算出的速度相差有多大呢?

其实不用考虑那么多,你为什么需要那么精确的时间啊

直接几倍十几倍的选不就行了,那样更稳定
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3567
金钱
3567
注册时间
2016-1-8
在线时间
544 小时
发表于 2017-5-18 13:56:06 | 显示全部楼层
用定时器,设置us级别的,设置断点,看数值,定时器里面++
回复

使用道具 举报

28

主题

176

帖子

0

精华

高级会员

Rank: 4

积分
738
金钱
738
注册时间
2014-7-1
在线时间
180 小时
 楼主| 发表于 2017-5-18 13:58:46 | 显示全部楼层
Sun_Fly 发表于 2017-5-18 13:56
用定时器,设置us级别的,设置断点,看数值,定时器里面++

上面提到的MCU是我随意说的,如果现在手上还没有拿到MCU,只能手动估算该怎么办呢?
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3567
金钱
3567
注册时间
2016-1-8
在线时间
544 小时
发表于 2017-5-18 14:16:23 | 显示全部楼层
qingyu111 发表于 2017-5-18 13:58
上面提到的MCU是我随意说的,如果现在手上还没有拿到MCU,只能手动估算该怎么办呢?

没有定时器吗?没有就仿真看,设置断点,仿真界面有sec时间
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3567
金钱
3567
注册时间
2016-1-8
在线时间
544 小时
发表于 2017-5-18 14:16:55 | 显示全部楼层
qingyu111 发表于 2017-5-18 13:58
上面提到的MCU是我随意说的,如果现在手上还没有拿到MCU,只能手动估算该怎么办呢?


http://www.openedv.com/forum.php?mod=viewthread&tid=93166
回复

使用道具 举报

28

主题

176

帖子

0

精华

高级会员

Rank: 4

积分
738
金钱
738
注册时间
2014-7-1
在线时间
180 小时
 楼主| 发表于 2017-5-18 14:21:42 | 显示全部楼层
Sun_Fly 发表于 2017-5-18 14:16
http://www.openedv.com/forum.php?mod=viewthread&tid=93166

您说的是一种方式,我想问的是我所说的方法正确吗?
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3567
金钱
3567
注册时间
2016-1-8
在线时间
544 小时
发表于 2017-5-18 14:38:12 | 显示全部楼层
qingyu111 发表于 2017-5-18 14:21
您说的是一种方式,我想问的是我所说的方法正确吗?

不太清楚,没太了解指令周期这块。
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1606
金钱
1606
注册时间
2015-6-10
在线时间
223 小时
发表于 2017-5-18 15:12:19 | 显示全部楼层
Sun_Fly 发表于 2017-5-18 14:38
不太清楚,没太了解指令周期这块。

函数转化成对应的指令
在线调试的时候有那个窗口
Disassembly window  ,仿真的话就不知道了

不过执行速度真心没有那么快,很多东西都影响速度,比如说flash读取速度,
回复

使用道具 举报

28

主题

176

帖子

0

精华

高级会员

Rank: 4

积分
738
金钱
738
注册时间
2014-7-1
在线时间
180 小时
 楼主| 发表于 2017-5-19 08:20:53 | 显示全部楼层
止天 发表于 2017-5-18 15:12
函数转化成对应的指令
在线调试的时候有那个窗口
Disassembly window  ,仿真的话就不知道了

那实际速度与计算出的速度相差有多大呢?
回复

使用道具 举报

15

主题

406

帖子

0

精华

高级会员

Rank: 4

积分
795
金钱
795
注册时间
2015-3-26
在线时间
151 小时
发表于 2017-5-19 11:21:54 | 显示全部楼层
定时器,去计时
回复

使用道具 举报

28

主题

176

帖子

0

精华

高级会员

Rank: 4

积分
738
金钱
738
注册时间
2014-7-1
在线时间
180 小时
 楼主| 发表于 2017-5-19 13:15:27 | 显示全部楼层
止天 发表于 2017-5-19 09:43
其实不用考虑那么多,你为什么需要那么精确的时间啊

直接几倍十几倍的选不就行了,那样更稳定

嗯,是我考虑多了,的确应该像你说的这样,多谢啊
回复

使用道具 举报

28

主题

176

帖子

0

精华

高级会员

Rank: 4

积分
738
金钱
738
注册时间
2014-7-1
在线时间
180 小时
 楼主| 发表于 2017-5-19 13:15:53 | 显示全部楼层

是这种方式,多谢
回复

使用道具 举报

15

主题

406

帖子

0

精华

高级会员

Rank: 4

积分
795
金钱
795
注册时间
2015-3-26
在线时间
151 小时
发表于 2017-5-19 14:32:06 | 显示全部楼层
qingyu111 发表于 2017-5-19 13:15
是这种方式,多谢

实际应用中应该是并行的吧
回复

使用道具 举报

28

主题

176

帖子

0

精华

高级会员

Rank: 4

积分
738
金钱
738
注册时间
2014-7-1
在线时间
180 小时
 楼主| 发表于 2017-5-22 13:15:58 | 显示全部楼层
xyl210xyl 发表于 2017-5-19 14:32
实际应用中应该是并行的吧

不太明白你说的是什么意思
回复

使用道具 举报

1

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2017-5-23
在线时间
18 小时
发表于 2017-5-23 23:58:31 来自手机 | 显示全部楼层
一个定时器用来做计时用!在函数开头清定时器,函数结尾处读取定时器时间保存!
回复

使用道具 举报

28

主题

176

帖子

0

精华

高级会员

Rank: 4

积分
738
金钱
738
注册时间
2014-7-1
在线时间
180 小时
 楼主| 发表于 2017-5-24 08:55:39 | 显示全部楼层
498959881 发表于 2017-5-23 23:58
一个定时器用来做计时用!在函数开头清定时器,函数结尾处读取定时器时间保存!

嗯。我就是这种方式
回复

使用道具 举报

3

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2017-5-4
在线时间
21 小时
发表于 2017-5-24 09:40:52 | 显示全部楼层
然后把三个函数中所有的语句转化成对应的指令


这一步你能做下来我觉得你就是大牛级别的了
回复

使用道具 举报

19

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2013-6-27
在线时间
83 小时
发表于 2017-5-24 10:04:15 | 显示全部楼层
这样的理论计算我认为没多大意义,你只要往自己需求十倍去选。我建议还是申请样片,然后用IO口翻转去实测一个函数执行的时间,这样是最直观最直接的!!
回复

使用道具 举报

28

主题

176

帖子

0

精华

高级会员

Rank: 4

积分
738
金钱
738
注册时间
2014-7-1
在线时间
180 小时
 楼主| 发表于 2017-5-24 16:58:21 | 显示全部楼层
zcz0426 发表于 2017-5-24 10:04
这样的理论计算我认为没多大意义,你只要往自己需求十倍去选。我建议还是申请样片,然后用IO口翻转去实测一 ...

嗯,我的经验还是太少了,多谢前辈,我发现你们有经验的都是用这样的方法,受教了
回复

使用道具 举报

0

主题

34

帖子

0

精华

高级会员

Rank: 4

积分
614
金钱
614
注册时间
2016-1-25
在线时间
135 小时
发表于 2017-5-24 18:14:25 | 显示全部楼层
1.开个定时器,++去看。
回复

使用道具 举报

0

主题

34

帖子

0

精华

高级会员

Rank: 4

积分
614
金钱
614
注册时间
2016-1-25
在线时间
135 小时
发表于 2017-5-24 18:15:15 | 显示全部楼层
吃货菌 发表于 2017-5-24 18:14
1.开个定时器,++去看。

2.反转IO口,用示波器查看。这种更精确
回复

使用道具 举报

28

主题

176

帖子

0

精华

高级会员

Rank: 4

积分
738
金钱
738
注册时间
2014-7-1
在线时间
180 小时
 楼主| 发表于 2017-5-26 09:20:33 | 显示全部楼层
吃货菌 发表于 2017-5-24 18:15
2.反转IO口,用示波器查看。这种更精确

已经试过了,效果不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-20 20:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表