嵌入式开发者社区
标题:
sysbios系统工程指针操作耗时长的问题
[打印本页]
作者:
moontiger564
时间:
2016-8-23 10:06
标题:
sysbios系统工程指针操作耗时长的问题
目前遇到一个很奇怪的问题,急需解决。我用的omapl138的平台,然后跑sysbios的时候发现对指针赋值的时候消耗很长的指令周期。例如
5 i- c# y+ j" ~# @
*p = 20.这么一个赋值语句就要耗时300多个指令周期,而普通的变量赋值例如a=10这个语句才7个指令周期。然后我新建一个sysbios工程,单独做个测试,代码如下:
$ n {2 ?. q4 n D" p2 y2 P
* ======== main ========
1 z% {9 v' m( J0 |! w' k6 i
*/
1 B7 x, i4 `8 B! j/ o
int test;
/ X k& F s5 m/ @0 ?) Y# r
int *pda;
# E! J" {; a! U- c* R- s! L
long long t1,t2,t3,t4,tover,tdelt1,tdelt2;
7 z: h) J/ B" }! [
Int main()
, Y7 ?0 Y# O1 n% J- }! x _
{
. j# B/ F/ b' @' u$ B
TSCH=0;
9 r, x6 ]$ c- Y! t# R- z
TSCL=0;
( B% e% a4 H) M8 Z9 O
pda = &test;
0 {0 r* T! e3 E2 V( A1 J; {
t1 = _itoll (TSCH, TSCL);
3 ?( P" N, n, E$ n
test = 20;
$ l' S3 h! f, P8 T
t2 = _itoll (TSCH, TSCL);
7 V1 @# c, z5 ^1 D8 B0 |% u
*pda = 30;
; j+ l! l' d' r
t3 = _itoll (TSCH, TSCL);
! D1 j8 s$ d. R
tdelt1 = t2-t1;
5 T* x$ g3 o6 e, ?* \7 Q5 v
tdelt2 = t3-t2;
0 c- v$ Z1 y( Q# C; J
return 0;
4 V( {& }) d9 N2 P
}
0 ?/ v5 c E) l
: v9 g2 Z1 E0 P C$ ?, }+ t
就用这个一个简单测试程序测一下程序耗时,果然有问题。
这里面tdelt1的值是7,tdelt2的值是362。
同样一个赋值语句,一个是直接变量赋值,一个是通过指针赋值,但是用的时间差距好几十倍。这个问题急需解决。麻烦分析一下什么原因。
( s' G y- r. e6 R. _" k( M6 [
有劳有劳。
: Y- v9 k: m. I: D
作者:
希望缄默
时间:
2016-8-23 22:23
主函数中都没有启动 sys/bios 系统调度 应该是没有影响的
作者:
moontiger564
时间:
2016-8-24 08:58
希望缄默 发表于 2016-8-23 22:23
6 O: |3 q' s, y7 u3 E: C
主函数中都没有启动 sys/bios 系统调度 应该是没有影响的
3 O P! s+ j; e- Y9 E
本来也是担心bios系统对它又影响,所以特地新建了一个sysbios工程,不起任何任务和中断,不起bios系统,就存粹一个main函数。发现也是这么个现象。所以就奇怪了。你们也可以帮忙试一下。就新建一个sysbios工程就能发现这个问题了。
* i# ]- y: m, u& r# f, m' c
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4