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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:7 |8 ^: N7 L# [* @
[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中$ p- Z, \% h1 F! \! P
[color=inherit !important]
/ ^! y7 Y1 B% a3 x" I. E1 Z, X* `
8 W/ h! e$ G; I* T7 ]
[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器2
  `3 F) p! {, k0 ^[color=inherit !important]
1 M- G5 a* i& e' H6 n- s
# F* b' |& z8 f' k5 o
timerParams.period = 500;0 `0 T0 d9 n, b! [8 @8 V
timerParams.periodType = Timer_PeriodType_MICROSECS;

# t' Y7 t  {. w% a- K2 ^Timer_create(2, Timer2Proc, &timerParams, &eb);
% p, ^9 T% v' k* ?0 G: |+ J8 {7 l! T- d
# W3 o  a, L- M7 C# B
3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);" `. a" s7 n  h: z
产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。/ P" ~0 v) I7 J  u. @

( R  u) I3 o* X& E

" Z9 s2 H* a. W8 ]5 e
; q  d2 }3 U( q/*
  Z/ N5 c3 F' a0 a7 @# a *  ======== Dsp.cfg ========0 S' {2 K. x3 ~% {  v  H7 n$ P) R% y
*
, s6 X, x8 E& y, k */7 a! ?  U# ~$ H/ R  Z7 \& N
5 o( I4 }# ~9 s( j! @4 C! i, E

" e1 r( W: O! t+ h+ p4 ?' {( [/* root of the configuration object model */
) V3 l- K( H3 n' f! p% @* pvar Program = xdc.useModule('xdc.cfg.Program');' u( N$ S$ j/ e6 X8 E# [5 E' x1 \

: B- L+ x1 J0 E. h+ ^. \0 ~

3 |: b% K) k% \/ G* p( b2 c, S/* application uses the following modules and packages */9 k$ T: i# o: o: Z# v! f
xdc.useModule('xdc.runtime.Assert');- Z2 x- L( O4 i" C' f- S0 {
xdc.useModule('xdc.runtime.Diags');
* F) y9 z. D) Y9 q& a; z/ ~xdc.useModule('xdc.runtime.Error');
2 I4 x: s/ P( B  kxdc.useModule('xdc.runtime.Log');: Z; ^- n4 N9 n3 h3 J# ~
xdc.useModule('xdc.runtime.Registry');
9 g9 G; C' E1 r' e
9 Y( X  q2 j0 W1 A( S8 a8 X
. ^( [6 [$ O- u, l/ E
xdc.useModule('ti.sysbios.gates.GateHwi');
5 M* E. z- ~/ z3 ?0 vxdc.useModule('ti.sysbios.knl.Semaphore');
. v" Q, u7 l/ y5 P) K; Xxdc.useModule('ti.sysbios.knl.Task');
; h8 `- J3 ~6 Q. J# Q9 x0 }1 h/ M! E: Q. h$ |, L
2 H( X! o+ _; Y( ?" x4 A

; Z& M, u7 |" x# y& C# D$ s$ L" E! Y. y* C* x, [' B$ Z

1 d. S2 Y6 c% d/ n5 s
& y5 @" Y9 m+ e% A2 r0 t4 U

7 Z0 S' S! E+ u8 `/ }5 y( F% m1 c5 _7 ovar BIOS = xdc.useModule('ti.sysbios.BIOS');! E/ C) I/ u2 Z5 K
BIOS.libType = BIOS.LibType_NonInstrumented;
; @1 a& X  Q2 C. `$ V; `: c) f2 C

4 V9 H* a  b8 o7 L" W% \! K) a% j: t0 L
xdc.useModule('ti.syslink.ipc.rtos.Syslink');; x1 G4 T6 G: P2 I( W
* j- k1 D! R, `: g- t2 e8 H
$ N1 V$ E3 }* w$ [% B- L9 @

; ~. `5 e% }0 c& I6 l  Evar MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');! V$ w* X0 s4 z: q8 R1 n0 ]
var procNameAry = MultiProc.getDeviceProcNames();* v9 ^9 I: D$ Y: T
MultiProc.setConfig("DSP", procNameAry);* z; q7 ]' F9 g1 ^

5 K! U3 k' |' z$ q2 O" {! R% I4 w

; q3 M, Y% d' \+ K0 c
  D8 C2 @4 P2 Y8 m5 x5 Ovar Ipc = xdc.useModule('ti.sdo.ipc.Ipc');
& Z/ v# x. d* e# p6 s$ b6 L9 [. ]
& p) G3 S4 t' A# Y9 i7 y

! M+ a; ?% R% E+ [: o
$ i, g; G1 r8 u8 wIpc.sr0MemorySetup = false;& R: [/ P+ x: v9 W9 {0 Z3 U

. G, ]8 _' F% w, P3 z  f* E5 R

, J: O" X7 k7 H  _1 j  _* m) T) c4 [9 c  P" ~9 U7 w; P2 @
Ipc.procSync = Ipc.ProcSync_PAIR;
$ a7 ]5 l8 w# I8 W& x* ^* K! ?- x$ P, h* t
5 a" \# z8 ^; x. ~4 Z: F0 ]  A  }# g
/* define host processor */2 a+ j' U* W! F' b9 P4 q7 b
Ipc.hostProcId = MultiProc.getIdMeta("HOST");% _" g8 I* n  h
/ X4 W& n/ i; r4 A# h
! C$ u/ v# T( O$ A
/* shared region configuration */: E) j( }+ x0 j8 j. i/ D7 x9 R
var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');" E7 d0 F. f! Y* a4 S3 h2 }5 x' p

1 o/ \3 b+ y( l* Y9 ]% t
2 O2 C7 R! ^' d3 |) j- W6 d
/* configure SharedRegion #0 (IPC) */
. N) v/ e) D6 @% W: X" Avar SR0Mem = Program.cpu.memoryMap["SR_0"];
6 @6 L* X) Q% _, u( ], E$ g2 n0 [: ~6 B4 \

! p& P& |1 I2 g/ hSharedRegion.setEntryMeta(0,: \. w7 V- S  y9 d0 j
    new SharedRegion.Entry({) o. u' Y, R5 l' u
        name:           "SR0",, H8 n" \5 E6 j/ D; ~3 K" H, e" P5 o
        base:           SR0Mem.base,/ U' Y6 D, ?  J
        len:            SR0Mem.len,
) Z6 G/ P# B" g: {4 v        ownerProcId:    MultiProc.getIdMeta("HOST"),7 j9 W0 ^. z' ~/ ~, n$ h
        cacheEnable:    false,. d. g! ?% j, j# L* _) |3 Q
        isValid:        true
# g$ }, v0 p9 T1 I0 |    })' s; [$ e7 Z5 k
);
) B9 @1 c1 w  P) p% e+ o- K) t
( T! N' }+ S  Y9 m7 P8 P

. x1 M, n5 [( B8 ~/ T3 `, O: b
2 d! H+ f3 k& Y" L' J; T5 f% }, M5 R# C; Q7 ?: q* v
0 O2 l4 T" j: N1 Q4 X# @1 x. G
Cache = xdc.useModule('ti.sysbios.family.c64p.Cache');
  K* |) x+ ~- v4 c; wCache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */
7 Q1 A' [& \% }) b# X# j
6 {, m2 p' I* C& K% p* C
( Q% |# m! A% n
% g# f' b- J2 _" _: y% ~

8 N6 q+ F, b8 N& T% ~/*
$ \# k# c1 {# ~' j *  ======== Operating System Configuration ========
9 r" N$ M  a2 _3 v3 q */
7 K9 M# Y- m% R
. C9 @" F$ X# X

9 q& I- Z3 v6 p& n- o4 l: U/* no rts heap */7 O/ K; w" a; V: ^! F5 w' g1 |
Program.heap = 0;
# ]) P& l! A) R6 E5 X, k/ k0 qProgram.argSize = 100;  /* minimum size */+ m* a  x' e) {
Program.stack = 0x1000;
2 \4 D& \9 h; e' Z1 n6 s! U( b

' G: X2 X9 _; w+ L3 h/ C1 u/* create a default heap */
+ T5 x' r" }, V  s6 ~' R$ w& h. Gvar HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
( g4 i1 x# I5 Y: t' \var heapMemParams = new HeapMem.Params();
; c( X5 |- ~) uheapMemParams.size = 0x4000;
0 d; O! w% {1 X! H$ b) W3 ~4 C, q4 B, g2 j
$ V1 `2 d2 ]+ t/ u9 `- P# Q
var Memory = xdc.useModule('xdc.runtime.Memory');, g" `1 s8 V" ?- w6 ^9 `6 m
Memory.defaultHeapInstance = HeapMem.create(heapMemParams);1 X8 L; ^( n, n( C0 J7 g5 m* t
9 ~3 f! p! @$ T- J- D0 S; e9 i

9 R% F- \8 D  G/ I# p9 A0 E  a' E/ l& y/* configure System module */
; e* F! S2 @6 @  T# ?9 evar SysMin = xdc.useModule('xdc.runtime.SysMin');
' F- C9 W+ A! \! \7 o/ _% R! d4 LSysMin.bufSize = 0x1000;* _- u' L7 [9 H5 q7 H& @8 ~
SysMin.flushAtExit = false;# k, m# @6 R* p! T  Q/ A$ U

" `" c" [5 C( |8 o0 }! f0 M# N3 V

: o5 m* h. U# ?6 J* L' mvar System = xdc.useModule('xdc.runtime.System');
+ i8 g6 c3 P9 z) F/ n4 n' w- VSystem.SupportProxy = SysMin;
/ M' S1 g% E. \0 {+ Y
9 P% ^& t' i7 Q: p3 G, g& I  K

9 E3 y$ P$ _  P, \8 x/* configure SysBios to use the lower half of Timer 1 */
$ l' p; O* z0 w: ^var Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');
) P' X+ {) a: s" K  m9 tvar Clock = xdc.useModule('ti.sysbios.knl.Clock');/ I, V2 e! v( K
Timer.timerSettings[1].master = true;( A' ]% L, k  @7 q
Timer.defaultHalf = Timer.Half_LOWER;7 C$ V7 l, t! C
Clock.timerId = 1;
! b1 r2 m& N( m' B& A; y+ ^$ l; N9 B8 n. c0 O
' u' T( U2 ?4 X$ f. S

" x  Z% D- C" X$ O4 c# {$ l3 Z% B9 B! X0 N5 e3 m$ z
分享到:  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-6-16 11:45 , Processed in 0.062675 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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