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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:
/ l4 N4 X  `* }) J[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中/ r. C1 k' Q. K9 ~4 ]7 R
[color=inherit !important]
- W! ~2 t0 ^8 ?5 R0 d% J
) }2 w% x+ m$ M2 s5 P9 P
[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器2
4 n1 [) h; Q1 f2 c[color=inherit !important]
$ f0 y) f+ v4 c, `  z2 a

3 \) g$ v9 N5 [3 v  ItimerParams.period = 500;
/ s8 p; W; H( g( e: P6 V* ktimerParams.periodType = Timer_PeriodType_MICROSECS;

0 P' V: x0 a/ _: b' O, c4 G4 x$ Z$ DTimer_create(2, Timer2Proc, &timerParams, &eb);
$ i1 _, Z4 a4 R/ ]) A
: x# O9 d" h. R. J! Q: T4 Z1 r

8 x1 m  h0 G: |5 R3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);7 x* f* y% p% O( o& D7 n
产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。
1 D( ?3 ^3 M+ A# ]$ P1 g
# p5 S2 N: @  v* F% B+ V/ b
6 Q$ Q8 \9 K1 l2 _# P  m

4 Y4 P$ E8 E# l* R/*( ]7 Q+ Y0 ?" y4 a$ \& O
*  ======== Dsp.cfg ========
6 Y; C; e5 H4 `$ f5 t *8 b2 G9 V& x4 V
*/8 U3 x& Q" j/ C* d9 z( R4 U5 D2 @8 Q

" p3 `& D- {5 P" ~! [3 T; x9 h
, U& G7 G2 }; m9 P8 p& O
/* root of the configuration object model */
; y& w  Z1 x6 B6 B0 c1 dvar Program = xdc.useModule('xdc.cfg.Program');  A% [, J' m* T' d& r# K9 ]" h
' c/ Z& m, @+ _0 P& ^/ u6 v  ~, f

, o6 p4 _/ ~! r- C/* application uses the following modules and packages */
) C# s6 n- B4 ]# e9 Exdc.useModule('xdc.runtime.Assert');
3 u- r& h% y4 b2 [- c  Y0 E+ C4 G8 I5 Yxdc.useModule('xdc.runtime.Diags');
9 \5 y5 j$ u2 `' hxdc.useModule('xdc.runtime.Error');
8 ^- H$ @( |4 p$ R; ~6 Ixdc.useModule('xdc.runtime.Log');
& B. k7 {0 }. V6 j1 }3 s7 A; P( E2 nxdc.useModule('xdc.runtime.Registry');- H) S" Y4 K# |

+ N4 z9 m. L  s, g1 s

! c: ~& `( u- K. a% ?xdc.useModule('ti.sysbios.gates.GateHwi');6 T, A( E; X4 |, G. L
xdc.useModule('ti.sysbios.knl.Semaphore');9 i/ b* a6 H. t0 M9 p  {3 Q/ B
xdc.useModule('ti.sysbios.knl.Task');
! ~* H2 c8 E/ a; r0 Y6 c* a
+ A# Z7 R) J, q6 j  o6 V; Z
1 Q  I2 G! y' o* r- T6 ~/ F

# \3 N1 |: S% H; x  Z; U  G' A) v; b/ c0 d3 m# z

0 r0 V5 p. x1 K1 C/ Z, |- T+ u
. J  g: f9 @& B1 d* E4 H
6 D7 l0 v; x. g' R/ z
var BIOS = xdc.useModule('ti.sysbios.BIOS');
7 I+ x5 u5 D6 OBIOS.libType = BIOS.LibType_NonInstrumented;  ^0 ^7 O7 C) ~/ M
  G; _; y; i0 s  \1 [6 I  y/ T; z8 g$ v
  S9 x( [8 t; [  h

$ O; K% R, X2 n9 [xdc.useModule('ti.syslink.ipc.rtos.Syslink');
# n& |7 h3 Z. @  x$ C+ R. u0 `' X# J5 `. e5 O4 b+ @

' m4 {. z6 W0 y1 q: c
, d; a7 U  Q+ ?% d! P- B5 wvar MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');" R, @9 w4 |- T  u& R
var procNameAry = MultiProc.getDeviceProcNames();5 A' \& F) ?" G* |- O
MultiProc.setConfig("DSP", procNameAry);& u6 U6 i, P1 N# \7 W# d

2 r1 X0 ~3 v, k' R/ V- o0 W
8 b2 R+ H% I3 F- u
9 K6 m4 w2 A* F$ ^& g$ r/ z- p8 I
var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');* b5 x9 c$ B: |+ v+ S* [' g
+ \9 w8 x0 d3 w2 O; N
+ _8 Y& X1 i+ r& [# d; B) \

+ t# g( a) J4 r. N7 NIpc.sr0MemorySetup = false;' u" J( q9 s% ^1 A$ ]

; k6 n# j/ g3 M2 u" H

  k6 V8 ]$ W( d; F) _8 @
, c  \* |7 h% }/ C9 i$ y5 O3 l# m8 uIpc.procSync = Ipc.ProcSync_PAIR;
  z  Y( F4 X$ H1 \, v* x3 [% d$ X
! s5 W) J8 e) x4 ]+ D5 W& }
: t; d" f( p( g# k( G2 S/ ?
/* define host processor */) Q9 z: M: h/ f
Ipc.hostProcId = MultiProc.getIdMeta("HOST");
$ j: e+ s' Z. f6 @2 b) a6 ~' t! b; ~% x
+ i* y0 S. e7 T! ?. N/ }1 b! g  o
/* shared region configuration */
$ W( W" C& G; w. k7 g9 W9 \6 yvar SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
2 v! Q+ e8 {  b/ c2 [: L8 \- X- N" b9 a2 I7 c0 N2 j7 S9 N4 D
- |3 U) K: B3 v' M( C
/* configure SharedRegion #0 (IPC) */: L2 f/ G: J4 C) {3 ]0 n8 f% l
var SR0Mem = Program.cpu.memoryMap["SR_0"];
1 D2 U# T1 M, O7 `0 g7 x6 }" ?# _; b
& H6 {7 M5 J6 ]0 h% J
SharedRegion.setEntryMeta(0,2 ?1 B( @) T# S6 c9 H
    new SharedRegion.Entry({
4 ~0 Y4 q* o. @$ |/ G: A        name:           "SR0",
% [% E9 e, \# L) Q8 E+ g2 A' |        base:           SR0Mem.base,
9 i2 d) J  g. O5 m3 N" ]        len:            SR0Mem.len,
$ E: t9 r( F4 z) Q& J4 {2 b( L        ownerProcId:    MultiProc.getIdMeta("HOST"),, \% n- h5 [0 t5 H. F5 ^. e
        cacheEnable:    false,. x4 U/ J- N! a, G7 i4 ]+ ^9 C
        isValid:        true$ ?5 ]6 f  M6 L; E5 n! i
    })% I% T" j: R2 C' f
);
7 R0 D+ U/ F/ L4 Q8 y
3 R; l& G  h6 f  V3 V5 F; P

& K. U- m5 A3 G. |% Q/ f" v  }# y) g' V7 b& ]2 U+ Z7 b

- I5 _6 H& ?, R! |. w$ m
, u, {+ N* ?% U$ E. @0 G3 f! @
Cache = xdc.useModule('ti.sysbios.family.c64p.Cache');( v- J: F5 f: C0 D& n% `0 p
Cache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */% g: r' {' Y5 a
+ _( x" d1 i" T* Q) y$ Z
" u9 p. p. y' r1 X. t$ E# V

& v2 m! V" k: `. W$ s& A- m+ I
3 q4 T2 e4 M# [1 d
/*7 u, R( }0 L$ Q2 U; y" j2 z
*  ======== Operating System Configuration ========
3 ~  c4 o3 @0 E4 e */5 K, ~! K4 E# H9 O6 Q, d% _

7 a/ L0 j+ K8 K8 _' d7 N3 T
( |  [! @( F* ?4 V3 x2 M1 U! V0 k
/* no rts heap */
0 Y! W: |% h/ h$ \$ E1 ?3 L$ ^- HProgram.heap = 0;- z3 O! B. e3 X' c4 E+ R
Program.argSize = 100;  /* minimum size */
) N. w: b; O* ]  k2 pProgram.stack = 0x1000;% X' ]7 ~+ t9 x. D5 h" A! w+ a  |
' \7 Y( }: a2 k0 Z% E

: V: g- q& ^# P, K, |/ D/* create a default heap */
8 M5 E+ x# ]" D# Vvar HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');, y, |. t$ C' U/ V9 q
var heapMemParams = new HeapMem.Params();* w$ n0 @$ x+ s" F, Y; M
heapMemParams.size = 0x4000;
. `- p0 d3 ?: H2 b3 Z' }; H: b1 d  E; s: N1 {! Q' w

% ]3 s7 S* `& M" I& t: e7 [var Memory = xdc.useModule('xdc.runtime.Memory');
0 J# i# @! _2 L- NMemory.defaultHeapInstance = HeapMem.create(heapMemParams);' z! ~0 m5 r+ D% _

# D0 P) T# {$ X8 {+ j' B
* z& W& O4 M9 A/ D' R9 U
/* configure System module */& b2 ^. }# y4 a9 O
var SysMin = xdc.useModule('xdc.runtime.SysMin');  v& d# C" o5 [4 _
SysMin.bufSize = 0x1000;
. U: I. \5 t$ m- M# m9 WSysMin.flushAtExit = false;: z4 C, E  {4 A* k! @( ^; @9 o

3 p* c* ?- q  w$ F' U% @7 U

6 _" S& K1 J1 J  Z, L7 a$ q/ y# O1 ?var System = xdc.useModule('xdc.runtime.System');! E% ^! }% {3 v1 g  y+ C; _$ b
System.SupportProxy = SysMin;( P& `3 k/ s! o  _: [( `! u; z
* l9 i; M% J" I

" l, D: J3 L, G& b; k5 b# ^/* configure SysBios to use the lower half of Timer 1 */
; B" o( T- B% K! v6 P+ hvar Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');7 Y7 y; l& u" a
var Clock = xdc.useModule('ti.sysbios.knl.Clock');$ j2 g/ T1 V' ], o
Timer.timerSettings[1].master = true;' n! X) Z) R8 r( g6 l. s& Z2 Q* [
Timer.defaultHalf = Timer.Half_LOWER;  A3 q: H: U  i1 m0 T
Clock.timerId = 1;
, b4 C6 \% i0 E& L! Q5 a! K$ w

  ?9 S4 k2 F* X6 y. P) a& v4 [; Y6 ?
1 k: E; K7 w* X5 M; q
分享到:  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, 2025-8-3 03:06 , Processed in 0.053284 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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