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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:
2 E* b' `' G$ r: O0 w- [[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中
; R, G3 K0 `' E7 F[color=inherit !important]
( k+ `1 `( ^0 {, Y( p8 u

6 J7 g4 d/ W# Y; O& K: {8 I[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器28 C6 |6 f* P6 Y, R% Y  [, B
[color=inherit !important]
, }; H1 b+ R# k: s* A
0 L0 V' g5 U, V9 ~9 T4 G4 L' [
timerParams.period = 500;
1 l! I/ X2 y$ g! G; @& ntimerParams.periodType = Timer_PeriodType_MICROSECS;

5 \4 T6 O6 u, ~, ]$ \Timer_create(2, Timer2Proc, &timerParams, &eb);4 z1 c" l/ w' r) i: l
; b% v8 f  ]1 _& R  \3 R
, f# k) I6 t- H+ w
3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);# A. r" d: w9 V
产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。4 j  d4 d. I* o8 c* g
' e3 }# U5 \3 n" t+ N! ]! V  v
* S- e3 m4 O, {

3 C* D1 V% ?0 O2 z2 K% V; k/*
% g; S. |4 ~  F5 r/ [9 _( \ *  ======== Dsp.cfg ========
1 I- i( T: v3 d% l( c" O *
- ?# i6 f' ^/ D% H+ T9 w. } */+ u) d$ N) k) _
% H/ h/ a; E7 e. d

3 c8 O" W( U: K5 l4 G( j/* root of the configuration object model */
; R& g' u; g2 i3 r: I& qvar Program = xdc.useModule('xdc.cfg.Program');
& G" E4 F& j, G$ a$ t
7 ]1 \8 P4 a3 y! _1 I" U1 W0 ^3 V
) L6 r$ N7 A5 `9 X6 H+ Q# W+ \+ O; Q
/* application uses the following modules and packages */
* j0 u4 h" v7 S% K5 Oxdc.useModule('xdc.runtime.Assert');" y2 @% z' ]+ _
xdc.useModule('xdc.runtime.Diags');
" y: m/ H2 R4 s# \xdc.useModule('xdc.runtime.Error');: V2 ^4 D2 W5 v$ h9 w
xdc.useModule('xdc.runtime.Log');. L/ k/ S" G" R! [1 z/ S: O1 X* n
xdc.useModule('xdc.runtime.Registry');0 s9 A7 ~) y8 r, {
% k: ~' J7 d6 _2 b
" h1 C+ X% o; Z
xdc.useModule('ti.sysbios.gates.GateHwi');
; T6 }' |5 L0 _' A$ p8 |xdc.useModule('ti.sysbios.knl.Semaphore');
" L# w3 d/ p' L( Z& X# u3 Z( |9 Sxdc.useModule('ti.sysbios.knl.Task');* U$ C" k9 U2 I5 r
, X  p9 }  v; c( f7 V0 r4 a

* B. }' n% b; `- ?  |: z) r) K, j; V2 s
. r8 o: o& }4 K, F9 k

" d3 l8 Y) k$ r3 O0 \; I3 L" _  C9 [& @% W9 g! v

' i7 p7 {0 a# x1 ^0 i6 [var BIOS = xdc.useModule('ti.sysbios.BIOS');# ^' M( K4 a; z# ~
BIOS.libType = BIOS.LibType_NonInstrumented;
  h; S- `% d! s$ `
  J5 {/ w0 M, }- q) ]# }9 Y
" l% }7 P$ t/ E$ M
/ x* i5 h! y, w
xdc.useModule('ti.syslink.ipc.rtos.Syslink');
0 L( N# t" A. c8 G8 H9 u1 y! y* Q9 `3 l  Q; K* b) p& C
" _" _& ?) S! E

3 `' i( m' A: ~var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
6 X* x* Z" W( s; x7 d2 ~var procNameAry = MultiProc.getDeviceProcNames();
$ T7 }6 R' |  A7 \) ]# J. Z. |MultiProc.setConfig("DSP", procNameAry);+ G6 Z% ?9 n; @+ ?
1 q9 E; y0 O, Q: ^0 i8 h
& J" P3 }' f6 ^
) Q/ O# ^; X* \6 I* T
var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');+ q# y) T$ `4 c3 R
+ _: m) x# o/ @) W4 m
6 h1 N! ?6 i1 l0 r% o" C& K
/ k3 K! L9 ?# T! o8 p
Ipc.sr0MemorySetup = false;5 k" Z( u; o2 f: l, k

# j/ u+ w- \+ J! z" W+ F
7 B# V) j5 n1 S* K

