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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:7 k9 r7 f2 u6 q, _. n3 q' m
[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中
! h& N: y+ o. q/ J5 g4 W/ Q- a[color=inherit !important]  `1 h* I* H0 h2 [  k9 i

, g7 j5 ?4 C: C  x$ ^[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器2
, I0 L* W; Y3 @3 x8 a[color=inherit !important]( C: b5 Y; b+ ?" s$ |
6 d1 Y) n0 {. b. d9 x
timerParams.period = 500;
: @0 s  O, m$ E( F' mtimerParams.periodType = Timer_PeriodType_MICROSECS;

# \; K- R) V1 a  a, @9 G& [% x% ETimer_create(2, Timer2Proc, &timerParams, &eb);
0 Q: K6 h- |( T3 a; E" `6 f: X- N  D! Z3 i& V

% x, P6 m/ R2 b% G  H% L* U) x3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);0 O; `- I* ?- F. w4 z4 E
产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。1 B6 w( F. a! H! q
% z6 u5 B  g8 S  @9 J
/ ^: ]' p) R8 d4 l/ A2 ]/ v0 T
9 r2 D- J* ^+ M$ R0 `
/*. u8 r- L2 D8 q9 `  u( o
*  ======== Dsp.cfg ========& A6 z* n& w$ O# x
*9 @* L+ X$ P8 `% \7 `
*/+ _  i" t5 x0 g* J# [0 ~
/ _2 Z& F" w$ l3 P: S

* k4 a' G- V' X# C' C, t2 P8 i/* root of the configuration object model */
& v( K$ U  m! Y+ _% hvar Program = xdc.useModule('xdc.cfg.Program');
# D- q0 }- G5 p' K4 l3 N$ R1 E+ ]: ?: T
! h) g" T$ h; m* a$ M4 }6 s
3 W! x$ c, A' W0 X
/* application uses the following modules and packages */
" m: F$ c6 C# T) [8 a8 w1 S$ axdc.useModule('xdc.runtime.Assert');4 Q0 I* L: t) F2 F+ y
xdc.useModule('xdc.runtime.Diags');& h" e$ I! P( ]" n
xdc.useModule('xdc.runtime.Error');. x  _. ^4 h' V
xdc.useModule('xdc.runtime.Log');
% @0 Z1 Y: f+ L8 w* I" C! xxdc.useModule('xdc.runtime.Registry');
  t, K7 a: n% d  o- `+ z2 e
! Y$ f6 D9 K$ Q2 J2 w" H

( I: ]+ W, J& W2 kxdc.useModule('ti.sysbios.gates.GateHwi');
9 U+ h; n* r4 K. |8 Z  ^" m* J2 M3 Oxdc.useModule('ti.sysbios.knl.Semaphore');( e0 {* \* x8 z% Q/ j9 k
xdc.useModule('ti.sysbios.knl.Task');8 ^& d9 j& F8 a$ V: T" q) a6 c  ?$ g
4 l* {  G4 V/ p5 N9 g" L
0 f. w$ Z! [- e" e
$ e" T1 ~% D2 j$ R/ b
( Y- U- ~" s' r+ Y# h( d: S) R. k
: d2 I6 D4 v/ `+ X+ W2 j% u

/ V. ]: k6 `  R( v5 V
6 U! j7 y  W% }$ X3 f& A% ~
var BIOS = xdc.useModule('ti.sysbios.BIOS');: D$ n2 M  \& @  k" L# T2 ^+ O
BIOS.libType = BIOS.LibType_NonInstrumented;0 U# a# K3 U) k# A
) \$ B: b' A4 Y& f. S+ c
4 q+ s* a0 Y, m: x

1 u2 l' `$ v$ S; f# w0 s3 Kxdc.useModule('ti.syslink.ipc.rtos.Syslink');
, F( x3 y$ b: D  E1 p9 K  h( P* Z( d( P6 f+ K

; X) g8 W  e; H- H5 P! `
' o3 M2 r3 l9 x3 l9 Qvar MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');2 y! C3 V! P1 W
var procNameAry = MultiProc.getDeviceProcNames();' ~* L, B6 W# A0 T. p/ P6 Q
MultiProc.setConfig("DSP", procNameAry);5 y; D# O9 s5 s
" d9 k7 q9 d- z/ Z0 E8 P

& B% W) k7 w( U( B4 ]1 x' U1 M6 q0 m1 o0 u, Q$ ^2 G; _8 m5 b* n
var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');. }6 s* }. u% |9 G/ o

( ?$ S/ S. m4 D  u. z% f2 @" y

7 R; F2 w- L3 I6 J9 t
7 H) Q$ A# T9 F" |Ipc.sr0MemorySetup = false;- S; g3 V, L$ a6 @4 g
) ]( `' @/ T0 {2 y

4 a$ a- U5 X( A  K0 w: k& r" H* J$ O! M+ V9 t- k2 C. S
Ipc.procSync = Ipc.ProcSync_PAIR;, W4 Z: c5 k( |, K) l0 K
4 d) D( ^! P: w9 ?# e$ y9 L
1 m( a- ^0 ~% J$ O9 E" Q# E
/* define host processor */
- _3 Q( I0 h* _1 b8 `5 t; zIpc.hostProcId = MultiProc.getIdMeta("HOST");
0 G3 N1 ]6 m' {
: Y; l9 l2 ]6 a

; o' c/ g" ]$ R( z; ]9 ^/* shared region configuration */" U) @$ i. e3 O7 i6 H3 m
var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');! \2 O& o+ L1 o, @5 V  _

- i8 y" g! w& w/ @' P

# a: J3 |2 O! H/* configure SharedRegion #0 (IPC) */
/ d5 ], q, M, D$ q( d9 Ovar SR0Mem = Program.cpu.memoryMap["SR_0"];7 d3 r; k/ S- j4 J* y

0 Y7 p) E# p; `  R, `' a4 u' j
4 E) s5 Y$ a# g% Y3 m
SharedRegion.setEntryMeta(0,
1 o, ?) X3 p/ g) ]7 b  Y) P8 y    new SharedRegion.Entry({0 l, L3 ?  s# x4 y: o3 r
        name:           "SR0",3 b; o- ^3 Y2 Q7 J# I
        base:           SR0Mem.base,- I2 i( c$ l; ]# e4 o9 O1 S8 I
        len:            SR0Mem.len,' g8 ?# ~% x8 Q3 V; H" h4 c
        ownerProcId:    MultiProc.getIdMeta("HOST"),0 i0 w) `% r) P$ P, k0 `" E: `
        cacheEnable:    false,, A- P. T8 D) I: ]) k
        isValid:        true
% @3 p. ?3 y* q) }" m9 U+ m- l    })
9 w! D& q! s/ e4 F);3 c9 Y$ d5 {# J: t- ^' m
; X# w  N* Z# h5 a

0 E5 h0 z4 Y5 s' ?8 U8 B/ \: q$ s: s+ I5 `& d) ~4 ?

# I% P. r9 a4 O' V0 S& q: {
  S2 S: r9 I6 D/ Y9 h
Cache = xdc.useModule('ti.sysbios.family.c64p.Cache');4 y5 Z! x- k# q
Cache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */) p: z7 l1 L9 \
) K6 B6 d& ?$ U" d- B: p  P

