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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:6 U2 [. {$ l9 Y7 |
[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中% ~" a3 d, k! u: t7 I
[color=inherit !important]: w/ }$ K& k9 N7 O

9 s. p3 O1 B7 k0 R& d4 K! P' ?[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器2. {: r* k' L* a# B( B$ \. S1 y
[color=inherit !important]! s2 s9 @% A; J1 l3 _1 D
& z9 C: P% c! ^: f# |6 M* U
timerParams.period = 500;
5 F2 b" ^) Z% ?! s! r1 v0 NtimerParams.periodType = Timer_PeriodType_MICROSECS;
  j& F8 l$ e+ Y8 F$ B: U
Timer_create(2, Timer2Proc, &timerParams, &eb);
. c2 s2 X6 S4 i+ f
5 e" ?1 _. Z: n* P; C- z

9 Q) P! X: M$ d3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);# R9 w7 f) O& [& I
产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。
+ Y& Z% U2 j8 ]9 y. j8 R
. l5 A6 A) M4 {) l. h( h

; ^+ d. o% d1 J# ?' j. f& x! w* ?
/*
* A- G$ ~1 W8 p! M" R *  ======== Dsp.cfg ========
# U7 y. v) P  v *
9 F8 l% n1 V0 {  X3 i */! D7 w6 x; J, p$ v

' W8 o) y0 S2 D. \

3 u% C6 x$ v. y/* root of the configuration object model */
- T3 a. J2 w6 D2 {# L* cvar Program = xdc.useModule('xdc.cfg.Program');( y( N! @- R5 O2 T

5 z6 k, }: Y1 O' h

% _4 ^& N* n. ~5 A  L( O  Y7 b5 ~. z; k/* application uses the following modules and packages */# k" D3 l: c+ x! a  s1 |/ u
xdc.useModule('xdc.runtime.Assert');) y$ t7 P2 e# W
xdc.useModule('xdc.runtime.Diags');) E; T7 |; L9 H- ]# Z) S3 V0 O
xdc.useModule('xdc.runtime.Error');
, _- V, ?7 g0 K- _; [$ n) C% V# b- [xdc.useModule('xdc.runtime.Log');3 N2 |- v: L) Y2 |
xdc.useModule('xdc.runtime.Registry');* t- d7 O7 V$ F; h9 p2 C

4 Y9 \3 ^# b% S5 e2 q" s
7 b4 z, L+ S, t  y5 o7 x
xdc.useModule('ti.sysbios.gates.GateHwi');
/ {" D' |" t$ @9 x8 e' ?xdc.useModule('ti.sysbios.knl.Semaphore');' m+ F0 B: A: g; M: X4 H
xdc.useModule('ti.sysbios.knl.Task');
6 Y9 G- q! N- ]3 V% k4 J" ?
) L# @9 I+ o0 a' ~/ x0 \

( [6 N: r& B* ?) }: f( x
5 x% x4 c5 x; y0 R7 {+ _! ]; \" y$ r. F) q

* Z6 U* d1 L* o9 p- F5 o
7 }" n6 ^" N+ `7 ^3 n$ Z

5 y% J0 J2 T; J0 ^var BIOS = xdc.useModule('ti.sysbios.BIOS');5 p( S+ ?3 }( ^
BIOS.libType = BIOS.LibType_NonInstrumented;) w5 |: z) {7 B" ?! ]; G
- K( b: B8 J; F+ l( n

1 j. s! l4 `  b& W% h
8 I" e5 \3 ^; r( A8 n( R0 txdc.useModule('ti.syslink.ipc.rtos.Syslink');2 Q7 E4 S; f$ z! g1 O( E9 W5 C1 B
: R  _3 q& z9 P. @

# M7 @8 t3 n& W2 I* k6 D$ d# D7 K* |, [5 G4 M6 T8 ~& d& K
var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
( n+ R& ?7 S3 R) T- o% ^& V  T/ Uvar procNameAry = MultiProc.getDeviceProcNames();' k; ?$ f+ t) q+ [& O
MultiProc.setConfig("DSP", procNameAry);1 s2 f1 {+ N  I2 L7 W

  a, m! R! f& o. y$ B) p

