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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:
! w4 u" F, `9 j) K  X/ i[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中2 I+ {4 j' e, K5 a8 U) r$ h
[color=inherit !important]
$ c/ c$ i. N) }3 `, r1 u  G3 N( l
" Y4 k) L. R9 y0 W9 H+ Z- K* r5 d
[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器27 C2 T( |4 |5 Z+ k: Y2 b4 E  y
[color=inherit !important]1 `3 E4 d$ F% J% i
2 b' g" ^6 u# N) G
timerParams.period = 500;# }# D9 `; F1 k
timerParams.periodType = Timer_PeriodType_MICROSECS;
6 ^" \& u% K0 C2 M
Timer_create(2, Timer2Proc, &timerParams, &eb);
, E- m8 L; y! ]+ E: Q+ m- L/ V: U. D" Z% _& B: i, P

. m& N3 w% F5 {. a$ u3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);
5 S. D) d5 k- A/ w1 ~( h, w7 P+ U产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。) l$ |9 b! B6 t% N* q. |5 \7 S" p0 C

; M& X4 s" t8 v3 J% T" O
9 U5 g3 H0 J! G  g! R3 |: j1 s8 |

0 \+ q6 K, c! H+ Q2 _  {) P/*
: W1 F3 N' O6 k& z$ }6 A' S" C; w% o2 ^ *  ======== Dsp.cfg ========# C! i& F: c# W5 d% M0 B
*
* r# }6 _4 s1 K9 V, ?  a+ J */
$ A5 H$ T: D$ b2 |" Y3 s7 _9 h9 s! k& N' W+ g& l1 \
" ?6 T( f$ l$ _
/* root of the configuration object model */! j) h& u, Q6 @
var Program = xdc.useModule('xdc.cfg.Program');# q. ~( F& }8 l, q0 o

9 p/ C5 [) W% [% z7 y
! z, V/ t: O9 `  j( T& o
/* application uses the following modules and packages */
, R: I# S$ t0 o3 t/ d, w% sxdc.useModule('xdc.runtime.Assert');9 p. }4 V$ i; I8 h9 {$ j
xdc.useModule('xdc.runtime.Diags');0 ]9 n$ p+ q' c9 Q3 B! T* A
xdc.useModule('xdc.runtime.Error');/ ]0 d$ S* C1 u! q, Q
xdc.useModule('xdc.runtime.Log');
4 _' V: w. H4 A5 @3 D' Yxdc.useModule('xdc.runtime.Registry');
. e& S  `# U# G3 x
$ L: h2 }8 O7 j9 R- Y

