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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5768|回复: 1

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
发表于 2017-4-7 16:58:50 | 显示全部楼层 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:) y6 j0 N5 `; I! W  K/ }% X
[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中7 t' V' f3 A  B
[color=inherit !important]
9 c! G4 m( J6 ^

( u( `* }3 k2 \( }& X[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器2
# D  [0 j3 Z5 {, Z+ ?& f[color=inherit !important]  N( K% D7 V* k) {$ n+ }% V
; O( F' Y" t. M' y0 p4 j3 O
timerParams.period = 500;
# a- V5 M6 x9 Z5 UtimerParams.periodType = Timer_PeriodType_MICROSECS;
% F/ ~8 D( D2 b
Timer_create(2, Timer2Proc, &timerParams, &eb);; i4 v. R1 W' _
: ]% j; |$ r6 d4 S& w, V8 {

& K& Q) t5 G! J4 P3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);- Z& q. w& V. l
产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。4 q- j' F, F! Q5 A, M. Z

6 g9 e# _+ F$ x" E

  v. f/ B8 |& P/ _% a+ x, A3 P: v7 V. {7 O3 [
/*
1 i! s: i# E4 C; g, u& }, W *  ======== Dsp.cfg ========* n, T; m% `3 L+ a! o/ W- ?
*
5 e" i; |5 p3 \7 H, o */
9 k" c5 r, y7 p0 A# K
$ a6 ]( O+ ^' c

# d1 y% y) Z' c' `" \( Q. U& \) J5 `/* root of the configuration object model */
7 N+ [, s+ r4 H  E% n& u3 s! Kvar Program = xdc.useModule('xdc.cfg.Program');& i6 D3 S  m% J1 V& S
+ H+ P+ Y7 i7 w) @  o
1 a$ `) C2 M  G. f! [8 r1 c
/* application uses the following modules and packages */
1 E" m9 s& g, b% o9 k$ jxdc.useModule('xdc.runtime.Assert');
+ d, U! H/ i* Mxdc.useModule('xdc.runtime.Diags');6 T: j2 f7 a+ v0 m. M* |& ]
xdc.useModule('xdc.runtime.Error');
* _0 W  @' {8 l6 o! ixdc.useModule('xdc.runtime.Log');& e" U& t# Z6 d1 j1 a# T; _
xdc.useModule('xdc.runtime.Registry');
$ \+ p1 }+ c( l- b7 D9 K5 U  V9 A1 J7 w( g- |
! S1 W+ B  G' \9 T7 u0 L" _% Q: ]
xdc.useModule('ti.sysbios.gates.GateHwi');
# f; m% G0 \) u9 h# ixdc.useModule('ti.sysbios.knl.Semaphore');3 Y9 y  f( a( h- ?+ f
xdc.useModule('ti.sysbios.knl.Task');% v8 Z/ k; w, l% s: R  {4 X; U# @% p+ d3 K
" z' i( G" K: I! ]+ O( m

+ M' U; \# E9 P
0 j3 p& ?" h+ F5 Z  u, w: Z- P7 B) ^% Z, h# Z( d" I3 h, T

7 ]- o8 @6 `) @% ~2 `
5 ^2 G. e6 i+ Y# ?; _# Z- c: v7 ]

+ p6 v, C$ [  @var BIOS = xdc.useModule('ti.sysbios.BIOS');: w  `- {2 f+ ~" d; x+ }: G
BIOS.libType = BIOS.LibType_NonInstrumented;
# M! n8 ^4 I/ Y
0 V" a" B8 L# l! B% [8 d6 i7 b9 \

$ A; J  R/ k6 \. {
' @4 A/ r0 y) f: ~% X1 axdc.useModule('ti.syslink.ipc.rtos.Syslink');
: d* B! {: K/ s- @5 L. V* w; t" M& e3 k6 x

3 P' j! {9 z1 S$ C9 O: W+ L0 ]8 H& o+ r* L
var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
) L' }! j1 x6 ^9 b2 d9 hvar procNameAry = MultiProc.getDeviceProcNames();5 ]5 P6 |- u/ }( A' p
MultiProc.setConfig("DSP", procNameAry);% {- Z/ j1 T/ C8 ]' I  U, f
' y) V9 H% C2 T; f# r$ M
/ s& F) y6 B8 e' e7 ]" `" E  n, ^/ T  f
; h0 H  S/ H, y  V4 I0 g
var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');
9 Q1 c$ V+ [$ L! U, Q
/ u" R; e$ A; S7 x
# a: q6 Y9 S; \# X; X% D4 w& `# _
/ n9 h3 ~9 k' U
Ipc.sr0MemorySetup = false;/ T5 V( }3 e  Y2 H9 z
6 F; g; \& I$ l9 M0 a1 N
" C$ |/ z* a' z# R, I
2 C$ J: H/ e7 T& p
Ipc.procSync = Ipc.ProcSync_PAIR;- @0 O" e& q% j5 f
+ a  v7 o8 z6 a4 ?8 Y
) R$ U. `. N* ~; r0 j( e
/* define host processor */
) E# v! T$ h; \; w. xIpc.hostProcId = MultiProc.getIdMeta("HOST");( n7 V5 C, F7 H7 S& j4 @1 x
) `4 l6 f+ ^, B: h3 j& w# O

  q% z) o1 i- ?( w0 A& i/* shared region configuration */" K  i1 _/ X& Q# {4 T
var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
# z0 m- [# O' X1 [+ U. {0 m! r3 E
/ C3 m5 I2 `) L# F* _  ^4 @4 e$ C
9 n+ r" G5 Z( m2 i- ^! o
/* configure SharedRegion #0 (IPC) */
  w! M. D! c4 L0 U6 f3 o9 yvar SR0Mem = Program.cpu.memoryMap["SR_0"];  K9 Y* j  B" F
  Q# a% l4 D$ j" K5 ~8 b
7 x7 [/ {% M' y: h: O+ Q
SharedRegion.setEntryMeta(0,( Z6 w& i6 j  B0 {5 W- U1 |
    new SharedRegion.Entry({' G& m* n3 a. S9 g
        name:           "SR0",
5 h3 I( T7 I) @% o( H        base:           SR0Mem.base,
* o5 H# B) O  Z! t% b4 t8 r        len:            SR0Mem.len,' \; K& d0 M* I$ c
        ownerProcId:    MultiProc.getIdMeta("HOST"),2 I$ _( h( k) g8 j. A3 j# \
        cacheEnable:    false,
: s; O* _) z; S( u        isValid:        true/ p9 O# @# p/ D
    })
3 E( [5 U0 [' A' g; C8 i8 J( a7 a);, |4 R2 }- B3 _1 a, _

9 e/ m8 v% u% g+ y, \: k5 B

  V  e' `. L  {) ~4 T
' Z* [0 G6 ]! I% P
" k& ?/ }( A+ ~1 @, m5 ]
* k$ _) b- U& s
Cache = xdc.useModule('ti.sysbios.family.c64p.Cache');
7 \& F2 e* D/ y" n: B8 |Cache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */
  z( {9 h& C. z$ u* U4 l8 F& [/ w3 i4 K7 U, |" z* u  e
, p; ]- l* p1 ~. ]: T6 G6 F5 ]

$ U  Y0 s4 W. i; X. A: b

7 N( o8 H$ ]5 b/*
7 S/ K) ^2 M; X' u  A8 G: A6 t *  ======== Operating System Configuration ========" O& j0 k& f  i# R+ C
*/
. p  u& c; R  H& K: H
& A3 e# H: y, l& |, p! m0 \) \2 ]

9 P) E# i, o' w% H3 C  \/* no rts heap */
, N) k4 R' Q: n+ SProgram.heap = 0;8 w. ?. Z5 w% ]" `
Program.argSize = 100;  /* minimum size */
. [" J7 i$ w  l0 O. I2 LProgram.stack = 0x1000;
' e- s! m8 W+ y, I+ B
, L2 f! U* g  H
! ?% _$ z5 p2 u  n0 F, h
/* create a default heap */
$ U/ L4 H3 G1 i+ a( r, X& o  uvar HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
0 i. o- ?( l) i; r" F7 Uvar heapMemParams = new HeapMem.Params();
7 b9 e( i1 n: {+ l5 R% k% IheapMemParams.size = 0x4000;1 z$ a0 p0 e9 N, f, R1 y9 b2 T

, |: b1 Q$ `$ s5 L

# D( r1 W( `4 _1 `" Z1 Rvar Memory = xdc.useModule('xdc.runtime.Memory');
* n$ }, s# V1 ~Memory.defaultHeapInstance = HeapMem.create(heapMemParams);$ o( y  j1 q7 \% c4 N6 G
: c' ~  F- b$ ~9 W0 `, l# A
- `3 x/ ]) A7 l
/* configure System module */
8 Z! o, D5 E* d8 o7 evar SysMin = xdc.useModule('xdc.runtime.SysMin');
8 c: P" ~' K  USysMin.bufSize = 0x1000;
. w4 v# @" F: g2 ]$ j6 iSysMin.flushAtExit = false;) G, _8 g9 F7 r+ J/ B
5 D7 Y" w/ R1 N2 U

; W: A, K+ A& tvar System = xdc.useModule('xdc.runtime.System');
4 w- Z0 B. @- n; v7 z) LSystem.SupportProxy = SysMin;
9 ^! x7 A. k4 V" v# A- A3 g4 [/ c; k5 \/ N! x

" m8 C9 }; |0 W! s) ^9 y6 g( L/* configure SysBios to use the lower half of Timer 1 */
3 h0 ]$ v$ h( H  Hvar Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');
5 U  I/ [: b6 Mvar Clock = xdc.useModule('ti.sysbios.knl.Clock');. s% S0 e* _, n) g
Timer.timerSettings[1].master = true;5 ^9 ^" e1 M0 X' u
Timer.defaultHalf = Timer.Half_LOWER;
5 ?+ h2 o6 H3 D7 e1 iClock.timerId = 1;
- j* P' U6 V2 G
3 A9 Q) I7 Z  O- i" i( m
' F" C8 m# @2 X9 d# X0 n4 D$ T7 w! {4 B9 r3 V

7 ]. V( H& p- V) C5 F
回复

使用道具 举报

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-4-16 21:28 , Processed in 0.041074 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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