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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:* P$ r% Z( }! H% ^- }
[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中8 f: ]; g, ]8 n" E
[color=inherit !important]5 Q% M* G& U6 f1 ?! A+ o( i
, c1 p) p  ~/ x  @. g' w9 Y/ e
[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器2- X) |  F( u+ U1 u" e
[color=inherit !important]7 a3 }6 D1 A, L5 e0 a4 U" i! ?$ k" E

8 T% c  V% r8 _8 \/ _% gtimerParams.period = 500;$ Q. c) X" A2 G/ P0 E& o+ `
timerParams.periodType = Timer_PeriodType_MICROSECS;
4 ]$ _  P% s5 ^+ Y, L$ v
Timer_create(2, Timer2Proc, &timerParams, &eb);( y, B+ g% L/ [" J2 e8 I
  X' V8 M- {* _% j% m! q( V

  W  n. c0 t8 p" v) s3 ]" [# K. Y3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);
* q/ S- t4 l, |$ F) ], m2 b( z3 Y产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。$ j/ Y. o  Z2 }' ]9 V% \+ n9 Z" g

& B$ r) {. ]; S$ X+ L- {
+ P2 l$ z$ x9 n
0 ~3 C2 m6 T' b+ i* U
/*
4 ~. ?( G; }# P  `6 V) r *  ======== Dsp.cfg ========
5 M) s" M% ?$ e+ w *; e/ \$ L" q4 A. `  @; I5 j, x" B
*/
/ V/ _$ e) w; P+ n% v6 ~  X2 X" D1 H8 D

1 N" K( r+ o6 q, J; j! H5 z/* root of the configuration object model */) |& C# H0 H- D- u
var Program = xdc.useModule('xdc.cfg.Program');& ]0 K* N3 @) y/ p3 ^' I& W6 R
2 _. M7 O0 v7 U" T* w" F

8 ^( o/ f* i' ^% M/* application uses the following modules and packages */
9 ]" Y  c: X# f! \% Ixdc.useModule('xdc.runtime.Assert');& w5 w. e, X' B; y) u* z5 ^9 y
xdc.useModule('xdc.runtime.Diags');) S1 Y4 w6 c9 Y1 Y: O: ~" s
xdc.useModule('xdc.runtime.Error');- I* t, w+ o8 y* _* t0 S$ j9 y& x
xdc.useModule('xdc.runtime.Log');+ U+ y1 b" e' C2 v
xdc.useModule('xdc.runtime.Registry');" S& F. k5 ^; x) g

7 A& u, O) A  o* q

0 S% f8 C6 L& e6 K; U1 b- _- ]- txdc.useModule('ti.sysbios.gates.GateHwi');
4 A9 k9 y- G% S4 U9 R* H; Uxdc.useModule('ti.sysbios.knl.Semaphore');
& F6 T' _8 J  Lxdc.useModule('ti.sysbios.knl.Task');
8 i0 S9 [; C( Z  C. |% G3 j3 C$ B) l% R: l9 W

* y% V' R8 v- t6 D8 o0 U; z* _' u# U" t+ h  y
8 q# m# T7 }/ }# O
$ ]+ D: ]- I# n6 H% ^

  M: T6 R; B' W! s3 M' X
" ^% ?3 a! W5 ?% N1 o( X( g' C- ?( {
var BIOS = xdc.useModule('ti.sysbios.BIOS');
& g0 f! K, T$ v% [" yBIOS.libType = BIOS.LibType_NonInstrumented;
. [. K* i) s, j7 J% s5 g
' B: A' a- n. d& Y: i

3 H% V' t3 J/ z/ S+ }7 x' E0 K
! T; B1 ^, V  O! Oxdc.useModule('ti.syslink.ipc.rtos.Syslink');
* U" @# p6 T3 e' \( B2 r( F4 S0 j; |3 G
$ h" p. c8 c9 ~( D! [

) x3 d% A  c4 f2 N! \7 b, A' g2 ^& zvar MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');3 d0 p6 o; Y, ~5 j
var procNameAry = MultiProc.getDeviceProcNames();
* S6 i9 }" O2 i5 RMultiProc.setConfig("DSP", procNameAry);; m% i- q# H  ~' \: T7 f- r
# p- b5 b5 B: B2 Z/ X4 P3 C
0 _/ ?; ]& S+ v. c1 @9 I

- S, _/ o, K% Q/ c$ \9 c, {: ~3 Kvar Ipc = xdc.useModule('ti.sdo.ipc.Ipc');/ Z; t9 e. n# A9 l% b! C* M- |

3 p: c! Q. I  n* w2 J
0 ^$ s3 ]9 o2 e

2 a/ d/ \, @  D; bIpc.sr0MemorySetup = false;+ X5 r3 l, n* ^
0 q; x5 n4 A- k' ?1 i+ n0 z
3 a! [& j8 f: b/ N
) c% _! {8 l) L& x" R; j9 `1 _* d
Ipc.procSync = Ipc.ProcSync_PAIR;
- B4 w" P; h( M% m, X# k
. u4 q$ T# c! L" Y

3 L5 o  @; l' V, H) k5 w, ?/* define host processor */  h; v7 J+ i' Y' d  }+ G, ~+ y3 B
Ipc.hostProcId = MultiProc.getIdMeta("HOST");4 s8 d' E) k# G- ^+ }6 T

- K! b) w, x# R: I2 C

