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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:+ ?8 f6 r7 s5 j5 h1 j$ y
[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中
' T+ n  q  b7 ]) E' {  I[color=inherit !important]! I& u6 t) q9 u) g7 _1 I+ [
/ n/ a$ {' J5 g6 U: s. h6 a3 d
[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器2
, _7 w) ~7 j* W[color=inherit !important]: O3 [( |) Z7 B2 c: p0 E/ x' B
* p0 C9 f0 m9 d' \
timerParams.period = 500;
9 R& G3 q6 q) ]" E, KtimerParams.periodType = Timer_PeriodType_MICROSECS;
8 M9 ~/ t# ~& t8 U- [0 [; P9 U; ?/ i
Timer_create(2, Timer2Proc, &timerParams, &eb);
: A  Q& H) d( I7 v' W6 c, `% c7 f
: z+ G' t. q8 m. Y
$ T6 s3 v& B7 j' {: \6 L
3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);
3 |  T2 t. H+ q4 T) y2 |产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。
/ P3 ~) W  Y7 q9 m2 |
& e7 @. J* m3 L8 d  v' q1 @$ X

7 n. p1 M* ~" L' \' R7 z9 i6 P/ Q
/*
. a' {: y: X4 w( [ *  ======== Dsp.cfg ========
$ A' c" s4 U* I9 P/ b/ r *- v/ i4 g  g+ n5 B7 h
*/" [5 h6 [0 V* D9 X: {

$ u# t+ p& E/ j& U
- b4 r1 K5 x( G1 m" p
/* root of the configuration object model */
9 b. g* ?7 y1 Avar Program = xdc.useModule('xdc.cfg.Program');3 H) o. M, h( ]0 u/ M1 ?2 V6 G
: W9 @% X, |5 T( e3 ^9 b

- i* d4 m% W# H/* application uses the following modules and packages */
" h" l3 M. t. }" q( x& T2 uxdc.useModule('xdc.runtime.Assert');
+ d( i) m% e8 X7 L& yxdc.useModule('xdc.runtime.Diags');
/ `6 t* x6 ?3 {( O1 @3 Sxdc.useModule('xdc.runtime.Error');
% W5 x" |7 k+ Q8 w/ Z: R4 @xdc.useModule('xdc.runtime.Log');* K" r0 e  O7 N* q$ @
xdc.useModule('xdc.runtime.Registry');
2 k# @: a# Z7 F. x5 M/ I: S
9 @, {3 x7 G" y5 W. ]/ q

3 B4 i* k5 j2 H. \2 Sxdc.useModule('ti.sysbios.gates.GateHwi');3 N6 ?/ ]4 m% l* z, ?' d7 T
xdc.useModule('ti.sysbios.knl.Semaphore');
! j8 }7 x- g) l1 {0 Rxdc.useModule('ti.sysbios.knl.Task');
4 Y! z6 d! J( a7 T' d9 s) `2 n6 C7 E5 E! A  E
9 t# }8 \: K7 }; j: b' X' W
* V4 {& |/ z# J; v- U6 K
/ X* V" A2 z: P. B

/ n$ h5 Q& @6 Q) w; J/ K, ?1 Q. x4 U5 l: J" d& R
/ h' n% Q5 x) N6 s
var BIOS = xdc.useModule('ti.sysbios.BIOS');6 x9 r7 F8 n- q
BIOS.libType = BIOS.LibType_NonInstrumented;: |9 Y& q9 j7 q# M1 F- }
+ O1 J3 e2 R. s! N

+ K9 i" p- N( Q2 s3 S  K% }- O5 f9 K  p0 v
xdc.useModule('ti.syslink.ipc.rtos.Syslink');- j- m0 z4 K2 ^6 v, I; o0 a

9 q$ R: o+ {3 h2 Q$ y' H

; C3 |; ~8 P& b+ X, A  ?5 O% |; `" S) C) ^, V2 d
var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
( R* G, {; T6 x- E+ L' uvar procNameAry = MultiProc.getDeviceProcNames();* H/ g6 M! T, }1 y$ Z
MultiProc.setConfig("DSP", procNameAry);! Q; t' {! C: R; `4 K5 t1 l- q3 I

8 ^) N/ T4 e) u$ x& \5 Y
# g$ g/ f. N* p& X, u
5 D5 W2 s5 a  H. Q% ]) n0 I1 A' R% e
var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');7 |- v3 L- N% V, t3 b. y
" H8 S- K6 J0 P7 A

