omapl138中 dsp端time_create问题 定时时间不准确 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5829|回复: 1
打印 上一主题 下一主题

[未解决] omapl138中 dsp端time_create问题 定时时间不准确

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:# Y! v. r! E) W# V4 Q, N3 T" Z# f
[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中% x" Y( ?# ~1 G5 U1 c. ~' w1 P* p
[color=inherit !important]$ I4 B3 n! R) S) t! n& a( q

; V  p7 `- }4 a0 o[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器29 z* s; x! g$ g6 i" ]8 F; Y; X/ L2 r
[color=inherit !important]3 R8 Y& `8 X  A8 m
: Z, R; x" P4 Z3 s) r7 F
timerParams.period = 500;7 i" m0 e# c/ \) s8 Q: d
timerParams.periodType = Timer_PeriodType_MICROSECS;
! h0 N: x  w0 K
Timer_create(2, Timer2Proc, &timerParams, &eb);6 O& p; t, z$ n( R
( V$ r: P1 Q5 e* y& k

/ k+ `( H3 O; t+ e3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);! \& k% H) |4 j& \6 T: g
产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。
' w0 }1 u- q* [3 o
" H+ d$ V* W* f
) R$ G' j% ], a! l9 @6 `- E- b
6 M9 w9 N) S1 n" X
/*
, g3 ^# `  c8 q3 a. S( i% j8 T' k *  ======== Dsp.cfg ========
8 O  m$ K, y& x% {" N  w" K *4 I/ F) r) f; j9 `: y% k
*/1 ]$ |% u. y6 E6 p

+ F, N' o0 i0 V

0 j, g1 G, y' i" J/* root of the configuration object model */
. g; I3 l( F4 {$ jvar Program = xdc.useModule('xdc.cfg.Program');
; p( O3 Q4 m% @+ q$ p' g
+ t  G, D3 s% E* O4 Q! h( h

# T0 ^, M( h: F/ E( V" S/* application uses the following modules and packages */
+ ~- Y- ^! m# y6 R6 qxdc.useModule('xdc.runtime.Assert');
$ |, Q' X5 |! ^; K; z, x+ Xxdc.useModule('xdc.runtime.Diags');
2 g4 @5 A0 ?& n+ `' D% Txdc.useModule('xdc.runtime.Error');. f$ a5 _2 H4 S) l- q, T4 `
xdc.useModule('xdc.runtime.Log');
2 O- }, A/ L1 ~1 ?5 ~' {7 i2 ?xdc.useModule('xdc.runtime.Registry');" H* |7 }" |4 ?5 A$ q3 \7 u
# R3 ]% p% H; J0 Q0 c8 j" P

2 I) s; A6 _7 M  ?- F3 Z" Oxdc.useModule('ti.sysbios.gates.GateHwi');
; {6 |: }& n; W. E  ~xdc.useModule('ti.sysbios.knl.Semaphore');9 G6 h5 L. U# \. J( N& F
xdc.useModule('ti.sysbios.knl.Task');
) w  X# h5 ?+ n4 B" g/ ]! \
* d: F1 Z: A& w+ f" L  R1 G' Y

4 r( Z! x  J$ w# Y3 A& q
7 _8 T' v% K- m! h9 e7 w% M4 c( j3 S
3 n9 ?4 e) v! A& d# A

& W/ M. x, U2 M0 S8 z
0 E5 ~% z% a+ b% p1 U  N
var BIOS = xdc.useModule('ti.sysbios.BIOS');
" S/ y9 n. a8 p# n- FBIOS.libType = BIOS.LibType_NonInstrumented;5 _& }% Y2 O2 q1 E- `

; p, J' U) e4 f4 ^! L, {( `: _% b8 H

' Z7 b, s/ P$ m. I2 l8 T
; E; N" w2 a7 |. B; Z7 Y8 o/ B. Vxdc.useModule('ti.syslink.ipc.rtos.Syslink');
2 i6 p$ ~1 r# _! T( r! B& X9 ?& ?' z- o+ ?0 N4 O1 ~* E! N- @3 b  E

6 Z, Q# _7 t+ p; a4 ~6 [9 I
2 m$ }& c5 i7 \  Z$ Lvar MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');* m* r( ~! P" f2 b/ x
var procNameAry = MultiProc.getDeviceProcNames();
& W/ O9 }! ?1 dMultiProc.setConfig("DSP", procNameAry);! M8 I9 f/ b0 @6 W7 ^6 i8 A- ]8 @

' d5 D; _0 j9 L6 j) _# P% B% G8 ~
' v" P& D; M* }  o/ t; u

