嵌入式开发者社区
标题:
sysbios系统工程指针操作耗时长的问题
[打印本页]
作者:
moontiger564
时间:
2016-8-23 10:06
标题:
sysbios系统工程指针操作耗时长的问题
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
* Z0 K# D( O$ O; k
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
" g! B+ m0 I J* {' A$ M
* ======== main ========
3 {9 d4 y$ y$ A( s
*/
/ B3 ?7 Y7 O% c k/ v6 X( W2 n' w
int test;
, o; A \; D+ m1 `( ~
int *pda;
( }7 H* M G- s( k% S2 R$ A$ W
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;
3 G% E7 R2 v7 B# c
Int main()
! C+ I5 Z( F: x/ ?. h6 c
{
/ E7 x2 `8 S% ^
TSCH=0;
: a- Y& Z( W% K8 y9 ^
TSCL=0;
7 @! [4 o& h# v- G! ^
pda = &test;
" w' j( [; D" ~* k5 [
t1 = _itoll (TSCH, TSCL);
" n! X, x% |& x! S, c- W1 R5 {5 j
test = 20;
: r+ T; s% W# I$ J! q
t2 = _itoll (TSCH, TSCL);
1 S! V1 F7 e& j; B, K7 v5 e
*pda = 30;
+ l$ u4 y) V* x7 G7 r( M. }
t3 = _itoll (TSCH, TSCL);
" ~8 b; _( S+ |( t6 a# Z. O
tdelt1 = t2-t1;
# Y, k1 G- P# P8 g
tdelt2 = t3-t2;
; {0 s+ N, v+ Y# R1 B# \
return 0;
; Y3 j# M- h: Y
}
# G6 [! O, _- v7 c9 A; T" a
1 D) u, B& T, ~' U4 V
就用这个一个简单测试程序测一下程序耗时,果然有问题。
这里面tdelt1的值是7,tdelt2的值是362。
同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
' M$ H! P, c! S6 i# N0 b
有劳有劳。
3 M! h/ p5 b$ I6 j
作者:
希望缄默
时间:
2016-8-23 22:23
主函数中都没有启动 sys/bios 系统调度 应该是没有影响的
作者:
moontiger564
时间:
2016-8-24 08:58
希望缄默 发表于 2016-8-23 22:23
b! ]. {# }: F! R! H
主函数中都没有启动 sys/bios 系统调度 应该是没有影响的
3 j+ a( y0 T' R+ L& v
本来也是担心bios系统对它又影响,所以特地新建了一个sysbios工程,不起任何任务和中断,不起bios系统,就存粹一个main函数。发现也是这么个现象。所以就奇怪了。你们也可以帮忙试一下。就新建一个sysbios工程就能发现这个问题了。
( [0 i2 d% V' F: h2 e2 Z
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4