9 m* h7 _5 }3 g2 g- [% u, SIpc.procSync = Ipc.ProcSync_PAIR;* r/ W$ T, r0 D0 q. ?  F4 W

' u4 G0 d) y7 W6 h% i
5 W8 a9 n* v; }! @7 M
/* define host processor */
. }% N, J2 ^4 e: x' A" JIpc.hostProcId = MultiProc.getIdMeta("HOST");
& M1 n! }/ T; v' S% o% t
+ }5 g! @& [/ s! O" G( k

# L1 ]6 ^  j( W( t/* shared region configuration */2 K" S0 w- c+ m6 }8 W& E
var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
0 r) s. [/ x1 R7 c5 a
7 q, b0 M1 @: y1 x' r5 N2 ^% A5 R

$ `; p# |1 z3 h/ U3 F3 G5 u/ H6 i/* configure SharedRegion #0 (IPC) */* a: c% j  t5 F/ X* i; `3 R+ [. v8 Y
var SR0Mem = Program.cpu.memoryMap["SR_0"];
- X$ p- e5 V; a) j/ p! ?; S/ x- Q: }( L5 R0 M, Z( w
5 y3 R* Q9 y+ J* y. K+ F
SharedRegion.setEntryMeta(0,
; V9 Q) l" w0 P$ j1 c    new SharedRegion.Entry({- i* O) v/ C: R$ G+ ~" ^
        name:           "SR0",0 w, Q1 x& N% I1 o0 J/ g7 W
        base:           SR0Mem.base,! b' r/ B' f4 U' t, u
        len:            SR0Mem.len,) L5 ?$ K) z2 p
        ownerProcId:    MultiProc.getIdMeta("HOST"),
% }" A4 j* ]' C1 {  I4 q        cacheEnable:    false,
+ v% N0 O3 c9 u% H( A. _+ y        isValid:        true
8 X- u4 p% t" r# ~$ p9 P    })
& Z) f1 o3 ~7 ?$ ], Z5 F5 P: _);$ U* q8 N# n# J8 F% X

) P& a' P! u0 J. _) W5 D

7 y6 ]4 C0 g. K* @9 N% c
! P% P! d' H0 _
: E! Y9 v& w8 a

3 x' X2 e, M4 y( H8 e3 D! F& VCache = xdc.useModule('ti.sysbios.family.c64p.Cache');
- J& z) \) l9 H1 Y7 M3 ~: {" H4 {Cache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */5 |1 N; k4 X6 |5 X1 g1 `5 w6 [

& `8 T$ l3 o) ~' i7 i5 K' q

; c6 B8 k4 O$ J5 [  ^7 {" }! ^7 B4 |3 Y/ R  n) p
# ]6 e6 l$ g6 E
/*
: s, Q" y6 R: H; @# `; E *  ======== Operating System Configuration ========8 f7 a; m; w- o# S: K! J
*/
' z/ v1 ]5 B( }6 K& U1 H) F3 k
' w$ _8 q- U* i8 ?; r. w' `/ s3 Z( M# q
/ S- ~  h4 y- r0 b
/* no rts heap */
6 p% Y- F. f: z; V) M/ KProgram.heap = 0;
. @$ e6 I2 ?6 L3 K$ p' P+ ]Program.argSize = 100;  /* minimum size */0 C1 b+ E, G6 [7 t* z
Program.stack = 0x1000;
5 e% [8 A, V7 ?+ Y3 S9 e1 G
* x  `8 h2 `3 A& n

  ?4 |0 d  n' \9 ]3 J/* create a default heap */
1 Z6 P4 V& l: {, L8 u: }% ~4 ovar HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
  w9 ^0 W0 g5 N( c$ ]var heapMemParams = new HeapMem.Params();
, v  h/ M  B& j5 n+ B3 IheapMemParams.size = 0x4000;
* y: Q. N' P5 Z  X5 z
/ u* {6 Z# X" b! G) L, Y
$ B, f8 M: o0 M; l6 y6 o
var Memory = xdc.useModule('xdc.runtime.Memory');
0 G, U9 G8 L) ?  z) q) QMemory.defaultHeapInstance = HeapMem.create(heapMemParams);% O9 ?( Z5 N5 H5 P$ I) T, M# W! z- \
7 x7 \6 t  n; U# ?
1 a+ `% x( ^& B' f
/* configure System module */4 ~+ Z$ P- a" w' f; @+ q: w
var SysMin = xdc.useModule('xdc.runtime.SysMin');
1 M+ T9 ?  k3 c3 z# ySysMin.bufSize = 0x1000;
+ Q% G3 K2 w- C3 s, F/ K, VSysMin.flushAtExit = false;
$ z9 D% e% s" z; h8 H4 A* `/ K+ T7 _8 E2 I. w$ G( J

% _" k) N) f/ ]* Bvar System = xdc.useModule('xdc.runtime.System');7 z5 F' H% j* O) l2 W
System.SupportProxy = SysMin;
. z+ F% y4 z; n+ v& S, N) R
; N  }4 w/ O# ?- b) W

2 n) g" }  f) A" ?, }/* configure SysBios to use the lower half of Timer 1 */. S$ o( `) D$ e5 O
var Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');
3 K2 T- b: X/ ~! }* l( ivar Clock = xdc.useModule('ti.sysbios.knl.Clock');3 O, I5 U# y2 W
Timer.timerSettings[1].master = true;* k+ Z2 {+ {; X) x% |  k' P0 Z3 k; i
Timer.defaultHalf = Timer.Half_LOWER;$ `) b3 L: D  U- f: d, j7 q% k; ^, I
Clock.timerId = 1;
, u" w4 y4 d' p/ e$ y# h: M7 H  T- X# p. ]5 k1 H2 C: A* s

8 p* {4 {7 a9 m+ G' e% t( i+ y4 O; R

( r6 Y( D) @% N8 w$ z1 D
分享到:  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-4-30 12:01 , Processed in 0.039175 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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