! Y( r9 I% y2 V8 I% \  `9 i$ v" z& evar Ipc = xdc.useModule('ti.sdo.ipc.Ipc');7 Y" @- L  V3 ~

  e5 \& |9 h# K8 j* S. M# a

) ?/ k4 b9 a! _6 l: _# r6 Y
2 U: V; N. ]. h6 s* v0 X" wIpc.sr0MemorySetup = false;
; t$ y/ r# c3 w: s: w2 u
/ y6 d5 H& n1 Q; g  p; k! d5 L. J
. w7 g- w/ l& _3 D
- c/ i0 |4 d# N! b
Ipc.procSync = Ipc.ProcSync_PAIR;4 q' d$ |8 i2 w# K( r

9 f* R; s7 b& N  J3 j+ F2 E( \# h

2 o- p8 M; b' e/* define host processor */7 Y3 q4 t% o$ p  _9 A
Ipc.hostProcId = MultiProc.getIdMeta("HOST");
! M: x* H: b; i; t3 x% w, V$ r( i; a# g4 L; _
% I& O: G$ _6 Z" G9 c
/* shared region configuration */
& L( _: A8 z5 ]var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');( i  N" k4 h6 c) U2 l
4 O, X1 k  P$ y, M
! j9 M" o$ _; n. Q0 S4 R5 q& }
/* configure SharedRegion #0 (IPC) */( O: ]1 V6 T! u' x6 s+ F9 N
var SR0Mem = Program.cpu.memoryMap["SR_0"];
8 v! Y' ~: F" y! J( H& \+ V
: Z: q/ p; j8 R9 U' N9 c
6 n1 E) h7 n1 k
SharedRegion.setEntryMeta(0,
( h7 \  h8 E* x* H    new SharedRegion.Entry({! S( Y0 l$ S- V
        name:           "SR0",8 Q1 \9 A2 G7 k7 q' Q
        base:           SR0Mem.base,
, W0 L, w1 |1 J, b3 X5 {# r        len:            SR0Mem.len,  a0 \8 o! @- o4 o/ N' N$ Y7 H! z
        ownerProcId:    MultiProc.getIdMeta("HOST"),
2 W) p  H) I8 F        cacheEnable:    false,; N! E# s& X* r$ Q- ?4 w
        isValid:        true
& w  F6 X5 j8 |; g4 W$ \    })
% u+ |2 [2 N% l9 B/ M$ r3 g);8 u% v$ m# N  j4 G  T$ V" f

; |; j+ H  O# n1 ^- }" H, _5 [
$ U% y. E. y$ w* N2 |* X) x

8 m" B; T+ A% a
, N' w! s! c' i3 `" I
" a' ?& B- j% ~
Cache = xdc.useModule('ti.sysbios.family.c64p.Cache');
/ s6 K' t: z& V& t; K! mCache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */% V0 q7 W/ G8 T8 i

" h% h7 h! V& j& P; }

1 P* ?0 ~- C1 L. z7 _9 V* Q
  W8 ~5 [) }% V% b: g

' g6 {/ a$ q4 H* F5 q1 d# i  L/*
% w& q0 v9 n5 ?) G7 m0 r *  ======== Operating System Configuration ========, D2 t! e/ e8 v8 H/ x! M
*/
, W# q* M4 {6 j* n$ Y+ F9 w$ w" [8 ~+ L: A) `" j3 r- A+ O, e# _
& s# A+ i# B. Q' ^. [% W
/* no rts heap */
' J7 V- B$ V& S; d. nProgram.heap = 0;
4 _3 @* u" J- E! I0 t' VProgram.argSize = 100;  /* minimum size */, J* z( a; ]6 P+ L2 `" k
Program.stack = 0x1000;
$ \3 J9 o  N2 ]( v% }* e3 \8 a9 n1 }

" u% M; u9 E$ t) c; w9 U/ a/* create a default heap */+ g5 [; P+ X' |1 R* E7 r
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');( D* r: g: L& a, M; B7 W
var heapMemParams = new HeapMem.Params();8 M1 K/ F3 `2 R) ]! }
heapMemParams.size = 0x4000;
( U2 V. D  B' k
. X2 E% b. k1 @  G# b# f" d

3 r' b+ i0 t7 ^! M! mvar Memory = xdc.useModule('xdc.runtime.Memory');
6 P2 F& H3 q7 S' d- b" FMemory.defaultHeapInstance = HeapMem.create(heapMemParams);/ L8 `7 d7 S: D9 B$ @

- m9 W' [0 \3 y2 g8 U

, r7 H) |+ @8 l$ I/* configure System module */+ }; q1 D! f# h8 k: ?! [) R
var SysMin = xdc.useModule('xdc.runtime.SysMin');) O7 `6 r' _& k
SysMin.bufSize = 0x1000;
) |1 ?/ d" a0 A1 {% _SysMin.flushAtExit = false;
1 h. O, ?% U5 ?  [: d: q. Z' e6 ]6 ^, J
5 j7 G, Y7 k) M% |3 U  F. u3 t+ c
var System = xdc.useModule('xdc.runtime.System');) b2 C# Y* s$ g* J
System.SupportProxy = SysMin;
1 Z0 Z8 N/ D+ j, ~5 z' Q1 e- P- u+ e) w1 u9 X* i
- z; U* z! z) O+ K# p/ c4 J
/* configure SysBios to use the lower half of Timer 1 */# ?! w2 L0 B6 m. }1 N) _
var Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');# [: Q8 v! y& S$ p0 {8 e
var Clock = xdc.useModule('ti.sysbios.knl.Clock');/ N7 @6 U3 W0 F( u" s
Timer.timerSettings[1].master = true;
9 z# v, ]( {* U7 O. p0 L% FTimer.defaultHalf = Timer.Half_LOWER;5 h% Q# M+ L2 t( Z5 q) G6 b
Clock.timerId = 1;8 U9 P+ E2 v: P3 f! B5 Q
% o2 H1 s) c) i2 T+ e. y( k

3 @" N: Q3 M$ u8 V$ o! y. K2 p* P9 |& o! Y

% g6 X* [0 d' C3 T9 {. z* l# t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

积分
3538
沙发
发表于 2017-4-10 12:01:20 | 只看该作者
ARM 端将定时器2/3 输入时钟配置为 156MHz 需要修改 DSP 端 CFG 文件配置
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-5-12 21:33 , Processed in 0.039817 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表