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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:. W1 Z' a' |* k8 _/ X) S9 r  S
[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中
2 x& d& I6 o* a4 I  i% p$ z0 J[color=inherit !important]
- E( ]1 h0 n# Q
" y' \% z& b5 p. j3 T. G
[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器27 r9 C, \) r- P: H) _, m9 z3 b
[color=inherit !important]& ^" u2 T" M" i! N  \0 @

9 D2 ?! P* s; k& XtimerParams.period = 500;' i# \* o. Z. m6 o# ^: _, R& |
timerParams.periodType = Timer_PeriodType_MICROSECS;
: w5 H7 }1 o# m$ ]- g  [2 T1 b
Timer_create(2, Timer2Proc, &timerParams, &eb);( Q8 _) |( e+ q4 L1 M5 G
" ^1 D9 H: {( C. u% i% j
3 ?" ]0 u+ D/ w; W& z) I
3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);
6 K  ]- Y3 {+ n) I1 R5 z* Z产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。
% j+ c/ T1 g9 Y) X# L, d% D$ J) Y0 I7 a  a
0 g4 R- L* v5 F

' b/ V2 o  x  F8 O& v; p/*
. j0 L3 Z7 p1 f' H* Y *  ======== Dsp.cfg ========* v* E+ H& A9 l3 f/ m  c6 C
*
/ G- ?6 X2 d4 }$ ` */3 ]9 L0 z- g9 t/ N" Q, d+ C: F/ F
# a' t2 @$ l3 x0 t

' R) ?3 Z& l; ]3 g5 _: t/* root of the configuration object model */
8 r/ R; \, C+ L2 I3 _% l- Tvar Program = xdc.useModule('xdc.cfg.Program');
+ ^2 z. @% Q- m; D0 z" E2 j* ?9 g# r& p$ I# f

: y1 w9 A* A7 I% ^. B) v. Z/* application uses the following modules and packages */$ t+ o  v- d2 s
xdc.useModule('xdc.runtime.Assert');9 x; S! T' W: |- x: _
xdc.useModule('xdc.runtime.Diags');
' g6 S4 @# f: `/ P8 t1 xxdc.useModule('xdc.runtime.Error');% E, K5 K2 Y8 t& o
xdc.useModule('xdc.runtime.Log');8 X, Q8 j0 }6 q' m; F
xdc.useModule('xdc.runtime.Registry');& t& E( C1 w1 o- F- s4 P  ~4 l
& P* F) c2 L+ p5 U2 g