. D* Q1 D, A7 l* I7 s
' Q) c, E* C; z# c. O0 I0 ?9 kvar Ipc = xdc.useModule('ti.sdo.ipc.Ipc');
, @) M$ F, \% V+ [! e
( @8 W! B! G5 F7 N( R+ t( ^1 c

: W% Z' A# W) r' a% }
  |/ I: W* g8 D  b# h. ~Ipc.sr0MemorySetup = false;
, o. k# d+ Z5 N# C+ T$ M3 {
9 y: \0 q. h2 J7 Y. T
! F, z" N% z( g6 f  e: F% ^

' S( m! h5 T5 ]: J5 n1 N8 p0 sIpc.procSync = Ipc.ProcSync_PAIR;$ W, |( j; z& s

! l$ f' C3 q/ f1 r3 j( H# w" K

$ E# I, l4 x9 n+ D& O/* define host processor */- |9 q# Q  x4 Q( d
Ipc.hostProcId = MultiProc.getIdMeta("HOST");) L( g% C0 U! Q4 m( [$ W% {
% S. `. p# f# o: ^; n. l  v& {

( a* h( j  a; ?2 }3 k/* shared region configuration */3 g0 `) F* H5 V; U9 e: ?! m
var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
5 I, u- z* s8 d! A/ [
3 _9 |# e) f( L8 t% h' Q1 x
9 m% `6 B1 B; m- ^
/* configure SharedRegion #0 (IPC) */
( O! L% g/ S8 |7 K% \& dvar SR0Mem = Program.cpu.memoryMap["SR_0"];- Q& |" P2 P4 n/ ]! [) L6 z/ d6 T! ]

1 |# v9 Q4 [" z* u
6 l3 n/ ^2 h9 c* `8 _. o: e
SharedRegion.setEntryMeta(0,
* o9 u7 N$ O* C  \: V    new SharedRegion.Entry({0 s  J  U. X. S6 v9 x' f
        name:           "SR0",8 C; T. {4 m7 C" _8 J
        base:           SR0Mem.base,: p) n( u) b' w9 I
        len:            SR0Mem.len,' _, |$ y* ]7 \3 P6 P; \0 W9 b& Y  ]
        ownerProcId:    MultiProc.getIdMeta("HOST"),3 U) u; T8 t5 @7 p
        cacheEnable:    false,
/ M# _: d+ @) j: u3 q+ t0 J        isValid:        true
9 s5 G9 y5 I4 E/ v4 y5 V. @) Y9 w    })
$ Q8 s' E  S( s9 L5 |2 h);+ N" A; N, e( k& i" W! C- l7 s/ h( U- A
8 n+ f4 g( l+ D
# Z5 W1 ?) v. B$ s4 U2 i

$ W* o0 z7 I' G
2 {* u# P# h9 x0 X# \
7 W, m  V% X. ^
Cache = xdc.useModule('ti.sysbios.family.c64p.Cache');7 l. z7 J1 Q! z6 p% ~4 j* D
Cache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */% _- a) ^7 e% K1 ]9 c+ t5 g2 J$ b
0 C* F8 x8 P+ W$ b0 f
$ K/ |# W4 r5 o+ S/ |- _! d9 p9 @- b( l
( G' j8 H+ t8 f+ s5 d2 s9 k
' d2 Z' f1 \% L! s9 Y" e2 Z' {
/*/ ]# c3 z3 f9 Z8 k8 d# N+ S
*  ======== Operating System Configuration ========: w# e: i" r; m: p. Y/ `
*/
* @2 S5 P0 v8 l* f" j- H2 P4 R" H$ Q! T1 k  s

2 y/ D! w& d* z# w0 [7 Z/* no rts heap */
3 t. Y* q$ V) D" {# z9 L! r* cProgram.heap = 0;
6 }  \7 E3 A& W. E' j  C" I5 MProgram.argSize = 100;  /* minimum size */
* a: r% v# y# w) q( fProgram.stack = 0x1000;
9 t9 g, i3 \4 q# U
- a: `! D# b1 k. C+ e7 |5 T7 r5 w

* Z4 x3 b- Q* T! J( b) L/* create a default heap */
' p. ^! @- t: P1 }0 p- h! F- [var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
6 A( T9 _  D( Xvar heapMemParams = new HeapMem.Params();/ K. A" C6 F2 a1 {6 b6 r2 D$ o% ~
heapMemParams.size = 0x4000;
' c/ m  ^! _- A  A+ k% @6 z4 F! j- g5 }% e9 t
" B. Q+ E' x8 I
var Memory = xdc.useModule('xdc.runtime.Memory');
# u* \. F1 _# X4 b$ v' F1 ?8 dMemory.defaultHeapInstance = HeapMem.create(heapMemParams);: C8 u/ i. J, S
$ o2 a  V- ?3 h# q

- `+ x2 x. d% a: C3 L3 y. X% {/* configure System module */
& i2 l" e; W6 `# [$ o- ^var SysMin = xdc.useModule('xdc.runtime.SysMin');
3 r+ E# z* n# P4 ZSysMin.bufSize = 0x1000;
% P7 D7 j/ v- lSysMin.flushAtExit = false;7 D0 _" U6 M2 D+ i6 F  N  ]
: S/ o1 l* S0 M2 P
; F) i, H- ?$ y! S5 q( p3 e  F0 x
var System = xdc.useModule('xdc.runtime.System');
. a4 Z: L; _+ L6 ~( D- |2 T' XSystem.SupportProxy = SysMin;# j6 q9 {/ a: p
( H* M2 Q9 x6 l& F1 T
* C- }% R( w; F! u) a+ Z$ _
/* configure SysBios to use the lower half of Timer 1 */
  t. G! @1 G8 K$ Y: q- ^. ivar Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');
# |$ Q1 _5 z9 G& P. K( ~) w4 J/ L$ Yvar Clock = xdc.useModule('ti.sysbios.knl.Clock');5 r  u' b* ?4 C
Timer.timerSettings[1].master = true;  {0 o) [, d8 w
Timer.defaultHalf = Timer.Half_LOWER;! x- T( `2 k# \* q/ S
Clock.timerId = 1;
; [  B7 g7 I( ~
9 H- b5 r  E' {
2 n& s+ p8 \1 W* r# g0 b
. \0 w. S5 {1 {8 Q) v( E. ]5 j6 _0 B7 a2 l
分享到:  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-20 18:23 , Processed in 0.044514 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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