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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:' U. O( b$ N. N* A" C; I9 N
[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中2 S0 O+ R! M: C+ W8 F! T
[color=inherit !important]) S7 n9 L6 `/ g$ m

* D5 H* b  w: R% B8 F- c, @& f[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器2% A' p& h6 Y) c7 B% p
[color=inherit !important]
  [$ _, j7 u1 }- p" [$ }1 X" }& o
5 f4 e0 s: S4 `* H+ Y$ `) N" S
timerParams.period = 500;
1 P9 p5 J7 L! N+ S  z7 S8 `& _timerParams.periodType = Timer_PeriodType_MICROSECS;

6 C0 I/ o& @6 t$ j! I; tTimer_create(2, Timer2Proc, &timerParams, &eb);
) k4 g- [) a1 m) K5 ]
+ I5 S1 a' {; s- T, h
0 Z) P8 u4 c2 F5 z1 S/ w
3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);8 y) x  N5 G' O
产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。3 C2 X; z* _3 z, q1 N+ `
" P6 m3 G& V8 a$ I
  Z4 }7 |* x- V1 q6 B4 N3 R

* A6 g+ S8 p2 o* T. o/*
4 k* ?* M$ s: d! W5 Q5 { *  ======== Dsp.cfg ========
1 }$ L7 Y& E* g/ ]% z" g* z *5 _7 N0 N. ]+ e8 m
*/
7 n$ X: `, [! K4 _# Q: K
$ K+ F9 s6 t0 M! `) O# Z

. V4 X) N' h. `, {, i. j/* root of the configuration object model */' P1 e+ @& y) k' r
var Program = xdc.useModule('xdc.cfg.Program');# A7 E0 t. z! T+ ^! O5 x
( j' l* i4 b% U5 }
, G( O2 w" z+ S2 a% h* x( P
/* application uses the following modules and packages */: R0 p) z2 H. r( I/ d! D8 X
xdc.useModule('xdc.runtime.Assert');
) u$ D  H( \+ [& k* a# b4 V* j0 Hxdc.useModule('xdc.runtime.Diags');
" h) U( m& @" `$ u: W% H: uxdc.useModule('xdc.runtime.Error');
/ Y; Y) ?- _4 g! o7 nxdc.useModule('xdc.runtime.Log');) o9 @% B- E% p4 K: M
xdc.useModule('xdc.runtime.Registry');
  ^9 \$ L! c3 V% X5 N7 ^$ b* r5 W9 I( X" _  v: m% a4 D

! q9 J6 B+ @! t/ \+ ixdc.useModule('ti.sysbios.gates.GateHwi');
! q3 r! s2 E/ L$ g0 ~  Ixdc.useModule('ti.sysbios.knl.Semaphore');
9 L6 b* Z  `. Z) |# {4 wxdc.useModule('ti.sysbios.knl.Task');
8 u7 U# e  a4 p: b0 _; c1 r4 N; {0 C! |3 _" e3 ~/ _
' s2 j& g0 h( T* o+ E4 o# K  Z( w
5 H& _  ?% ^7 a0 s6 M, [; E
: w8 m8 {2 w  B+ H' N
/ K2 g: D7 A. d3 }% Z7 P
# u- u9 J: M* Z( E* l3 d

; ?$ o: t. A9 i8 P; _var BIOS = xdc.useModule('ti.sysbios.BIOS');
" N6 o5 E( `$ i+ O( b0 L! OBIOS.libType = BIOS.LibType_NonInstrumented;
% N; x+ Y3 J' u& `+ y
2 }8 a9 U, N  u5 N! k7 p- L

% f+ }& i. g% f0 b0 }6 n4 o* q7 k- s0 `
xdc.useModule('ti.syslink.ipc.rtos.Syslink');/ J" V3 E2 `4 k7 z5 b: ]

" A+ l' Q1 w; J& M: x2 [: p, f5 ?
1 X( R% F. d) d3 V+ O9 {2 V7 Y
- i' V( O' e* v0 y8 j. e0 k
var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');8 V$ d- ~  Q. ~2 h- N3 R
var procNameAry = MultiProc.getDeviceProcNames();9 r) b) _1 [$ u1 O+ Q) ~6 @9 q
MultiProc.setConfig("DSP", procNameAry);
+ T6 H9 L4 y# }6 R  ]! c7 a- x. ^2 q
5 l9 b0 s3 C$ R7 V7 M

- b0 s9 [% R$ e- |. Z8 t$ B& V; |; K0 F' O" z
var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');3 D6 D; G7 n4 r6 Q
. ^& u/ y1 U7 n
2 a5 g& y% o2 m5 T% R

8 w: T% R" t; x  L* HIpc.sr0MemorySetup = false;+ e7 d7 ^' ]7 x0 @$ q4 z0 C  X
2 z# E; d" D& V6 ]! A, D# J
- G, t: j" a$ z/ Z3 v6 w  R4 ?2 x# [

+ A1 l5 t8 P8 ]Ipc.procSync = Ipc.ProcSync_PAIR;
" Q7 M0 S% H1 g+ A) A5 E3 S. N/ m6 P1 C/ y7 L& Q* Z  z7 i

