omapl138中 dsp端time_create问题 定时时间不准确 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:6 f. A/ |4 z0 l- O
[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中
3 k% |: T6 e* f. z- z6 q) p. |' Q[color=inherit !important]
) n  N0 I3 `2 y4 w1 i% ^
: T- y8 Z0 }  a8 S. ^# X4 c
[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器2% w* X0 g5 ~, P9 Q
[color=inherit !important]0 P6 ?# d: Y: }6 R' E

* ?$ {% _. F  x7 L+ N! s) PtimerParams.period = 500;# i" F! N# W. @
timerParams.periodType = Timer_PeriodType_MICROSECS;
: a* s; s( \4 X: q; d, N3 f+ G
Timer_create(2, Timer2Proc, &timerParams, &eb);3 `1 N2 ^( q9 z5 `( c+ j
+ v7 Q) f6 _. y
1 h  u/ v3 V2 J% ]. i
3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);9 H% [0 S7 P, m- x7 \
产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。
/ I" |' P0 p! M* h( O4 z1 B
( l% u9 e6 G) w% c

4 H, h3 y& S" v4 A" |% S$ Z% }* e; O9 }. b) t1 b
/*8 m! h. Y! S; K, |- u) P
*  ======== Dsp.cfg ========3 y4 T4 [) T( W+ K7 }. i
*
. r' J! v1 \% ^  t+ U */2 O  u8 w2 Z: x: D3 R

- O' T* o1 `: R9 E
9 W1 b. q' i9 W  @, i. F
/* root of the configuration object model */
, l4 U+ G& \+ U9 Hvar Program = xdc.useModule('xdc.cfg.Program');7 L2 R/ i1 B. }$ n/ m
, t  A% O* Z2 h. i+ L, V

8 s* Z& q* G3 k1 _6 y* s: h: ?6 u2 l  i/* application uses the following modules and packages */* F7 `' l4 S+ \/ f/ {. q3 Y( b& g& J
xdc.useModule('xdc.runtime.Assert');
( J$ _/ j, o, @, m. ]xdc.useModule('xdc.runtime.Diags');' ^. ~! E: j# z$ }8 {; U" ^
xdc.useModule('xdc.runtime.Error');
' v# P$ X$ [, r. B  Cxdc.useModule('xdc.runtime.Log');
( K9 r3 H7 }+ Y1 mxdc.useModule('xdc.runtime.Registry');5 a  X& o. H: H+ y. q3 N
: J9 t2 a+ _  g% c) S* d5 h9 o

* n6 |& V# [5 m9 g( txdc.useModule('ti.sysbios.gates.GateHwi');3 x/ x, ]# G: u- K9 c* n# h# Z% h1 Z
xdc.useModule('ti.sysbios.knl.Semaphore');# m6 a. l! |" i- V& a3 B" s
xdc.useModule('ti.sysbios.knl.Task');
3 X7 F; s3 o8 `1 ^6 _% `, Q* H. i, o! `* d# a% O9 n

6 B6 }+ I# P" a; v$ ~# v, ~" k0 Z3 y
$ b6 o2 E* l% T* v1 D/ E' m# q5 L+ B( D3 Z

+ I7 M' o) d3 h5 U3 b" ?
+ g# F# S" N1 M5 Q$ ?/ t

9 u- s: n0 y4 Z( G- c4 L% A3 }var BIOS = xdc.useModule('ti.sysbios.BIOS');* @6 o. x* {7 U7 \) h, X: D
BIOS.libType = BIOS.LibType_NonInstrumented;3 T5 B' {$ w' E  D

5 f' d+ Z8 j" x% q8 E6 G9 b" M* H
' A" ]1 A! V4 T