" t# ]1 f# l% w$ H/ Exdc.useModule('ti.sysbios.gates.GateHwi');
  X3 i4 ]5 S0 B9 u5 `* ^# Y. Dxdc.useModule('ti.sysbios.knl.Semaphore');
! K6 R' m% \. G" h9 F3 q$ Fxdc.useModule('ti.sysbios.knl.Task');
7 u4 s3 B/ K* S5 H+ ]( {6 C+ N6 C6 C
  t, s6 O( ]1 H8 ?
; ]- e( x; t; }0 f6 h( N5 H

& f) ~+ G2 {2 X* Z0 N/ x% o; X2 y! C
$ `3 p( I! l1 {9 ^0 N
- g4 J* `0 L/ R+ F) t3 L5 t

* [- U: `8 ^4 o8 Jvar BIOS = xdc.useModule('ti.sysbios.BIOS');
" z9 q' \$ B6 h. B! `BIOS.libType = BIOS.LibType_NonInstrumented;
$ j& H" [% _: ?7 J  w, N2 c* C- k5 K+ g! q
& P( c: G( m3 q- L  M- g
% M: H5 |+ \! z* g, y
xdc.useModule('ti.syslink.ipc.rtos.Syslink');( H8 r; L- l( p7 Z

/ R& Y" l: u6 x4 U) R
% O5 o* X9 e; ~8 i8 ]

2 \" O3 n: I; Svar MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
3 M) D- E' p5 Rvar procNameAry = MultiProc.getDeviceProcNames();
" q  m2 z0 A$ s% o& XMultiProc.setConfig("DSP", procNameAry);3 x7 {0 @7 B) |, W% w8 z
1 S7 g+ ^9 t# k: `
% E" V1 t3 |% |- c+ R% u

! d1 O5 U% }% ]4 H/ I! v7 `! G2 }var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');; u/ J; J7 m  Y, W. k: T0 O

) S4 _- X/ Y! K8 j% v

9 W4 x4 A5 \& b6 G) K5 ~/ o) w/ _: ]: o$ S7 _; T* T; n& W1 j; Y9 \
Ipc.sr0MemorySetup = false;
5 H9 s0 I  N" g3 x8 z" M
0 z9 t6 t" ]# O; R, j8 _, V5 m

( I$ N( g& O& U  o
: g. \) |' ]  A3 {8 I0 EIpc.procSync = Ipc.ProcSync_PAIR;& f0 B# R& s/ N( Q8 n0 d

" m7 \) h! _, N: @

" r7 a8 S! G+ a+ f0 z" m; i8 r' s( R/* define host processor */
% ?  W' ], f2 s4 t+ t& x7 v& \Ipc.hostProcId = MultiProc.getIdMeta("HOST");" E5 J- k9 t( K) c1 N

2 |0 {3 c* n/ Z9 G( ^+ y7 y

7 ~0 h# {( N  @* l, i. J4 N( l/* shared region configuration */3 o& _7 J: F! I) n4 R" f# C
var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');# f, ?4 l. H. _
# R8 c3 q% F8 z" ~
/ U1 X: p8 P- i, t9 i
/* configure SharedRegion #0 (IPC) */
, q0 x3 Q( q4 M8 B, ^0 q( Gvar SR0Mem = Program.cpu.memoryMap["SR_0"];$ N/ C* f/ ?8 [4 i2 l4 _7 h% P

# J: O1 i$ q$ b3 v1 I4 o- G
+ s3 Y9 U3 ^$ E- p7 p8 _3 e6 l* v5 i
SharedRegion.setEntryMeta(0,6 ]( [. |/ H" i
    new SharedRegion.Entry({' H5 t( y  x1 g; p) j5 i8 g9 ?  c+ z
        name:           "SR0",
2 e1 ?: j' v( h% c- A" P; T# r        base:           SR0Mem.base,
6 O  y0 X2 M, ?2 n        len:            SR0Mem.len,
' V) C6 m/ m, I3 b0 x        ownerProcId:    MultiProc.getIdMeta("HOST"),; I  g0 T: U, P" e& k$ N
        cacheEnable:    false,
+ s1 k5 V9 E. @9 j+ y9 M5 T        isValid:        true9 l" C8 X3 Q8 @/ N3 x. O- f
    })
2 n' u$ e% J- Y9 u' {- o);1 f4 i$ w1 h1 _' G5 Y

% G8 `! V$ Z; L9 I8 d% S- O
- c& r: P4 h# d9 c: i

0 \, V, s, m' B& I; ~4 X% T
3 P- c; ^6 R' S2 I. G) E

. X$ {  Z9 ^1 d, Z7 `! vCache = xdc.useModule('ti.sysbios.family.c64p.Cache');
1 P. |1 w8 e- u; MCache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */. H6 @( u; T8 Z1 w& R* |1 m
; h2 j! x. r0 A! }; V0 q# d
- D: \7 e, |2 h/ b6 a* m
8 T7 N; P, ]8 e) J; k

) g" u5 {. `  d7 Y. L+ d/*/ |* Z& ]( R$ x1 N9 H! i) x4 G
*  ======== Operating System Configuration ========9 ~. i" B  U# s! i' p( Q- O
*/1 c! w, U" }/ R5 a! j5 q3 C
# K  `! J- d: j2 l; y& I

! n9 _9 G/ w% O# `/ D! {/ p3 x; G1 O/* no rts heap */
3 P. M/ `6 P: B+ dProgram.heap = 0;7 }* O; r9 ?+ n. I9 [4 b
Program.argSize = 100;  /* minimum size */5 Y( ~% ?& s0 R& f0 Y
Program.stack = 0x1000;
- M2 M6 ~8 n+ a# ]( b0 A4 G/ Q) M. `3 S$ i
+ n! W' Z! h+ y. O; A4 q
/* create a default heap */
+ {& w' D' F8 pvar HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');, M; K5 Y7 G; Z# u
var heapMemParams = new HeapMem.Params();% N: A; E# R# C  ^: X
heapMemParams.size = 0x4000;& w1 o% ~4 ~  V* i
5 X: g  W; L: _( s8 F7 s4 _' x2 w

- N9 ^, z8 _$ U- S7 D, T1 Mvar Memory = xdc.useModule('xdc.runtime.Memory');
6 z% g" c& `7 v+ uMemory.defaultHeapInstance = HeapMem.create(heapMemParams);* }5 |9 n9 |' e/ G
4 {% [! U( ]$ Z* h0 m

/ k/ F9 f) e4 {$ B$ `5 }: v4 b/* configure System module */
& S8 {- c! Z! |% ^% B  ~var SysMin = xdc.useModule('xdc.runtime.SysMin');
% H2 I) N; C, y( h# m2 Z* |SysMin.bufSize = 0x1000;5 L0 B# r9 h4 S6 M' B9 T( p
SysMin.flushAtExit = false;* B- W# \, M2 R& Y& `2 m

& C3 n) F: w& v7 A2 h7 o
+ l2 e7 ?7 X* s
var System = xdc.useModule('xdc.runtime.System');
3 Y8 A* w0 W6 D2 O- E, eSystem.SupportProxy = SysMin;
) w! x- Q! B+ S; v. W
; c; y3 u1 r; \4 K; L% M
2 z/ [. W6 A% r& G% {. }. J
/* configure SysBios to use the lower half of Timer 1 */# A; s1 K" b* r+ \3 m) Q6 ~
var Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');2 T  s% z2 u1 c# J( T1 e9 N
var Clock = xdc.useModule('ti.sysbios.knl.Clock');
5 B$ t; E7 K$ V2 T3 `5 ~, e6 h1 FTimer.timerSettings[1].master = true;- `1 q1 [: z+ ?: t
Timer.defaultHalf = Timer.Half_LOWER;
# v6 z; P* f& L" oClock.timerId = 1;
) @. O& d" N) h( V
9 m: M( l+ a3 ~6 C- j7 [1 C7 y# ~( l! s6 b" y5 q1 ^( o/ n5 [# e
. W$ K/ ^$ B* |
4 U; D' u& w% @) b9 S
分享到:  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-6-17 07:30 , Processed in 0.040212 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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