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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:  l5 e$ ]6 W% R
[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中
# E( H6 Z3 v4 v) {3 b$ ][color=inherit !important]
4 B8 J( }! J6 E* R

& Y: X7 X: L; Q$ z' p9 d! g: N1 V% m[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器2' D6 c+ H0 V6 D* U) C+ D0 Y
[color=inherit !important]0 q% q) G. ~0 _  T) P# H

0 P4 S" T) I0 Q; \! w9 L/ otimerParams.period = 500;' Y) H! `9 d6 k& c
timerParams.periodType = Timer_PeriodType_MICROSECS;

" e9 \! @! O: Y/ o  i( y: ATimer_create(2, Timer2Proc, &timerParams, &eb);" i+ w* k( E8 u
; Q, l8 ^8 A6 m0 b
# T: p6 k$ b) E5 m
3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);- w* \* J! m  [, }2 Y
产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。
0 d3 [8 i5 b8 z' S( n: d/ p' P5 W9 M' Y
: [0 q! A$ c8 {

5 x" U7 a' P, B: T  v5 {( @! k2 y/*
0 a; r  D7 B7 E  s *  ======== Dsp.cfg ========* Q/ ^- H5 f6 [0 A+ A3 [
*
  Z( `0 D3 P5 E5 _6 c */! [9 s- x  l- q
6 h' v- x8 B1 `3 J: N8 N
$ Z7 P4 `* a/ Z" b: O0 F, r) c
/* root of the configuration object model */# ~4 m: k6 ^6 \' t6 ?2 z' y
var Program = xdc.useModule('xdc.cfg.Program');
* L: E7 Q8 O1 u% W& v2 e2 ^. @/ R' h7 i5 {) Y) N

& }& o: ]7 f+ P3 @/* application uses the following modules and packages */( Y; b# n" g: t8 U) J
xdc.useModule('xdc.runtime.Assert');1 a  e2 w; U: [. W/ C6 h/ f+ [
xdc.useModule('xdc.runtime.Diags');
! g, z+ J( ]6 N4 H5 {1 d$ |xdc.useModule('xdc.runtime.Error');
. k0 U' [$ M" l6 U5 Mxdc.useModule('xdc.runtime.Log');
/ x! w% C/ h; h0 E9 x) {* j: Txdc.useModule('xdc.runtime.Registry');# O8 d( d6 V5 X5 u( S& v
9 ?  M! e; h% k& R1 K

: k: p1 y2 i' d; _/ N# x/ v! kxdc.useModule('ti.sysbios.gates.GateHwi');3 O/ ]7 Y. v! k5 i4 s+ ^/ Q
xdc.useModule('ti.sysbios.knl.Semaphore');$ f8 Q- N5 m2 a- Z& A3 j
xdc.useModule('ti.sysbios.knl.Task');! j& u  ]  Z, Z% Y: n
/ Q* m, R( A7 G+ r& d/ Y$ R

, U# ?3 X! I; u  d$ M6 B9 W3 i& H. B' w; r! ^  E7 L# l

" L% h; v+ ?& i, A- T4 J) Y: k
1 `" p, M+ S+ q) A
. B  f7 i7 Z3 H! e0 q2 v1 U& }
- j+ ^- |0 g. ?6 |6 k
var BIOS = xdc.useModule('ti.sysbios.BIOS');
/ c# O. B8 m7 h  J9 P( T! ], SBIOS.libType = BIOS.LibType_NonInstrumented;
  ^/ ?$ Q( }, G3 t. E
  T/ T, X, d( c; T1 @& j
. f0 M1 n# s$ W) q

9 N" s& H0 W0 g9 O. i) S  j& uxdc.useModule('ti.syslink.ipc.rtos.Syslink');. Z0 J# A8 J$ H7 x3 q
! T' v1 j8 z' R# p/ A0 {
+ ]" k# f# C: h

' A+ r" ^. {# r  `  h8 M8 ~0 Cvar MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');% W* L0 g9 Q; j3 ~3 }* ]& u% j4 l
var procNameAry = MultiProc.getDeviceProcNames();
2 U2 X- [) l6 nMultiProc.setConfig("DSP", procNameAry);: X  P- \8 r& Q9 I; v% d
7 r% P9 W( d) ]$ A# K; z2 f
+ Y3 G" j# H3 G5 o9 T
' f  K$ }" v7 u7 _
var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');
% A: _9 Z- Y8 A" }5 t0 ?- ?
% o$ F; `3 {: ~5 `

5 i8 R4 K- Z  W, ~( k5 n0 `3 l  ?7 d
Ipc.sr0MemorySetup = false;7 R5 w2 G, K, h1 G
2 @$ G) y( m& n/ o9 D
7 y; [. }. t1 s% S
7 Z' a$ K3 k9 E8 F; ~3 o
Ipc.procSync = Ipc.ProcSync_PAIR;$ c! C3 u4 q$ N  _
7 @) f5 f7 }" c; S

% O* Z; d( _1 X1 O- ~( N/* define host processor */6 j( U+ ]$ N% s: k, Y2 d6 O! k
Ipc.hostProcId = MultiProc.getIdMeta("HOST");
% V$ k9 |9 ~0 ~/ T* H
4 Z  N- o% M8 }" e$ _5 g
/ _$ ?2 k3 [4 r  t3 \3 ?' B
/* shared region configuration */0 e, O& M( Y: L
var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');+ l0 z. ^; x) M: t( B) @2 N

" l2 w# A( n  Y5 k) }
/ q2 a6 u# g) j+ e
/* configure SharedRegion #0 (IPC) */" g! W* {6 j% K2 O" ]) K3 l
var SR0Mem = Program.cpu.memoryMap["SR_0"];' q% Y3 c) f) |% t# \0 I6 u

' F5 ^6 Z1 G4 U  k
) I" h0 C) [) C; L: |6 ^) x
SharedRegion.setEntryMeta(0,
) o0 o, d. y" G0 A. v* W    new SharedRegion.Entry({
3 W) M) L9 r9 g3 T8 `* ?8 B: u        name:           "SR0",. F1 b' N: J, {
        base:           SR0Mem.base,- z/ j1 e% k8 j) N
        len:            SR0Mem.len,
4 R: F2 c, Q" Z9 {9 C5 R7 K$ j        ownerProcId:    MultiProc.getIdMeta("HOST"),; `# o. u: ?! N+ r- e
        cacheEnable:    false,
) U7 G( i9 s9 D( p2 m( |        isValid:        true
# P5 R) T. T, R3 Y$ V: p: [0 f1 e    })
! W; m( D) }, ]& I: ?% s);( O! G' e0 y3 X* p% f0 c  i
5 P; N6 z- m0 @3 O

0 h" Q# A& D  z7 y  v+ V! z' i) {# G5 i: B! N7 ~- x

& D) {. z# d: E) O6 \8 g/ A
' \$ a* w: b% R/ l
Cache = xdc.useModule('ti.sysbios.family.c64p.Cache');2 R" t) J' d5 G4 P
Cache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */  G" q  g* ?; f, ?5 H7 g9 [. ~1 ^

$ u8 i5 \! x. a  p
6 [7 N' M2 T: b1 ?
5 `' i9 N: y6 X* W* x* p! x

. c: z4 m2 L1 i' C* P/ [2 o/*  R& d# k( ^* N7 @
*  ======== Operating System Configuration ========
) F$ Y+ G* X: W */3 W" h% ^: ~7 a4 O* U  s

3 i3 w, O1 `+ G/ U' g
9 e) \( j0 `2 L: w: ^
/* no rts heap */8 K( P1 n# ]& d. S+ e
Program.heap = 0;+ w$ U* K( @* O/ q8 e
Program.argSize = 100;  /* minimum size */
  X! e; ]- r& O. S% I$ _( W8 RProgram.stack = 0x1000;
) T; V4 f" J8 j% t  N0 W3 B
+ V* G- p1 R/ H

' |1 w+ \2 {. u. O& l) c/* create a default heap */
: A1 C& q, X. o6 Vvar HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
: X2 }. O1 u4 k; g3 b+ fvar heapMemParams = new HeapMem.Params();
$ Y# A/ \1 `9 [  ]6 IheapMemParams.size = 0x4000;! j, }" M% N. f3 P3 r- F' c' U
0 ^* |0 u( i. R$ }3 w! q' G
! |! B  W' H' a" D% d8 K7 h
var Memory = xdc.useModule('xdc.runtime.Memory');) x) E! \. [2 `8 M
Memory.defaultHeapInstance = HeapMem.create(heapMemParams);& I# |7 H& e: V/ g: j2 i$ n
1 T* V/ n! ]8 r4 O
3 F' N& h" m, T1 B- D- P% o
/* configure System module */
5 ]  K) G0 `/ \; I7 {$ Uvar SysMin = xdc.useModule('xdc.runtime.SysMin');! v9 v% Y6 I0 U, o1 R
SysMin.bufSize = 0x1000;
7 S+ k* W. H; M, k4 J# ]0 F9 VSysMin.flushAtExit = false;
$ B8 s# U, }) U. ^( J; b: u! z# a7 `: o6 O9 e
% \, B' z+ p$ l8 Y: G
var System = xdc.useModule('xdc.runtime.System');
. M8 u2 K* s& t2 PSystem.SupportProxy = SysMin;
6 `0 Q9 j8 {  ~% t
: q# c7 s& t1 h7 j/ s; v9 X$ J3 F
, v8 N; q% ?; P4 z  `6 J. T$ x3 V
/* configure SysBios to use the lower half of Timer 1 */- X% X3 X7 r* U+ k8 S4 W( _
var Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');
* V5 |9 @+ W7 G. yvar Clock = xdc.useModule('ti.sysbios.knl.Clock');7 {+ I+ P& D, ~
Timer.timerSettings[1].master = true;
7 S6 r6 F$ o; U; ]: e# yTimer.defaultHalf = Timer.Half_LOWER;8 q3 ]  w  c9 v+ E6 S; a) ]
Clock.timerId = 1;
5 k' y3 h( r6 h: z  D: x" j/ ^5 ^& j4 Y) ^

( Z% E, E0 ]0 l+ q& u' x4 I' v3 }' T" j  K. @$ Y. \0 w& n

( Q- n$ a/ T( n" m7 O7 p! L" Q6 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-3-17 19:00 , Processed in 0.044413 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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