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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:
( G9 i& E4 J% v[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中; t- z9 }3 H  V! Z# W
[color=inherit !important]
& b; _4 \# z( F  v# {1 a/ |

$ [* c) d# l& }; e[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器2
) r. ^+ h) W0 h$ I2 o[color=inherit !important]
8 s9 \8 q/ k6 f3 L* ~) P+ f
- F9 S2 K: J) J! |
timerParams.period = 500;
7 m4 z  i. ]& w5 ?5 I; x4 |timerParams.periodType = Timer_PeriodType_MICROSECS;
( ]6 B+ j5 I0 o$ Z- [' ~* `# @- o0 v
Timer_create(2, Timer2Proc, &timerParams, &eb);/ |. _6 t7 A# D7 s% A
% B5 l+ P& L) M8 O. h

" u9 g/ l, @, k2 ?( F/ I3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);& M- t3 N3 V! q' c4 {
产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。
2 E* t8 D# ^$ {1 P% G1 ~6 n" i. \3 g3 i( g' _8 n

) j( N" O' n* l/ v0 y3 W. K; n9 p( a# K" o+ {
/*; F/ e% p. I2 W9 H' g
*  ======== Dsp.cfg ========
/ o& {; g' N. Q' J' v *
+ b2 o- X# p+ K" l* l! I+ [ */
0 N8 h$ Q$ ~- @! S5 p
$ @; ~& G- G. L' L( {$ p
2 ?, n2 k7 b. h0 w5 S; y
/* root of the configuration object model */
- D  J* g3 ^5 I& Lvar Program = xdc.useModule('xdc.cfg.Program');
2 A: u( B+ L4 G( V& W; N, S# t; v" Q! {& w& P
. z  @- ?0 D/ Y  t/ h1 Q" R
/* application uses the following modules and packages */' ^9 P8 K! w% U% f/ h" b
xdc.useModule('xdc.runtime.Assert');
3 p. M6 R9 X# G4 pxdc.useModule('xdc.runtime.Diags');7 b$ b9 ~4 y# T8 [: a; s
xdc.useModule('xdc.runtime.Error');3 j$ W6 S. G/ o# s0 ?2 |2 i
xdc.useModule('xdc.runtime.Log');
$ K2 k1 K: o* ^- G5 Axdc.useModule('xdc.runtime.Registry');/ Y$ M6 ]" r6 R7 i2 I& V
6 d: W. Q6 o7 D/ X
" E6 O. ?# k; F* m7 p, q- E
xdc.useModule('ti.sysbios.gates.GateHwi');+ X; ]3 {6 l' C7 P# t- t& \0 [
xdc.useModule('ti.sysbios.knl.Semaphore');
, B. y% d9 Q6 q) pxdc.useModule('ti.sysbios.knl.Task');+ @( M0 G6 n' a3 e
6 c2 a: n; B# j! l2 \

3 i+ t; C6 }+ i- D9 Y* k2 j; F
* \! H2 T* _9 j4 K. u6 x, [& _/ n7 d. e

; @$ J% W/ ]5 d. {1 ?
) ]" A/ E  R1 s. r7 M

' H- f5 j: A& u8 Y- Tvar BIOS = xdc.useModule('ti.sysbios.BIOS');
1 t4 W' L; @$ Q0 l+ L# V3 b' E+ Y: zBIOS.libType = BIOS.LibType_NonInstrumented;
+ ]: m1 v$ X. j; i, B4 m
7 \( |1 ~' Y! G+ h3 K4 f4 ~% c

# \& A, W0 `8 m4 r8 ^& W; s1 N) Y$ n4 N6 l1 b; @( z
xdc.useModule('ti.syslink.ipc.rtos.Syslink');
. U$ W- C% ]6 G
7 x# V5 n$ p6 F; ?3 o

+ }1 t. P+ p5 |& H3 R" S2 e* q. h1 @+ }9 E  K2 E
var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');; q8 a0 I. c. t8 s5 y( y
var procNameAry = MultiProc.getDeviceProcNames();$ J3 c8 R7 P" y+ A- U& S7 \
MultiProc.setConfig("DSP", procNameAry);0 }. `/ X" }( X
+ s6 p6 l7 \; D9 n0 V3 u
  I0 a, q3 ]" t% O% H

1 N, [- g( f( t7 ?' S1 uvar Ipc = xdc.useModule('ti.sdo.ipc.Ipc');; G' R  V# N2 H# S) Z1 J

6 y3 P3 ?5 |8 q% q  K6 I8 d
  O9 n+ W5 c4 N$ V+ F# j

5 V4 |9 c- @1 N+ N  r- x6 DIpc.sr0MemorySetup = false;/ ?5 e1 u. J- v# f& F5 v/ _& r1 S+ A, ?

2 K2 B: f5 a# h& j

" [) ^2 t7 i! f' N
1 I  ]5 W9 L3 VIpc.procSync = Ipc.ProcSync_PAIR;
! d+ i' j4 m! d0 v# Q
6 {* B  b) {) u; S9 J! c

+ s' l& ?, |9 S# Q( \" M/* define host processor */4 C8 `( r" W% P1 u+ V
Ipc.hostProcId = MultiProc.getIdMeta("HOST");
* x2 _. d: v" ~1 f5 ]  B, L9 g- S. a) i2 S& ?
4 n0 O3 s, ^8 c# |
/* shared region configuration */4 g' L: ]* w: x# s, v  m
var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
. [0 u: l& J3 u' G
0 b3 |; }) M/ L* e. T! @! _

0 S$ F0 E7 h) O1 b9 P/* configure SharedRegion #0 (IPC) *// g' k% w1 X' }. e3 K
var SR0Mem = Program.cpu.memoryMap["SR_0"];# r  y' Z7 ?: }& W
# u0 T4 i! k$ u' k6 v
1 Y. G: @' J/ q1 ~8 U
SharedRegion.setEntryMeta(0,! X4 _0 ^; ?) i2 K+ _; F/ B
    new SharedRegion.Entry({
: R  ~* ]2 e3 P6 z        name:           "SR0",
  A, ]8 c- x) V9 W        base:           SR0Mem.base,