7 |" h( m* j1 x. h) _& G; Fxdc.useModule('ti.sysbios.gates.GateHwi');
( N1 r0 N, `, A" exdc.useModule('ti.sysbios.knl.Semaphore');3 L* ?# d+ l& D  J
xdc.useModule('ti.sysbios.knl.Task');; \1 d' @. B/ O7 ?& J  r/ h" l

6 e5 m  B! s1 J; x9 N
" ~- [/ Y- h  s& E% N( t- _; o
2 H$ c7 B6 ~. c1 G) F/ m+ q" }
) b  y: c5 B3 a5 P1 t- @, ]$ ?
* R7 `5 t$ p7 J8 O  I
( _$ A' Q: C( I. j' ^' k/ W

- g$ N% k: G* i3 G* A4 T! lvar BIOS = xdc.useModule('ti.sysbios.BIOS');
, w4 V9 W8 ^6 k$ o& L; TBIOS.libType = BIOS.LibType_NonInstrumented;+ D* O2 o0 z5 D) p' H! z  c

/ _9 p3 C/ V% }
1 O( Y. `& T7 }0 w( p9 r& D3 [
. m7 J  j* b3 ]
xdc.useModule('ti.syslink.ipc.rtos.Syslink');4 T- r, B: ~: r  ]4 z5 u

* e4 W7 ^8 |. Z  M

  J& l2 `% v& B0 H4 D8 X  @5 s" l0 a0 F+ O
var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');7 e; Y2 ?2 S! y
var procNameAry = MultiProc.getDeviceProcNames();
( C/ S* D2 {: y) _MultiProc.setConfig("DSP", procNameAry);6 b" h$ G4 `1 ^# G9 G
7 `$ L/ D4 X1 V4 L0 I  M
+ L, e5 `4 \# t5 l1 b- B

: m+ [  {- x& S  @6 p" R2 C: ivar Ipc = xdc.useModule('ti.sdo.ipc.Ipc');
; |( b" ~2 z5 l( m( g+ r
, ^" g: R1 J" ?8 [( V5 G
$ M4 O" Q& M' u* C. E' D
5 K2 w+ A$ E" I7 M" o0 C
Ipc.sr0MemorySetup = false;
8 P& L5 S- L# W* ?1 m' G7 Z6 }4 I1 x+ B' {
7 t- X! q" u0 ^5 b$ f; U* e
; V; i: ~) ?+ n7 [9 z" Q
Ipc.procSync = Ipc.ProcSync_PAIR;
+ ]" j: T* h- Y/ h! R1 r) e: f! B7 q, s# i3 o

/ T+ s. A$ S# N1 m+ V/ p: K/* define host processor */) E0 e, S% _# J/ ^# D8 O/ q
Ipc.hostProcId = MultiProc.getIdMeta("HOST");
; }4 ?  Z5 s( j3 C1 Q, S7 C) K. P& a/ i  M! S0 V4 @5 \% ]
0 D2 Q- V$ ]# j4 m- M  L8 s
/* shared region configuration */3 G. j( p( U  T
var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');/ i! d- R* ~6 N" s' P" \3 Y2 b

1 n3 `( [% g! X1 Z& B/ G

  {/ Y/ E, |* z3 A. C! Y/* configure SharedRegion #0 (IPC) */( g2 w+ `8 ~" \! n% p
var SR0Mem = Program.cpu.memoryMap["SR_0"];
3 Y2 K) l+ J. B, O1 M, d0 T$ {9 S2 Y# P- K. k, j. p4 w
: k+ `/ e+ T) o  G$ Z
SharedRegion.setEntryMeta(0,
' ?8 J; _" q+ s    new SharedRegion.Entry({( a$ |' {% k/ p- O
        name:           "SR0",* a3 i" |2 W- Q% i
        base:           SR0Mem.base,; Q' J, P6 D. B0 i' D
        len:            SR0Mem.len,6 x0 n* R" b* V" z3 b" m1 o
        ownerProcId:    MultiProc.getIdMeta("HOST"),. u1 H0 y3 w/ {: P! H/ M
        cacheEnable:    false,
3 g( s: g$ a9 z: c3 L, w' U8 L        isValid:        true
  ?, ^+ d- J5 d3 I9 `0 P    })* e$ [' G! @) m  T' s& b  g) M
);
8 L% S% b1 |  p+ L* v! K8 L% I- g" m9 r  h, _
- ?/ H1 k! k& ~. e" o* _6 }
* Y, y# x% m- s3 ~7 ^

: Q7 V4 v; p) n  p

  L& k( j$ _5 k! NCache = xdc.useModule('ti.sysbios.family.c64p.Cache');
5 [5 I/ L, L  b( f: H7 Y# iCache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */. d2 @$ m5 U  Y; b, s) R
# L4 T$ c" H9 ?- @' k5 p/ G! \

6 }/ M; I/ m0 \" K. o8 b; d5 ^# f0 E/ K$ Y1 \; ~* H/ z: `

8 f7 m1 u# U* ?2 L2 o; U# V/*
5 T) G5 Q7 V1 M' e4 ^8 u *  ======== Operating System Configuration ========
- M$ E8 ?! Y" M% A, S */
. C: X1 K+ b' [4 G2 v2 @
' E4 [+ O3 r* C) d6 U

7 i7 \) A/ F0 I2 C+ Q9 a/ [0 w/* no rts heap */
. G  }" a( R% {/ d( h& @/ iProgram.heap = 0;. }( q/ R6 c, a' m) M
Program.argSize = 100;  /* minimum size *// a! E; A3 m) T5 N9 `% g, c5 }
Program.stack = 0x1000;, A  K& f& s. V& U7 E9 ]7 o
1 k- q" b/ y+ |& w" ^5 q
: p* y; z3 v9 B, ?$ p. g
/* create a default heap */
2 s- u1 T  _* f; Yvar HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');4 }; _. K8 W: F5 i3 A& R
var heapMemParams = new HeapMem.Params();4 _' f, Y' c, Z
heapMemParams.size = 0x4000;. M0 s! M5 R: a6 Z; H4 |
% e6 J& j7 X7 H2 u0 ]
/ n/ t& h: F% \6 R
var Memory = xdc.useModule('xdc.runtime.Memory');
9 B7 i' e' q0 }& d- f/ k) MMemory.defaultHeapInstance = HeapMem.create(heapMemParams);
+ o$ Y  o- T' v% X( O
% j. t" G1 n! y4 h1 |8 y/ |1 y

8 l( P" l$ Y* J7 u* Y/* configure System module */9 t3 S: Z' g7 d* J
var SysMin = xdc.useModule('xdc.runtime.SysMin');
% l1 D+ l6 K' J( bSysMin.bufSize = 0x1000;) d- _) ~. `: G  h  `! y, ^1 E
SysMin.flushAtExit = false;  n, B6 D: P2 j# H( ?% d
% _  I; a# c4 ^# I( N; i. f4 Y7 A
8 l+ k7 b) s1 ]: h" H, j7 t6 z
var System = xdc.useModule('xdc.runtime.System');, p. t5 _  I$ Z' r
System.SupportProxy = SysMin;
" `) b; R! o2 c6 a. x1 M& u( o" E. j& X: o2 X
) i  x5 r! \% b1 }" L& w! B
/* configure SysBios to use the lower half of Timer 1 */
& e8 a7 q& P, v4 B7 I  dvar Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');
! d# `7 O+ b0 U. N8 x/ xvar Clock = xdc.useModule('ti.sysbios.knl.Clock');% u1 Q0 V. m5 D6 k$ R+ ?& P2 V
Timer.timerSettings[1].master = true;
; K, y; R( z  @( _( v2 |Timer.defaultHalf = Timer.Half_LOWER;
' Q. B- y; w9 {Clock.timerId = 1;
3 J0 J8 n$ e' Z' o# \$ a
- D8 A) D- a$ @, F/ c# J2 x+ k0 i$ i* o# h( ^( t4 N2 J3 f/ M
* e# Q  q! A( F2 ~0 u: Q

: |7 D$ j. ]0 G5 l" m. E, [+ a
分享到:  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-3-17 06:48 , Processed in 0.044643 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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