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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:  I" x! Q% w8 m. P. Y( T
[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中
# C" a! [9 h  P* E2 G. J[color=inherit !important]0 b9 b$ S( [- p0 E: Q

+ s& x( n4 y& d/ Y5 ?[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器2
. ^: B/ _  w" v* ^& V[color=inherit !important]
; h3 X- A3 R: l# z( B! X

$ y4 R9 L7 v0 N' ~! Z# S+ ]5 ^timerParams.period = 500;! g4 ^  V$ B% z
timerParams.periodType = Timer_PeriodType_MICROSECS;
) O4 a) W  c1 q/ U+ R( c$ F! ~
Timer_create(2, Timer2Proc, &timerParams, &eb);5 I1 l* k# I( @0 G

- j& c2 \) t; Z4 E, Q/ g7 U

  o5 G8 T/ o" G# [$ S6 K3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);! P, t, R% y/ W& y6 |8 w! Q
产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。
+ Q: @* _" W; T% p* q3 A
0 d  {) Q+ r, y0 T1 _8 L. }9 _7 s

- y* I! \  H6 O' O! E8 c& n4 \/ Q
, b# b7 |1 `$ O' g% \1 K# t; D/ `/*; _& w4 a. y: c3 P
*  ======== Dsp.cfg ========; n6 t. N& A4 @, c# }' V
*5 B9 _: z$ y/ T! E
*/
) u: J7 ^5 ]5 |! R, Z
2 t8 [0 V; z( B6 F3 T

( i8 w( n$ B# z. O2 F7 _6 E/* root of the configuration object model */0 T# B" |) H! B2 n- I
var Program = xdc.useModule('xdc.cfg.Program');2 S* {$ |# y5 W; @5 W
1 V# p* R' h" a$ ^  Q
' r6 }, e; |) F2 o  N
/* application uses the following modules and packages */# `0 P: Y8 F4 `$ Y( I( X
xdc.useModule('xdc.runtime.Assert');9 R5 O8 h) K: d8 U& [5 v
xdc.useModule('xdc.runtime.Diags');" O' I8 Q5 t' ]1 f7 T. e' F
xdc.useModule('xdc.runtime.Error');9 L- {! Q4 ]4 B/ h0 [
xdc.useModule('xdc.runtime.Log');7 A  Q" u1 r: q' Q; R2 _
xdc.useModule('xdc.runtime.Registry');) {5 g0 V/ M, Q5 {. r" I5 P. ~
8 |- n* n6 \' q# w& V
- }( q6 f2 s. ^
xdc.useModule('ti.sysbios.gates.GateHwi');' }% z% ?  N) Z4 M
xdc.useModule('ti.sysbios.knl.Semaphore');
8 Q: C6 R. V' c& o5 C; Q$ c& }7 exdc.useModule('ti.sysbios.knl.Task');
  _' x  s6 U1 R8 j- R: B& X5 c* Z. J( T+ R
9 `9 M( U5 g( w0 K0 L# d% N! ]
$ J6 r& v3 T' O1 Z# ^

  x# @- j/ J5 V4 \, V: p/ r' I
3 i' E. M& Z4 e- J+ N5 l
5 I5 o# l  }4 s8 D: Q

" z% y( {' b* g' a1 l! H  ^& z% ?var BIOS = xdc.useModule('ti.sysbios.BIOS');0 k4 J& W8 S% @9 L
BIOS.libType = BIOS.LibType_NonInstrumented;6 L; a/ v! K9 a& [$ A2 ^

+ y' t% y$ ~# b* \% t

8 h0 e0 z+ p3 J, |
# _; K# v0 ]" b0 W7 r3 ^) `xdc.useModule('ti.syslink.ipc.rtos.Syslink');: P; h% k+ ?6 ~, v

% {* e' g# [- A. A% i* u7 y

, O# _4 v6 `! ]  V1 X* [
5 G- o+ o2 I  w; k9 }( K3 u0 cvar MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');2 M: P) G$ n5 l6 X0 L! G6 F
var procNameAry = MultiProc.getDeviceProcNames();2 g" H* U  C" O' I% c5 p
MultiProc.setConfig("DSP", procNameAry);( D: b* l  ]7 h6 m2 m

( D3 R9 V* ^6 U0 S# C6 ~4 i
% W/ W$ @: a( i
$ _7 R# F/ k& L8 O
var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');
- j" d. t3 H$ Q7 t+ k5 f$ {3 E8 K

& q$ J$ B% S* f& J) U2 `. |0 @6 F4 a# m) f5 l: Q. Y& m2 e
Ipc.sr0MemorySetup = false;6 E, E) B( o" Q/ L: i

. a( m1 O5 s% x; F! D
8 j2 L" q- ]! d2 ~
0 q4 K$ I; G+ O3 @5 R
Ipc.procSync = Ipc.ProcSync_PAIR;
% f8 u5 }7 r5 x$ }
( X: u4 D8 V; D9 ~
! |7 [5 ?' Y: r2 u+ _
/* define host processor */
/ D! u7 S# V+ E+ |# n8 Z# |Ipc.hostProcId = MultiProc.getIdMeta("HOST");0 }+ {/ D) p, b- J& W- F

1 v" m7 w, K8 p$ [3 [! n4 y
4 i& m' B8 N& d$ p
/* shared region configuration */& R; q! P  a# M4 P+ _8 N$ l0 k' m, |
var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');. _5 u' w7 H" p& j$ s

) D1 ]8 {$ @- q) P
4 B- f+ N  M' e! M9 c! z
/* configure SharedRegion #0 (IPC) */
, c* D- H0 ?( Gvar SR0Mem = Program.cpu.memoryMap["SR_0"];( u2 k& n4 ?* D( f
4 B. ~* H* w/ Y; G* q, }5 u

1 T( q0 N( E$ d1 vSharedRegion.setEntryMeta(0,
& Q2 A5 ?* d1 n. Y  D6 o! o' P    new SharedRegion.Entry({
7 l2 F/ e8 X9 [( {7 T# x/ t( K( k* ~, v        name:           "SR0",5 \% y7 z5 W1 v: _. ~: `' D
        base:           SR0Mem.base,. u/ o4 a% P) H- b
        len:            SR0Mem.len,/ r1 k* O1 ?3 I- ]$ m
        ownerProcId:    MultiProc.getIdMeta("HOST"),
* V* I7 l) f4 d$ L) ^- q        cacheEnable:    false,
. c2 c* ?$ p' Q# B* M5 O        isValid:        true
+ S9 s9 _1 d+ }) k' }8 d) k7 a    })
2 ^1 T% y( ?* l+ T  G% E! H);  Y3 B# |! ?2 g9 j
$ F% _1 T8 t9 E2 s2 B3 W" J

9 |- f8 @4 N- I1 ~) p; X7 ^: O$ p& b$ ~! L7 r

, H! h9 s, f4 Z) g' a4 A& L- q

! h# K3 l1 A, F& F% W6 X$ A$ OCache = xdc.useModule('ti.sysbios.family.c64p.Cache');
: Y( r  v  K3 ^; f( ICache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */
& U9 d7 G/ I) h' ]3 F3 E! [' I$ Z
; t7 C" D" y  u1 b+ m' {' c% [
/ i- @; Q' y1 k  R" y0 q

1 x' R8 r5 |! S& }1 |& m/*
' b; W3 `" o" E. p0 U5 `2 ?, o! Z *  ======== Operating System Configuration ========( `9 q" h( A1 R
*/8 B3 h; l6 K! b* f" }9 q; |' _
7 Z, P( M2 S) u, @8 I* M9 B

! B: [9 s6 ^+ i" i0 `8 @3 l5 W/* no rts heap */
6 y; S& h! x* d# z7 i$ `3 ~5 eProgram.heap = 0;. e! H: a2 d; x1 D/ s1 N) s7 {7 g
Program.argSize = 100;  /* minimum size */* ~3 P) e7 h' D. U! `" L! y
Program.stack = 0x1000;! p* k) e. E  @2 R7 D- k
" U% f0 d) `+ o! I0 ]2 k0 `2 D! ]

6 P; c/ h6 ]% V% x% T/* create a default heap */" }( R6 [+ z3 v6 W4 D2 y! r
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
9 L8 J! R7 i4 cvar heapMemParams = new HeapMem.Params();2 H3 r/ q) @/ f) X0 c4 x" @2 a6 p
heapMemParams.size = 0x4000;! i+ J, [0 B1 ^3 O

) L: `2 E2 ?  E8 m0 P

! W3 H0 S4 G/ c; h6 {* rvar Memory = xdc.useModule('xdc.runtime.Memory');
* K6 O$ D( f: A0 TMemory.defaultHeapInstance = HeapMem.create(heapMemParams);
+ m$ _) z% o2 d& r. T4 Z. O& [" G

1 A! f; O! a, D9 P$ a/* configure System module */
) ]( Z; B$ ~" n. fvar SysMin = xdc.useModule('xdc.runtime.SysMin');
" x4 _1 s) j% D$ oSysMin.bufSize = 0x1000;
' @6 ~5 }6 s; H6 u3 vSysMin.flushAtExit = false;
) V$ r4 |# p& v' S0 D5 |- s+ P' y, G

& S" k( p, p2 j. X/ i6 uvar System = xdc.useModule('xdc.runtime.System');
+ C+ l. g  K7 X+ j/ K- bSystem.SupportProxy = SysMin;
' p, f' ]8 `- P. n2 s
7 s* ]: l, P' a. Q& M1 h( ?

) Z6 Z2 Y! l7 q# i8 _4 z  @1 ]/* configure SysBios to use the lower half of Timer 1 */7 s2 B5 O' ?- L6 z, F) ]
var Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');1 J5 J# L) s* U3 |0 e
var Clock = xdc.useModule('ti.sysbios.knl.Clock');
7 \0 n% X+ \8 Y! g( aTimer.timerSettings[1].master = true;+ f) v: o; I- o1 j6 p9 D# I0 R
Timer.defaultHalf = Timer.Half_LOWER;; a  B5 z3 T' |. f' k: f' d
Clock.timerId = 1;  {$ V/ y, _( J* k
9 j9 o& c% }* Z" S) n) U, u

- T5 E/ m% _5 p6 g
  G* F' U" ], Q" K& T: B  b8 ^+ k6 V" S; D8 q  W# }
分享到:  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:09 , Processed in 0.044239 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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