' {+ R$ k- K# G; w( S3 C2 j6 `4 K        len:            SR0Mem.len,& Z" t6 g1 [8 F& n7 F
        ownerProcId:    MultiProc.getIdMeta("HOST"),. R( p( A: y. O+ P* a7 e1 t$ Z
        cacheEnable:    false,/ {( A% M" F8 q: n& D* e
        isValid:        true* R5 o6 N/ m- c9 D
    })9 |/ \. T8 N( A- r3 o# M, _& l
);
) {1 V" Y9 I4 k& O. d3 V6 ?$ Q9 x3 y( @" X. C
, a- e2 h! I5 x3 r

# @: I7 o1 B7 ^1 y4 Z3 ^
, n7 F1 k. W! u' s+ r  n  X/ T. V" n
- i! R4 t- N3 {- Z3 U
Cache = xdc.useModule('ti.sysbios.family.c64p.Cache');
1 @; Q, b  ~# s. ?$ ~8 q; `/ ^# }Cache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */) S/ v! u4 }8 @; P: \+ ~
( P' C8 h, ?5 }/ @% J. H
  \& E1 ~+ l2 r+ i+ M

4 u* o; e1 I- L! ^6 G) v

: F$ u* K  B4 F2 N$ f, l( H+ H/*
7 L2 x4 W' N: x6 I' J1 u *  ======== Operating System Configuration ========
* X: z: T8 `3 @+ B4 e; C1 w' l */3 W+ W. w2 t, b7 b+ ^  O
; A7 p/ [! P/ a4 L* }

) u& d( F9 e* t/* no rts heap */
9 }7 U% y% t; p  Z2 u# o$ y+ B/ uProgram.heap = 0;
+ a6 Z3 d7 u" u' l( s/ BProgram.argSize = 100;  /* minimum size */  V" @2 ]. u7 }& s, A  m1 x" V, C/ }" @
Program.stack = 0x1000;
& P+ [8 F  h7 @) m8 m. Y+ h5 ?( S/ Z% T' Y2 R& x
* O) A5 R$ u! A! X$ O7 b7 g
/* create a default heap */' C1 `4 D  D9 P: _7 b7 H3 `
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
+ Y% F* P" g9 `var heapMemParams = new HeapMem.Params();
) |7 a; N% p1 N# v: ?heapMemParams.size = 0x4000;
5 _1 _; J9 h- p% h* T. @1 W
# C& W( @4 Q% v8 R% j5 F
3 H# g8 @# N0 ~( _: F, I
var Memory = xdc.useModule('xdc.runtime.Memory');8 O9 ]" C8 `, D; q" Z" M8 L/ e
Memory.defaultHeapInstance = HeapMem.create(heapMemParams);9 m4 k' X0 T; t: p) p+ r1 m$ X5 u

; v5 V# |6 @( k6 x5 v

' w" S6 _, E% _/* configure System module */7 `0 R: o' ]" y
var SysMin = xdc.useModule('xdc.runtime.SysMin');
+ g: t" e7 J7 }6 Q0 `SysMin.bufSize = 0x1000;* h7 F# [1 W" _, c, `; s/ [
SysMin.flushAtExit = false;
# K9 `5 N! \, K
! e+ s8 w+ L* ~7 D/ q' ?5 _
$ R4 h) V5 m( C) v+ h% M& u8 e
var System = xdc.useModule('xdc.runtime.System');* q2 k- A* z7 s# U! l3 \
System.SupportProxy = SysMin;
' f* E( z  O9 G) ]' R3 ~& `) d; ?+ I. d3 ~$ t& M

1 `# V' [. L) d3 c( D3 ]6 A( o/* configure SysBios to use the lower half of Timer 1 */) B! X: _+ O0 e, y2 v1 W; Q
var Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');
- c( w; n' K3 C  L$ V7 ~0 m. wvar Clock = xdc.useModule('ti.sysbios.knl.Clock');
# ~* Z, V) P# \9 gTimer.timerSettings[1].master = true;4 }$ d$ H8 v( E: e
Timer.defaultHalf = Timer.Half_LOWER;. |0 H# o6 S+ H
Clock.timerId = 1;" c9 O! \8 y9 k: Z- P. e

/ L& H0 o2 v2 n$ s
( v0 p8 ~4 H" c
3 e) l  \, y. E! e3 c4 T: u1 B# a0 y! E) T' _' ]. \- |  g
分享到:  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 03:42 , Processed in 0.038632 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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