, j+ P9 [+ X1 ?. e
6 ~9 r8 Z: g1 e( r+ @- [
" |! z- a. d! d# l
/*
! M2 K& M' g* _ *  ======== Operating System Configuration ========& D5 R9 y6 k3 n( w- [' B" u* E
*/
! h& Y- h* N5 i3 Q; i2 n9 N6 ~/ Q7 G8 m  _5 l
3 B. L3 R: V, M: _. E) n
/* no rts heap */& z1 q  W5 R; [( ^8 A
Program.heap = 0;. _; K6 i5 f0 x* U) E
Program.argSize = 100;  /* minimum size */6 u0 f! P6 X) I" b3 ]
Program.stack = 0x1000;1 m% d0 ]% v5 r& S+ y& j1 D$ Q& n* z5 P

2 F. a  I, H* A1 E

$ q7 S7 G( p/ }+ A* b/* create a default heap */
$ O. p3 p% _+ c3 lvar HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
4 y: v% ~5 a* A: j, {var heapMemParams = new HeapMem.Params();
& ~- w$ ]; f: `3 RheapMemParams.size = 0x4000;# `" I" y' }8 {* b- }. \9 Z
) A" ~5 Q: l9 P$ q7 W# W4 N
9 [$ P* _3 y3 Q+ y% t) c
var Memory = xdc.useModule('xdc.runtime.Memory');/ l6 Q7 ?- h/ W' w" d4 @& ^* c% r
Memory.defaultHeapInstance = HeapMem.create(heapMemParams);
$ Y* W4 ]; B3 Q: Y5 w% t/ P& M& t/ u2 w2 ]" v5 W2 m! W
$ }+ P! F8 b) a4 E0 j) Y" g! K8 ]3 ]8 g
/* configure System module */' R" z: K7 Q2 H2 }
var SysMin = xdc.useModule('xdc.runtime.SysMin');0 i  r) w0 Z# O1 [. N, ]( V$ A
SysMin.bufSize = 0x1000;
# C7 P8 ]7 D* }  ~SysMin.flushAtExit = false;
9 L' A) `& _! x/ p4 |% e! Q
, W- f6 [/ K. h; _4 Z; a7 h

) `3 Y( i) V/ h6 [8 `: k) P, Hvar System = xdc.useModule('xdc.runtime.System');
% t) S- U$ b1 M' ~System.SupportProxy = SysMin;$ P' d+ O% d8 a* E9 D, O& `
- Q. D) K* Z* v4 k% X
9 n* r3 V2 p" F9 D: y* ]- w
/* configure SysBios to use the lower half of Timer 1 */
3 c5 U2 X: r0 W. u4 Tvar Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');& }: @2 z( V9 h0 E
var Clock = xdc.useModule('ti.sysbios.knl.Clock');  }6 l* I) ?& u
Timer.timerSettings[1].master = true;7 R5 ~7 }2 v: {7 x3 o
Timer.defaultHalf = Timer.Half_LOWER;
# c7 |- a& p3 {% }Clock.timerId = 1;
- }; i% g& J: a/ w: c8 S6 |
" o, ]$ B+ P' Y) c: i" _5 L6 m3 O
" ]1 W+ u# p, C: O5 ?) k  q$ H6 V( `7 d$ h; K3 j8 w
' x* Q, @0 n5 u/ B/ ~3 s0 B
分享到:  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 10:53 , Processed in 0.041842 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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