嵌入式开发者社区
标题:
sysbios系统工程指针操作耗时长的问题
[打印本页]
作者:
moontiger564
时间:
2016-8-23 10:06
标题:
sysbios系统工程指针操作耗时长的问题
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
3 C+ e; q) Q+ ?# {2 v; d# r
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
+ t& ]) K S1 B7 r0 r
* ======== main ========
# _6 p. N. W* d c
*/
. a( x' v$ [4 [- a2 F, G
int test;
d& v4 k1 J3 ^! s. r* m9 e
int *pda;
2 F2 q' M2 y8 p8 y2 `* h
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;
) M6 |+ @3 @. o5 i- c: p
Int main()
& ~. n6 O' Q, e% H% V/ P! l& K
{
! j ]) x& o" M6 C+ E1 `1 p# S
TSCH=0;
4 h$ k4 @( x8 Q
TSCL=0;
' X" _& ]* e: s
pda = &test;
: {3 H) _+ b6 P/ c8 x
t1 = _itoll (TSCH, TSCL);
0 S( X7 H4 {+ R% }3 f- T; u
test = 20;
* U4 x) p' g& G3 r
t2 = _itoll (TSCH, TSCL);
8 T1 ?! m+ c, B8 _8 _5 F/ ]6 \
*pda = 30;
" M, Y; ~7 Y1 u, i; O) p5 k
t3 = _itoll (TSCH, TSCL);
" d: {! U) P) s, J
tdelt1 = t2-t1;
, j# s s# N" U, C! o3 q( l5 m
tdelt2 = t3-t2;
* q6 P. a2 z+ x0 |7 u/ u9 Y4 A
return 0;
! I* y8 \9 h# M. U
}
) H, o5 w1 H! ?0 ]8 G" k4 h
) A" n5 ?/ \. d1 Y
就用这个一个简单测试程序测一下程序耗时,果然有问题。
这里面tdelt1的值是7,tdelt2的值是362。
同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
! Y9 ?! [$ @: w; k+ f+ q
有劳有劳。
2 E9 t# `4 v/ B, b2 ~/ \) Z* _& k
作者:
希望缄默
时间:
2016-8-23 22:23
主函数中都没有启动 sys/bios 系统调度 应该是没有影响的
作者:
moontiger564
时间:
2016-8-24 08:58
希望缄默 发表于 2016-8-23 22:23
9 f" S, A; `# B9 F; A
主函数中都没有启动 sys/bios 系统调度 应该是没有影响的
- f% J9 X( Z& X" E, f' t7 K
本来也是担心bios系统对它又影响,所以特地新建了一个sysbios工程,不起任何任务和中断,不起bios系统,就存粹一个main函数。发现也是这么个现象。所以就奇怪了。你们也可以帮忙试一下。就新建一个sysbios工程就能发现这个问题了。
# ~3 B- G" }, ^4 I: T
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4