嵌入式开发者社区

标题: sysbios系统工程指针操作耗时长的问题 [打印本页]

作者: moontiger564    时间: 2016-8-23 10:06
标题: sysbios系统工程指针操作耗时长的问题
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如2 i" b$ d* v' v$ Q* l/ O, E9 K
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:2 t. w5 Y$ s5 Q- j* }/ p: J
*  ======== main ========
+ U, _0 `  m' Z! a5 o- w */
5 t0 ?% ]% ?& t1 Uint test;% X2 n6 a, V. Z+ W; {* B( Q6 A: h
int *pda;
; H, w, P2 Q4 A$ V1 ?7 Blong long t1,t2,t3,t4,tover,tdelt1,tdelt2;$ q/ _& [: T) l, v
Int main()
! R- q2 }# r& C{, b+ J! x7 L1 b; a
        TSCH=0;3 S( s; N+ Y" q% g$ G' _
        TSCL=0;
3 j5 ]2 c4 S' n1 n; v        pda = &test;
/ `; B8 Q: a6 R$ j        t1 = _itoll (TSCH, TSCL);+ p: z% B4 o$ _' P
        test = 20;# k- m; k/ f! E2 b1 n  }
        t2 = _itoll (TSCH, TSCL);2 w( r% T* `+ C7 m( X( p" w
        *pda = 30;
& B7 e) K2 T1 s% s* ~        t3 = _itoll (TSCH, TSCL);: \/ e8 K8 g7 B! q  m; F" S
        tdelt1 = t2-t1;# I3 {/ G8 h. }2 n) i5 @
        tdelt2 = t3-t2;
9 T" M+ [4 b* H% _; a% u        return 0;9 `; ^  O, k; E5 q8 M1 Q
}# T1 v4 G( u; R& @. P
/ U& u" P& k+ M: G' U% _( G4 U
就用这个一个简单测试程序测一下程序耗时,果然有问题。这里面tdelt1的值是7,tdelt2的值是362。同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
5 w/ A9 d3 E# H6 L( n有劳有劳。
1 F0 q9 U6 }  @# n1 o( _: i. j! h) N( d
作者: 希望缄默    时间: 2016-8-23 22:23
主函数中都没有启动 sys/bios 系统调度 应该是没有影响的
作者: moontiger564    时间: 2016-8-24 08:58
希望缄默 发表于 2016-8-23 22:23% v# e1 C3 B9 {' l1 W; O+ u
主函数中都没有启动 sys/bios 系统调度 应该是没有影响的

/ K" y  r* G0 K# x/ z本来也是担心bios系统对它又影响,所以特地新建了一个sysbios工程,不起任何任务和中断,不起bios系统,就存粹一个main函数。发现也是这么个现象。所以就奇怪了。你们也可以帮忙试一下。就新建一个sysbios工程就能发现这个问题了。. L6 A, ~9 t/ H! I1 {, I





欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4