嵌入式开发者社区
标题:
sysbios系统工程指针操作耗时长的问题
[打印本页]
作者:
moontiger564
时间:
2016-8-23 10:06
标题:
sysbios系统工程指针操作耗时长的问题
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
- |0 Y+ k4 T! T: k9 E* Z0 f o
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
' ?3 @$ l2 C1 S) G
* ======== main ========
: {* ? i4 ~$ A/ w g
*/
; q* z+ c0 E+ e# H9 H, B$ l" \8 h
int test;
1 R: K+ i6 a7 h A. Y/ j W
int *pda;
) `5 M! M7 y0 |( B' y6 i5 Q
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;
4 G% l( N9 w9 G# C! H0 {, a* g
Int main()
O/ S: v- q( ^* q
{
! O( W6 W- r% y" R9 f, m9 w/ `
TSCH=0;
5 l1 o5 y. r) |
TSCL=0;
6 C: v. I! w0 w8 s
pda = &test;
3 R1 s/ B+ S" V$ J9 g
t1 = _itoll (TSCH, TSCL);
$ }4 e( b% n) p/ P& t
test = 20;
- d4 N& ^; \' Q; X+ y" K$ u
t2 = _itoll (TSCH, TSCL);
% r2 l) F5 q( D, W
*pda = 30;
; R) n4 }. n9 a( W
t3 = _itoll (TSCH, TSCL);
7 w/ q, ?+ P1 K) ]( @3 |
tdelt1 = t2-t1;
& j! l$ e% R, P) z7 r, U, `
tdelt2 = t3-t2;
. ^7 f+ x4 n8 V, q% Y4 y5 p( `
return 0;
5 h. C5 l) m/ h% k# B9 N: D
}
, n% g2 A n7 {- f- t
* X1 _. C* ?) t% o, j) \0 w
就用这个一个简单测试程序测一下程序耗时,果然有问题。
这里面tdelt1的值是7,tdelt2的值是362。
同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
+ l& R$ }7 E! W+ U7 {5 p8 K2 T- ^# y
有劳有劳。
% F* U: B' N4 [
作者:
希望缄默
时间:
2016-8-23 22:23
主函数中都没有启动 sys/bios 系统调度 应该是没有影响的
作者:
moontiger564
时间:
2016-8-24 08:58
希望缄默 发表于 2016-8-23 22:23
* x- k/ [6 n8 W2 v
主函数中都没有启动 sys/bios 系统调度 应该是没有影响的
& a6 `/ ] q8 ]- F: ` K
本来也是担心bios系统对它又影响,所以特地新建了一个sysbios工程,不起任何任务和中断,不起bios系统,就存粹一个main函数。发现也是这么个现象。所以就奇怪了。你们也可以帮忙试一下。就新建一个sysbios工程就能发现这个问题了。
% B& I7 v/ D, m! u) N
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4