" O% K" L% R! `$ F2 z. V9 ^xdc.useModule('ti.syslink.ipc.rtos.Syslink');
5 x0 v6 J$ C2 t
8 w, f- L2 q. Z/ e: H! ^

) d* Z6 V4 B+ u% q; L
# p9 W5 R8 F& G- x  ~( {$ \var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
( Z3 k" ?0 H; C/ {& i0 @0 _var procNameAry = MultiProc.getDeviceProcNames();
* I; g# i$ j: {' m2 H4 W) w0 MMultiProc.setConfig("DSP", procNameAry);7 d( D$ C. q! G8 V7 H

7 @3 r7 S2 t& P* X7 W3 r+ U
: a- G; U. D: o+ b  g7 b/ Z

1 R1 t8 v) j4 ]: f, {- ]var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');
. q& N+ _; I5 ?4 @4 y  Y2 C9 c4 `* Y0 F; R; c" s' ]5 i! f
# |! n' o) t, L) E
9 x% t8 h: m8 {( f
Ipc.sr0MemorySetup = false;, Z6 w0 m# Y; k+ T$ v
% k# h4 y% z* X
% f/ {$ O2 J1 E1 L. _- R
/ B% b0 z+ m; n/ v
Ipc.procSync = Ipc.ProcSync_PAIR;/ L1 ~0 b; I/ U: \' ^
) W5 h; x7 Y$ i; |$ V8 L

# v& R' D4 k$ j$ P$ ?0 k4 ~/* define host processor */
! K& H( r" s, H7 R1 M$ mIpc.hostProcId = MultiProc.getIdMeta("HOST");% n4 G; l' {7 ]. \9 t/ z" [0 J+ I
# I/ C: x. W& x

) s& C, v3 Q" m" C4 S/ a/* shared region configuration */
# ]. s/ y" _+ Jvar SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');3 |+ ]' q; j" F4 Z, A6 {) U

' Q; k: C' c: {/ h! H

3 U: e' p$ P/ k7 w/* configure SharedRegion #0 (IPC) */9 R* C" N/ x4 m- m
var SR0Mem = Program.cpu.memoryMap["SR_0"];
6 N3 N5 `! u9 w" R
# ]  K, ?1 n) S6 e: o4 d4 |+ Y

: S$ S- J1 q/ R1 U% W4 H3 USharedRegion.setEntryMeta(0,. N: p+ p/ }2 [' S7 c  r! P
    new SharedRegion.Entry({( S; ~/ t- l, U9 S0 Y
        name:           "SR0",# b2 A) h9 M0 x+ H0 a) E
        base:           SR0Mem.base,
: N! z4 o0 K, w: O4 h        len:            SR0Mem.len,
* f: C9 N$ N1 B5 q2 f9 h4 h        ownerProcId:    MultiProc.getIdMeta("HOST"),# X$ @5 P& M& I5 A" p
        cacheEnable:    false,
6 `& `! B2 Y, L4 ]4 B: J        isValid:        true) o1 Y" V! B, }/ {, F3 E( V3 F
    })0 U0 c8 f5 z2 p2 U- ]) E
);3 ]4 g0 [$ z+ \9 ]
' \4 f1 H: f4 J% }: }/ l; V

5 \; q  }# k, M! ?5 }- b  o  j
& N# [0 x  e/ Y
! Z0 v$ N# ~; h. A: B, e, g

. M/ r1 m4 N2 S, F( A( VCache = xdc.useModule('ti.sysbios.family.c64p.Cache');
5 ]! M. l$ P) \; ZCache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */
* T! |7 I. P+ H  }6 y+ i' C( P% M; U5 ?" q, t

" Z( Y7 S4 G& }) k  r4 v* q+ z. c# x' D+ |

# k4 a9 S3 C5 b4 b" z* ^/*0 J( J' |/ M' e( j
*  ======== Operating System Configuration ========+ h2 |. h" A- w1 P
*/" T, ]( D6 V, F

, _7 t* T0 k$ ]

7 Y6 z, @! P* m4 i( v  i8 L( Z/* no rts heap */
3 ]+ C* Y1 J# n9 Q4 W  |Program.heap = 0;1 \! p; T/ i5 T$ h
Program.argSize = 100;  /* minimum size */4 X* Z6 ^; V1 f/ L% x" d
Program.stack = 0x1000;( o9 w8 g; E  n6 C% l& p' P% ^

, i/ g& q* Y  G3 K8 `) b

6 b4 v0 x0 f% v/ y  ?! |& r/* create a default heap */
6 v) E) p) \7 z' O; J+ B4 jvar HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
+ W2 Z7 Q8 w  c' _var heapMemParams = new HeapMem.Params();
0 M2 S0 b) e3 d8 ]' T& CheapMemParams.size = 0x4000;
+ |2 ~" p1 \! O6 y% Q3 M' F$ |
6 ^$ o; r+ F8 Y" G8 g# P* b4 k& V" H
( s$ R' }4 z) E  T. V" S' ~0 c
var Memory = xdc.useModule('xdc.runtime.Memory');
" F+ ^: p8 R4 k& `& |Memory.defaultHeapInstance = HeapMem.create(heapMemParams);" D3 O3 B  G/ O( m% W; F
% q$ d7 L# m8 n

2 t2 }& `# T+ j  ^8 t3 j/ ~/* configure System module */. b1 L! S* u9 R- x5 @& v
var SysMin = xdc.useModule('xdc.runtime.SysMin');+ e8 B6 F/ W- [# [- m! ]* {
SysMin.bufSize = 0x1000;
8 c. j0 L$ d9 k9 ^4 NSysMin.flushAtExit = false;
, p* y7 T5 }1 j, G3 \# ^2 a2 e6 c2 y$ @  m" Z6 }' ?
/ U  J  d* `4 ]! f/ g$ l
var System = xdc.useModule('xdc.runtime.System');8 N/ E1 s! U4 C, K; O  ?( G
System.SupportProxy = SysMin;' z8 {- Y7 {9 {, g

& j6 M) R) h/ `+ w. j4 z1 `/ o. a
5 a/ }* U' i! S
/* configure SysBios to use the lower half of Timer 1 */2 ^5 g/ x5 y) t( f; M9 A
var Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');
! _7 y8 I0 A5 l" Xvar Clock = xdc.useModule('ti.sysbios.knl.Clock');. p, q9 M9 P: n: o
Timer.timerSettings[1].master = true;; ^7 N0 u/ i  B' M9 p
Timer.defaultHalf = Timer.Half_LOWER;
9 k1 o( F7 g) m, q* i9 qClock.timerId = 1;/ w$ |6 ^, Z% L

  n  ^2 O; N$ [, ~. V" U7 ?$ {2 R( v9 n1 n7 I" w7 e; S

0 t& R0 C& P: ^' E& y' s+ V* x7 f; k) C# ?, J0 n
分享到:  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, 2026-2-3 09:10 , Processed in 0.048387 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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