您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> BF53x技术支持专区 -> Blackfin的指令周期疑问
本帖共有865个阅读者
发表帖子 发表投票 回复主题
Blackfin的指令周期疑问
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5195
金钱:34806
积分:6378
注册时间:2011/6/7
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
Blackfin的指令周期疑问

帮QQ技术支持群的同学转一下问题,提问:

BF的指令周期一般是多少

比如 p1=1792(x);  1cclk ( 软件仿真)
p1.h=0xffc0; 1cclk  ( 软件仿真)

p1=1792(x);  10cclk (仿真器DEbug调试)
p1.h=0xffc0; 10cclk (仿真器DEbug调试)

看寄存器CYCLES测得。

为什么仿真器调试的时候时间大了这么多?



我是OP...
等级:管理员 参考IP地址:*.*.*.*
2012/10/31 13:49:24
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

这个测试是你的汇编文件还是编译后产生的目标文件的测试结果。你可以看看生成的目标文件的汇编窗口中的代码。

可以尝试打开工程的优化开关看看。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/10/31 14:39:27
yoo123(论坛新手)
yoo123
头衔:社区公民
帮派:无帮无派
帖数:5
金钱:132
积分:6
注册时间:2012/10/31
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

我是在.ASM里写的汇编函数 单步调试的

这个函数如下

.section L1_code;
.global _ledfon;
_ledfon:
link 0x0;        22cclk(光这条指令仿真器debug调试的的时间就这么大)
p1=1792(x);
p1.h=0xffc0;
r0=w[p1](z);
bitset(r0,0xc);
w[p1]=r0.l;
unlink;
rts;
_ledfon.end:

打开了优化开关并没有变化 反正每条汇编指令执行的时间都很大


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/10/31 15:00:30
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
你在单步时,看一下右边汇编窗口代码是怎么执行的。

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/10/31 23:11:48
yoo123(论坛新手)
yoo123
头衔:社区公民
帮派:无帮无派
帖数:5
金钱:132
积分:6
注册时间:2012/10/31
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

右边的汇编代码跟 跟左边的代码是一样的,

不存在 左边执行一条指令其实右边执行了多条指令的情况

我试过好多了 不添加LDF调试也还是这样  为什么指令周期变得这么大

这样的话400MHZ的MCLK跑起来40MHZ的速度都没有了


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/11/1 10:44:28
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
你试试执行同一个指令10000次,看消耗的时钟是多少,单次指令消耗时钟多不能说明问题,也许将仿真器传输的消耗也计算在内了。

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/11/1 14:29:53
yoo123(论坛新手)
yoo123
头衔:社区公民
帮派:无帮无派
帖数:5
金钱:132
积分:6
注册时间:2012/10/31
6信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

终于解决了,原来仿真器单步调试时间是没有意义的,我估计也是仿真器传输的消耗也计算在内了

谢谢

再请教你你一个纠结了我好久的问题

BF531选择BF533的session,工程添加的LDF对应是BF533的,这就带来了很多疑问,BF531的L1跟BF533的L1有差别啊


   MEM_L1_SCRATCH          { TYPE(RAM) START(0xFFB00000) END(0xFFB00FFF) WIDTH(8) }
   MEM_L1_CODE             { TYPE(RAM) START(0xFFA00000) END(0xFFA13FFF) WIDTH(8) }
   MEM_L1_DATA_B           { TYPE(RAM) START(0xFF900000) END(0xFF907FFF) WIDTH(8) }
   MEM_L1_DATA_A           { TYPE(RAM) START(0xFF800000) END(0xFF807FFF) WIDTH(8) }

(这是BF533的)

  MEM_L1_SCRATCH          { TYPE(RAM) START(0xFFB00000) END(0xFFB00FFF) WIDTH(8) }
   MEM_L1_CODE_CACHE       { TYPE(RAM) START(0xFFA10000) END(0xFFA13FFF) WIDTH(8) }
   MEM_L1_CODE             { TYPE(RAM) START(0xFFA08000) END(0xFFA0BFFF) WIDTH(8) }
   MEM_L1_DATA_A           { TYPE(RAM) START(0xFF804000) END(0xFF807FFF) WIDTH(8) }

(这是BF531的)

我用BF531调试的时候发现,变量对应的映射地址甚至都可以被映射到DATA_B上去了,在BF531中真正是怎样映射的?

还有在工程设置中开启数据CACHE bank A AND bank B应该是把BF531的16k L1数据data置为了cache,

那把system heap 和system stack仍设置在L1上OK吗



相反假如我选择BF531的session工程添加LDF后程序经常会跑不起来

总之就是BF531选择BF533的ldf是怎么做到没有任何问题的


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/11/1 15:05:48
jk2000(论坛新手)
jk2000
头衔:社区公民
帮派:无帮无派
帖数:10
金钱:147
积分:9
注册时间:2012/7/15
7信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
我肯定不会告诉你这2个型号是同一个芯片,手一滑,型号印错了...

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/11/1 16:19:44
yoo123(论坛新手)
yoo123
头衔:社区公民
帮派:无帮无派
帖数:5
金钱:132
积分:6
注册时间:2012/10/31
8信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

BACKFIN的内核都是一样的这个我知道  但总不会BF531跟BF533的L1是一样的吧

就不能多说点吗


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/11/2 10:36:14
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159341 Call, 1 Queries, Processed in 0.007813 second(s),