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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:! ]; F4 F) r7 _$ z& z' d
[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中2 c, C  v, V# q3 \- r1 \! h- }
[color=inherit !important]/ ?* b8 P4 `+ `5 B* N; o) N
# G* F  _% I) `9 U
[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器27 M' i9 U0 u) N3 R
[color=inherit !important]
% S7 p5 s, o$ u. q
3 R2 q$ F( y; ^3 D* ]
timerParams.period = 500;
. P$ E' v: L$ H# w1 z7 [timerParams.periodType = Timer_PeriodType_MICROSECS;

: T6 S) J& }8 C7 i; a8 xTimer_create(2, Timer2Proc, &timerParams, &eb);7 m) e: q1 U9 N; L7 T2 {2 Y" f

$ `& \, M. u5 X$ N( r; N

3 q4 B1 o- P/ F+ N4 p3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);
& [5 K- {( |. K; j产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。5 ^  D) J$ P/ v3 s& g: i, q
6 A* C$ s+ W1 o5 C7 {" q
; A" a& `! |' k2 t

: @7 S" \5 l) u) b+ x# @$ n& `/*
* G3 B: z( U: e& R4 d. Y4 v! F9 i *  ======== Dsp.cfg ========
0 J0 {7 e$ J% }. x *
9 B: p9 A3 ?6 g: O */+ F" x2 ]$ s% ]

4 S6 {7 ^7 |2 S- L; Z2 C5 Q3 _4 m
0 B$ O# O0 {; D, ?
/* root of the configuration object model */
6 u- y  h6 Z7 M0 ?; m6 Pvar Program = xdc.useModule('xdc.cfg.Program');
2 Z; K2 m9 v1 L/ e0 A
8 v! H# z6 |4 ^& @0 W. _; \
( U2 W7 I0 G; c) _" E- X
/* application uses the following modules and packages */' K& A6 U! v0 ?3 \+ C# P: A. b1 C
xdc.useModule('xdc.runtime.Assert');, J8 U7 `$ k' C2 \( @
xdc.useModule('xdc.runtime.Diags');- M7 B* @9 N5 H( ^* C: F
xdc.useModule('xdc.runtime.Error');
5 H# m4 q/ {9 Q! g. I8 Cxdc.useModule('xdc.runtime.Log');2 ]0 b! ~5 q5 S8 A' C' Y) t
xdc.useModule('xdc.runtime.Registry');
$ B8 ~& ]9 m  T5 G: [0 P% h$ O3 e/ s$ M! K- b( q1 M6 P

: V" I/ Z* v, _1 hxdc.useModule('ti.sysbios.gates.GateHwi');
/ t# `" J* v* Fxdc.useModule('ti.sysbios.knl.Semaphore');* M; K2 Y1 ]9 f
xdc.useModule('ti.sysbios.knl.Task');
7 M  V4 J0 x; f/ h: @" B; w% Y4 H* G- S

1 D! t" g! ~" _1 W
( p* V2 {/ v! h+ [2 H3 h3 t$ J  t0 p4 m) A8 D  N/ p

2 I7 h+ ]4 {3 T  r- Q9 Y
# q4 ]  g! g& _  H. i

+ r' L6 E. j6 _4 ]5 Avar BIOS = xdc.useModule('ti.sysbios.BIOS');8 o1 S/ P/ N/ r5 I- _* e2 J
BIOS.libType = BIOS.LibType_NonInstrumented;% g. \4 _/ _: Y: K2 F% {0 H

1 P0 |& j6 v5 |0 j+ r+ [8 i

7 V) Q. m. O: R$ g# M/ h/ R# c
6 |% x# I% y$ z* Jxdc.useModule('ti.syslink.ipc.rtos.Syslink');
. f$ {! k" F8 Z# r/ @, E$ a  z( E
- K# ~# V$ O+ S3 p

, D3 L8 u; c1 G, ^$ U5 Z! C
  d) ~( {2 z8 |: a7 M. P. R! Vvar MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
$ W) g# Y6 [+ Fvar procNameAry = MultiProc.getDeviceProcNames();
% G8 H. }# i" t  E5 s, GMultiProc.setConfig("DSP", procNameAry);2 i7 ?8 |* m. o
1 i' z- m6 ?; \# [9 i- F+ }6 h

/ i% ?; z  e  G. b/ e, ]/ V, X2 K
var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');$ L( \9 ]% O9 m' Y1 w  v8 i
# z0 X( i0 b( T! U3 w) a
2 q* N- k$ k. v& [8 T, d
0 i$ s9 s* D: \7 q. P: s; l
Ipc.sr0MemorySetup = false;& u  q6 b! j1 o  \* A, j

' K1 q6 T* e- o* f0 v  z: D

9 P  z2 x) g4 T# f( k" C' A# @7 N* K2 G8 z1 v" L
Ipc.procSync = Ipc.ProcSync_PAIR;
' W9 {6 ]. [& w% }" |- l" @3 @. ]6 t7 J( E
$ E: Z7 U: y  i# |. M
/* define host processor */
$ \( y) z; E+ u5 h' w$ L! QIpc.hostProcId = MultiProc.getIdMeta("HOST");
) q& @/ n- F/ I6 z- J* I7 K. F' u3 T

& @) @4 m- n  [; |$ n0 @' N/* shared region configuration */. h! S9 `% S7 _
var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
$ i" x$ a2 E& ]+ f1 w! k% U
0 J8 z& r1 e8 ?. m; P1 t5 P
8 n- s5 o: a6 c: d& p
/* configure SharedRegion #0 (IPC) */1 {3 M& |: l( H9 r2 n2 H
var SR0Mem = Program.cpu.memoryMap["SR_0"];5 p8 s- U6 a$ ~0 {: ?4 k% m

$ ]! j. U" g" {( _3 a5 P
4 u  _- A) n& ?+ d* G
SharedRegion.setEntryMeta(0,1 L( `" _8 n+ E4 m2 }/ a1 o
    new SharedRegion.Entry({+ Q6 T7 C2 y6 z
        name:           "SR0",
* i$ [9 p+ ^( W' x        base:           SR0Mem.base,
" T2 D) j- W' W1 G( n8 G2 |        len:            SR0Mem.len,8 v3 f- O/ H% k( g' G$ J& O: z
        ownerProcId:    MultiProc.getIdMeta("HOST"),
7 x0 c9 Z0 R$ I2 d5 c  `+ q        cacheEnable:    false,7 E- q/ D0 {$ m; x4 g& A5 x
        isValid:        true2 s( c1 Y6 S) Y' Q1 h$ s: _8 f
    }), H% [0 V( @3 T+ c4 Y
);/ Z* V% E' S$ s* t

8 \! m! z8 \" M2 {. `2 c0 r
. \8 \' T' [2 A+ I# P/ S2 U
& r4 x4 I2 A+ H  D- I
5 x* ]8 v% E% |) M

7 `( y0 g9 q% s3 r7 I+ q3 D: I& A8 f9 xCache = xdc.useModule('ti.sysbios.family.c64p.Cache');
8 A7 V/ N3 F" }Cache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx *// U1 |. Z& y/ |1 k# `7 D
# U4 U- r" t: O$ C6 X4 P

, F& [3 u) i. U3 E/ d4 l* S- u8 g" C
" ^2 m5 B0 }. Q/ z2 X
/*
) B& I, Q& Z: m3 V! t- } *  ======== Operating System Configuration ========9 P5 O& O; G+ E+ t# G& K  a
*/
3 x/ v8 E1 _/ z  x7 ?
2 G/ M8 u; N: |' U. q+ U7 q
. k1 p" S! Y8 W
/* no rts heap */
7 `0 C+ a0 L- ]3 d  F7 xProgram.heap = 0;+ ]3 K  o4 `6 E* ?2 V
Program.argSize = 100;  /* minimum size */' _; _; D/ E* J8 Y2 u8 \
Program.stack = 0x1000;6 L; ?# z2 f3 r4 P7 V
2 s  a3 }( r# t5 `0 O2 X7 ~. c
7 z# K- c8 Q7 l, x1 J$ x% }. |
/* create a default heap */% p7 U- B' b& }' x
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');  G5 C. k- E" @" t, X. w
var heapMemParams = new HeapMem.Params();
8 E$ ~' w5 }3 F# A5 W  GheapMemParams.size = 0x4000;
8 y$ |$ ]1 `6 @2 P. |; Q
" ]& i# j/ x2 ^- |& Z6 [
! H. i8 g  Y4 J9 |, y' A1 L
var Memory = xdc.useModule('xdc.runtime.Memory');
" U4 B1 A6 B- Y& J1 ^5 `- ^1 ~: hMemory.defaultHeapInstance = HeapMem.create(heapMemParams);
7 v* S( b3 s: ]; w  {7 Q4 c' P8 T) p/ U# s# S

, i0 G  G, N3 H! |" X/* configure System module */0 Y* y  k1 P1 M8 l' X1 [
var SysMin = xdc.useModule('xdc.runtime.SysMin');9 N/ f5 X# N0 b% b, _( `1 S' X/ \
SysMin.bufSize = 0x1000;! x0 g. ~) d7 V# W  O# x7 j
SysMin.flushAtExit = false;. n5 U  d0 K8 i( w4 X2 T9 F; d

- Z# D% T# x0 J' @

2 l& V( j, k+ m8 f' ^! \var System = xdc.useModule('xdc.runtime.System');7 Y3 P; M" A; R! a8 M
System.SupportProxy = SysMin;3 t( T! [8 ~, ^5 [2 s

1 N5 J7 F, W2 z1 Q8 [7 j( y3 ]

7 j5 V# T: t& c/* configure SysBios to use the lower half of Timer 1 */
4 I& z* u3 M- e7 R$ Pvar Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');
1 \( c6 q! M) v/ kvar Clock = xdc.useModule('ti.sysbios.knl.Clock');* O) V+ K, e& R* a! X/ l
Timer.timerSettings[1].master = true;
3 X+ e4 ^) {0 G4 H$ L" j9 zTimer.defaultHalf = Timer.Half_LOWER;7 S2 y! i# u& F
Clock.timerId = 1;
$ }' Y3 g' I, E/ B( ~$ G' I# ^+ I( L9 y3 z" \; N+ o
7 u( p! e# ~6 ~/ E% Z4 V7 I* u& b7 E

6 k* O# v7 i. d9 {+ Z$ w( `2 b3 o  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, 2025-6-16 20:28 , Processed in 0.038721 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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