9 p0 e& x8 B3 i& |  s. }/* define host processor */% g3 v/ O; n& M) m4 [/ y% O! g
Ipc.hostProcId = MultiProc.getIdMeta("HOST");
7 }) D, s/ [+ z' e! b! T3 l
5 b# m3 f, k2 s! Q6 x" p4 j
# F" j1 [, r4 Z3 e
/* shared region configuration */
- Y2 K: n7 _5 w, a+ ?2 D( avar SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');4 R0 o5 k, @4 N1 \9 e

* g9 z  j& Z8 n: _
4 U' \% \% U6 }( a8 Z# p
/* configure SharedRegion #0 (IPC) */
9 T* V, J0 \' S. F* nvar SR0Mem = Program.cpu.memoryMap["SR_0"];* x4 W% [+ F+ c+ R

* r9 T8 l+ X0 v8 G

2 `$ U, ^" K$ o0 ]; l5 DSharedRegion.setEntryMeta(0,
# ]% o) O; L: P* u( z6 L    new SharedRegion.Entry({# ~% Y) @6 Z$ a5 v( D
        name:           "SR0",
5 c/ }& z; m: {$ X, t2 g+ E3 k        base:           SR0Mem.base,. y" w. A5 J& J) f6 _+ E
        len:            SR0Mem.len,
) w% Z; c" j3 O        ownerProcId:    MultiProc.getIdMeta("HOST"),
3 O4 Z5 i8 Y/ N" c& G! E+ \        cacheEnable:    false," ~  r% S& f: h0 E! ^0 q8 F5 z
        isValid:        true5 z5 z% e4 t2 b- e
    })
: J9 f" o0 e: @8 S/ d& K);8 q( n/ L7 y; M5 l$ N

, q3 o. o' \$ \
$ O4 ?6 y: k9 A7 k3 W
2 [. k! v! ?+ g& J. H
) B  G, G0 W% l$ |+ Y4 W. h5 D

" S# \; e' |  a: |+ c8 uCache = xdc.useModule('ti.sysbios.family.c64p.Cache');& D7 r. o5 S% b! k6 U" X1 G  q
Cache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */
" \1 ~% @8 G8 z6 J
2 I$ C' y' o! U& f1 x

; v. C1 x# K  s! `0 D5 R9 J3 B& O1 m- C6 S/ K1 z& }+ o0 y, k# [
) Z8 F( d1 Y; Z; Y( [$ T9 \
/*
) ?/ d" b: \* t# B5 A3 q+ N *  ======== Operating System Configuration ========0 n/ A: g4 I  k
*// Z6 o1 b2 G" B0 ~6 [$ y: Y! G3 {
! U' z( I. c3 l

+ \0 w- a9 R2 d: A5 k2 D/* no rts heap */
# k+ ^2 c$ V3 G5 qProgram.heap = 0;& o  `: M/ q! `1 f7 s2 x8 X" P/ Z
Program.argSize = 100;  /* minimum size */
5 d7 {6 `. T6 q: Y; u" u8 zProgram.stack = 0x1000;- w# T! m  o/ m3 w

5 t0 [7 c9 p6 m6 g0 k

9 f; v7 b  O! ~/ m5 a/* create a default heap */( R9 `; i0 z7 y5 |: X' W
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');' v6 [0 Y% W4 k- r" `8 a
var heapMemParams = new HeapMem.Params();
3 F+ ?7 o0 e  [; e) `/ q+ E8 i& BheapMemParams.size = 0x4000;
, R( G+ T" d; x4 o3 i0 t) p; I8 @; F% w' A0 P6 J1 H
' P. s& c9 d% K2 F" X
var Memory = xdc.useModule('xdc.runtime.Memory');. Q# p# A' \8 U3 W" k5 M* j! ^
Memory.defaultHeapInstance = HeapMem.create(heapMemParams);
* l# w$ v8 {0 q& y* s  l) C* V  u2 y+ C  t, o) e
; R0 `$ j5 |' K
/* configure System module */) |& @. P* S5 R2 _* Y$ s
var SysMin = xdc.useModule('xdc.runtime.SysMin');/ \0 D9 L: n! @4 B  G/ I1 j1 P
SysMin.bufSize = 0x1000;6 w7 c* i+ n! q
SysMin.flushAtExit = false;
5 O& d' r# h* z9 g! |  T' S  l" `" }% X& T- I: }' \

" W; C3 B6 Q* Dvar System = xdc.useModule('xdc.runtime.System');4 e2 ^# c9 {! n
System.SupportProxy = SysMin;
4 ~; I& L: ]0 p9 l2 Y  [: {2 J- A( s
9 T* A5 G( P8 h  Q9 Y( S1 V
/* configure SysBios to use the lower half of Timer 1 */  g1 N6 j; ?1 u1 t& |/ |0 K( I
var Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');
; Y# {1 q  O' S+ c. a" rvar Clock = xdc.useModule('ti.sysbios.knl.Clock');2 m) N# k! E1 `" N7 k1 r
Timer.timerSettings[1].master = true;& Y" v, Z9 F6 ]/ N% m
Timer.defaultHalf = Timer.Half_LOWER;
5 ]  V& r7 H2 w0 sClock.timerId = 1;
$ t4 d- E8 T9 d! w6 o7 G8 C
- n- A5 L7 h" J! W! v  x" R+ B
; `) f( N# u8 S" Z6 m4 C0 @/ @
& c& [3 h5 L* n/ ^; V) A4 l$ f" ^, Y
* y; Y9 e" B$ }; _2 R
分享到:  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 13:56 , Processed in 0.039057 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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