嵌入式开发者社区

标题: 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, Gint test;
  d& v4 k1 J3 ^! s. r* m9 eint *pda;
2 F2 q' M2 y8 p8 y2 `* hlong 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