( V( R, N1 m, r( @, _3 p2 S8 m. m- D4 F) P; ?2 n1 h- A0 ^  O
Ipc.sr0MemorySetup = false;
! K; x- w0 F$ Y9 ]3 z1 E' D/ F* r! ~' m5 F
: O7 R2 v4 O9 T( B% v: J
4 r5 O7 L( o+ a
Ipc.procSync = Ipc.ProcSync_PAIR;  d6 ~1 b$ {% i. D

- v/ w- h4 o" ~8 Q( G8 y/ h
" j4 e" l9 y$ Z6 t. O+ S
/* define host processor */+ q: ^1 k7 Y; w- u
Ipc.hostProcId = MultiProc.getIdMeta("HOST");
8 N5 G/ O  y# A( E( l7 @. h( B7 F& p' U: ]: H

3 c8 {4 @" J& M/ c$ h1 e/* shared region configuration *// f0 R. w6 S- _4 `6 R& i! O9 {% G
var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
* s- Q( A/ c9 u; y& ~- c1 n( [% r, J2 W- N6 V

& c, A4 R+ t+ f% m/* configure SharedRegion #0 (IPC) */1 _0 }" y" |& {4 z5 T( b3 x
var SR0Mem = Program.cpu.memoryMap["SR_0"];+ b- @/ ?6 h9 v& v
$ s8 \( N5 R: p8 _$ H, v
$ F6 O7 _- |( @, M4 G
SharedRegion.setEntryMeta(0,8 E  J* k* a) ^. L
    new SharedRegion.Entry({
, F8 t+ a% B9 N8 M# ^/ Y        name:           "SR0",
9 x; E- d& \( y1 L( Z+ s: ~        base:           SR0Mem.base,
" u+ v- {& _; \' o+ }9 G3 C        len:            SR0Mem.len,, f: K. E' G6 b$ D" u  m$ l
        ownerProcId:    MultiProc.getIdMeta("HOST"),4 o0 G$ F7 d" Y6 ~
        cacheEnable:    false,
" @8 [7 C( s' e8 v        isValid:        true2 K- o$ ^% ]/ l. i/ u  R
    })- w( u' C2 F2 G* L6 S
);6 u" A; u  d$ J/ h  W
( r$ h/ |" i% s, Z$ m

, Z/ Q0 n/ t$ o* S9 E/ ]3 y' g. ~
# \1 b4 L, T7 b; f1 V6 o; Q
6 M5 B4 h7 Q7 F3 `. [  T

" E# Y) O$ W9 `0 D# N& w/ a4 z- `Cache = xdc.useModule('ti.sysbios.family.c64p.Cache');, ]( _9 [; k* ?$ @$ }1 G" i
Cache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */  W8 n. ?* J7 _- Y) P) \# f
" \8 ?4 E! p5 I. ]% L3 N$ Z8 ?3 d
$ ?  x5 I$ F( o' m: ?
, B) l' V1 k4 Q

& m" t" g1 l" V3 |' Q/*
" S3 t' R; N- P. {, _ *  ======== Operating System Configuration ========
2 F  f+ A" f5 U1 K& p9 [) K */, k; K$ Q$ `7 N. E+ ~
( R6 [% Y, k' w/ ]9 m& i

* B0 a: K' N& s: @; j/* no rts heap */
8 j' M: X' T8 q6 X5 mProgram.heap = 0;+ Q4 r; }. X) T3 `& X" Y
Program.argSize = 100;  /* minimum size */
3 m  z9 z/ W* v. X7 IProgram.stack = 0x1000;
1 k7 e; I* E$ I# V3 J% A
0 ~& U  N( O0 |8 {2 t% o' @0 Y0 H

& ?+ Q( ^4 |$ l, d: b% K6 U3 \& x/* create a default heap */
8 J- Z) [4 T2 f( z1 M* L. Ovar HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');3 K8 p5 c" a7 l/ k
var heapMemParams = new HeapMem.Params();7 N# ?  @- S5 O7 ?$ ?
heapMemParams.size = 0x4000;
+ \& P8 v, H: q0 x+ M, G+ U* g5 E  M5 z0 A9 v$ y

, c) g6 ]2 w/ B* j& fvar Memory = xdc.useModule('xdc.runtime.Memory');
- I+ K9 N9 _3 ~5 y0 |Memory.defaultHeapInstance = HeapMem.create(heapMemParams);: i/ I1 c* I: u4 e# j8 W

# Y0 O2 F0 g) m/ i8 |

+ e( E/ }5 b$ ?/* configure System module */
" |/ i& t7 ]4 xvar SysMin = xdc.useModule('xdc.runtime.SysMin');; P% R/ }2 g" x5 ]
SysMin.bufSize = 0x1000;! u# L$ r: z# c
SysMin.flushAtExit = false;
/ H$ r8 t+ X0 j" g4 ^
3 c  n" u4 D4 |' ]" F
; _8 r8 i8 ~# `1 S: @
var System = xdc.useModule('xdc.runtime.System');# U5 l8 o6 [9 o6 o" {$ m5 u
System.SupportProxy = SysMin;. q( w1 R# U3 @- H' D4 r
2 K+ m% n: S; \7 ~" ?/ Z8 C

% [4 d( T3 h, ]/* configure SysBios to use the lower half of Timer 1 */2 p, v5 S" v! S
var Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');0 |' s1 \$ k1 E4 E9 S6 h/ Z
var Clock = xdc.useModule('ti.sysbios.knl.Clock');1 R+ \" ]& j" t8 q1 P
Timer.timerSettings[1].master = true;
7 T9 j; ~( H: O8 Q% r( UTimer.defaultHalf = Timer.Half_LOWER;  l- M9 A8 B$ |7 W
Clock.timerId = 1;+ X7 V" ~" |  }
. u/ i3 v. g& {
7 X# F- K7 B0 R5 `

1 X* L/ U2 H9 p9 H9 W( D4 M* a$ K. Y$ J/ f
分享到:  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, 2024-5-10 13:03 , Processed in 0.038892 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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