' r8 n, O, n8 C  ^+ n& I# o/* shared region configuration */
: s  C7 E. x" c+ P; t; Tvar SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');/ D' a  M# Q6 [1 s& T0 L* X; u

4 p) v. Z. E+ O2 t9 A7 s

. s9 {9 s- x1 d- u, r  H/* configure SharedRegion #0 (IPC) */
: q9 t6 J! }9 x. H3 j+ dvar SR0Mem = Program.cpu.memoryMap["SR_0"];
2 {" G3 m2 _3 ~7 w. t" m
' @6 Z6 E! _* E* M

7 f: {9 F+ L3 y' G1 H, {( h) xSharedRegion.setEntryMeta(0,: s6 S  b+ r. V6 l! I, a1 Z# J
    new SharedRegion.Entry({
5 x2 d6 w, F! {& q" x8 h        name:           "SR0",
* H( g" g- E0 E. h5 R9 M& A! X        base:           SR0Mem.base,3 _& y/ z0 h" w& b6 R0 G8 D
        len:            SR0Mem.len,
5 Y& d( p; C! u0 \; s        ownerProcId:    MultiProc.getIdMeta("HOST"),
: Q4 |$ j3 K$ n! e& D$ d& h# n        cacheEnable:    false,
& s) l& v: }5 ~. R' h+ B        isValid:        true7 |4 r, z+ m7 Q
    })1 A& W$ b: R  v: Z0 q
);
5 Z) s! l+ G. h9 W6 @
5 B$ N2 G+ b0 H3 g2 s* ~; c2 m; r7 Q
4 R. E, {( G' M
0 W9 `" c+ @' H8 o# N% y1 y
1 h: J& y, P) h! Z% P% s, O
/ b& J2 r/ a- g7 ^8 N% o
Cache = xdc.useModule('ti.sysbios.family.c64p.Cache');
4 b, n- b1 U) d3 R' ?" d/ t1 CCache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */
) J2 u  P- W; c, h4 P
$ `, M% }( }: a) C

9 p! J: q1 C3 U- V3 j5 s- y% @0 L. }" f  f  _

1 O* J9 z! m8 D& ~# m" o/*  A9 N7 T& |" q4 a) e; m* p+ o7 f
*  ======== Operating System Configuration ========9 c9 @2 ?, [3 H6 b
*/& E' A* \: J. O

1 p+ M9 x4 _, s2 \5 ]9 n+ a% g
2 q, {* ~" s4 H7 T" V2 m
/* no rts heap */
) W7 Q. s2 A/ ^5 N* k) gProgram.heap = 0;
. O2 u7 {& p5 ]6 N+ _9 e6 O: L* l. GProgram.argSize = 100;  /* minimum size */
4 `7 Y% ~+ r7 l6 d/ bProgram.stack = 0x1000;
1 x9 f% n+ x5 B* z1 z. {2 Y! [  r& a' H

! O7 f, d8 o$ D3 @/* create a default heap */
9 u; k: K7 [4 |' A' Cvar HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
9 [6 x- K! t2 R0 B% ?0 V9 V. \, Yvar heapMemParams = new HeapMem.Params();+ |7 t  J7 G8 b/ I& D
heapMemParams.size = 0x4000;( |5 |! H, s/ j/ a; ~$ v1 z5 `& X
2 x0 o% b) |' ^$ h& K
/ H' t- r6 p. @
var Memory = xdc.useModule('xdc.runtime.Memory');1 I& @3 }$ q3 t% w2 Q
Memory.defaultHeapInstance = HeapMem.create(heapMemParams);
4 S! I$ Y, _, [0 ~: R5 E/ L3 ]6 Q5 s

. {+ w1 v7 x! e* j/* configure System module */
7 _: T: l& R7 ~! ]( d8 [: ~, Rvar SysMin = xdc.useModule('xdc.runtime.SysMin');5 R- F. r$ ]+ Z0 v
SysMin.bufSize = 0x1000;
6 X% y5 q& q; q% \7 y: SSysMin.flushAtExit = false;
  Z5 B5 k& G4 ^+ D# C* v7 e- L4 \- f# S) T
- c2 _% F5 }( S. M
var System = xdc.useModule('xdc.runtime.System');  l. x+ m- X2 N) ^7 ~
System.SupportProxy = SysMin;
; C- E% M" z  W' F
& q; U. m! C- P+ Z9 s' I, f* Q: Q1 K4 {! p  ?
/ H% _& s# K' f* Q7 g# ?
/* configure SysBios to use the lower half of Timer 1 */
0 [  s4 P# K% l% s. Q( E$ T7 N& Xvar Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');+ Q/ l; k1 O! e8 h$ i) E
var Clock = xdc.useModule('ti.sysbios.knl.Clock');4 A3 U' s; a2 [0 l. S
Timer.timerSettings[1].master = true;, p$ z! F7 [6 k# B9 w
Timer.defaultHalf = Timer.Half_LOWER;
+ G- n% g4 ?/ v, IClock.timerId = 1;
0 v. U6 h( L' ]7 \3 J* K* ^
* @5 p( b' ]9 v8 O& b% Y: m& P
5 D; |5 R/ |/ O" r$ Y) r5 O
& h2 K+ F* q0 f4 ]$ q5 s+ Z# ~6 }& P9 F+ n8 S; @4 r4 K
分享到:  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-5 20:34 , Processed in 0.039905 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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