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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:9 {1 m' M) N* h  _! O0 i
[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中
, }. C6 n4 Y: w" f4 s- j[color=inherit !important]
7 \( ]# [7 D: j3 t  D. P: M
# l  e2 }+ a, n! _  J" E
[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器2
! k2 o9 H4 ]7 q[color=inherit !important]
" W. T# j+ s- Q( o/ l" D
7 ~' x  D/ @& c0 b+ z. s
timerParams.period = 500;
6 m& }+ H' ~1 C$ U5 h$ ~timerParams.periodType = Timer_PeriodType_MICROSECS;
$ v) A/ B; G" }; Y0 p
Timer_create(2, Timer2Proc, &timerParams, &eb);% ~6 k/ e; b6 e2 S: M5 u
# }3 {4 a0 j6 e. y, f1 ]) q1 g

: n6 _% n1 Q: K/ O# v3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);8 `& C4 f' k# q2 j/ @
产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。
( z1 m$ ^3 E5 V8 ?6 O: |2 |( f, u1 r

6 q  N6 B6 V; n& f) ^6 \! z
" E7 V. m2 q: y% Q, ^" w/*" [( L- b5 X3 v0 q7 {
*  ======== Dsp.cfg ========
7 x5 @6 N, x3 G% P# _+ \ *& Z0 T9 z9 @8 O0 L
*/: p: c3 K1 L' D1 K1 }% J5 z

' v, m' X4 O$ R" N9 l/ s4 o2 R! u
, L7 J: f, Z4 N3 P2 Q( N
/* root of the configuration object model */6 ~+ t. H: Z, {2 X2 m- p- {! H
var Program = xdc.useModule('xdc.cfg.Program');
0 O# d9 G2 J  z" ~  V. s, R% n) e: R0 ]0 U
  X* [& I- ?. o; }( j( d- m
/* application uses the following modules and packages */
: t6 K/ u" l( Exdc.useModule('xdc.runtime.Assert');
8 Q1 B1 M5 |& l, t' h+ X( y' bxdc.useModule('xdc.runtime.Diags');6 E- h8 ?7 `: K: ~1 R$ q. K
xdc.useModule('xdc.runtime.Error');* L6 n2 x2 Z* E" _
xdc.useModule('xdc.runtime.Log');) j* }; u, K3 j
xdc.useModule('xdc.runtime.Registry');6 o) g: N* q5 e( V# K' b
* }: R& S1 V& B( O2 m( H9 M2 t# R

' e" i: N7 c% Rxdc.useModule('ti.sysbios.gates.GateHwi');3 s+ M8 D( p2 y
xdc.useModule('ti.sysbios.knl.Semaphore');
, H: S2 J3 X. H0 m' {xdc.useModule('ti.sysbios.knl.Task');
2 t5 r5 A( r. s5 x) A9 G+ ]; I. ]5 ]( P  T
: T, }- K7 R7 n7 M! I  A& `8 \( E
9 \" v9 C; R2 u+ d: O/ P, R
$ N4 ^* k) x$ }) \0 Y4 V( J/ B2 C

) z  _' o# h' @# }
5 i5 S8 l! M) }% v2 K$ t1 f

/ ~" F" ?5 t# b% y1 qvar BIOS = xdc.useModule('ti.sysbios.BIOS');) l0 p+ i. d" e: h( ^; j
BIOS.libType = BIOS.LibType_NonInstrumented;
; x9 X, B+ J2 ~9 W) r+ n4 I7 G; ?  P' ]8 X, q' [) w- L1 _* R4 d

7 e4 d- s, }9 x( E
1 e: ^/ y& ~" I# J0 yxdc.useModule('ti.syslink.ipc.rtos.Syslink');
4 n' P' |" p1 n$ d3 T2 E( [
) C' s" j- u0 {$ r. q( V, a

! `3 C' a: w  P8 O) _3 V* l2 C5 v. O5 K8 N4 l1 q  r" y* T7 D. m
var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
2 W: ^& ?+ D& u. D. H; _9 N6 j( jvar procNameAry = MultiProc.getDeviceProcNames();0 w/ K) o2 G$ |+ y! F
MultiProc.setConfig("DSP", procNameAry);, T7 ?( V9 v% {4 \; I- V

$ w# w4 f" @. u" p

6 b) R2 x. Q  C3 z' u- s4 G7 ?
$ n$ Q2 x) I+ ]' j3 ^var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');% H. p& D: L* o- _) h9 e/ ]2 n
7 |3 H3 C+ o1 k$ w0 Z

9 Q+ D( G) I0 X& W! C8 A& d% o8 G4 h' R  ~  |( c5 W' L7 p
Ipc.sr0MemorySetup = false;2 K' I* I* @7 x* u2 ~& T. G7 Q+ Y  M

* y! j% Z2 g  e( w- P7 v
% S4 ]0 p; k, _( }$ P  V- c0 G0 [

$ L) G$ K5 R% W6 O$ iIpc.procSync = Ipc.ProcSync_PAIR;. g) W3 t% b1 }3 T5 p8 B% k

" `% {8 ~: \1 s: x, I: W4 [
  G+ p5 r% I' {5 Y& [) ?' o
/* define host processor */( k5 x3 T9 c/ P9 ^# A# }1 v
Ipc.hostProcId = MultiProc.getIdMeta("HOST");
. U: |& \# s8 D8 S+ m) F! s" ?
( b" s8 j  O# @5 v& B( K+ `0 i8 Z

5 l$ h" Q) t+ q; E0 ~( i6 e* u/* shared region configuration */1 n% J2 p% j# D6 Y0 o& b' J- o
var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');. v4 F# j# t) k4 j! D6 r: A- b

8 \4 E5 @: `$ }

. r. z2 q- R1 M9 u; A/* configure SharedRegion #0 (IPC) */
. x3 M8 ?% Q. P! d9 U' X$ o' x7 O9 {var SR0Mem = Program.cpu.memoryMap["SR_0"];" [* \+ y( n* q) S4 D2 T3 @

1 z( p& H; x) g1 C

1 v+ h" P( l. t5 V. kSharedRegion.setEntryMeta(0,
- {5 Q# a& j4 `6 }1 I# ?. ~) n    new SharedRegion.Entry({
# {* I8 G4 O2 t. R        name:           "SR0",
% L( {! H/ b1 Y        base:           SR0Mem.base,8 E- w4 A( K$ r" s9 T4 |! P
        len:            SR0Mem.len,
, R# C4 {8 L( L  ?1 J( U        ownerProcId:    MultiProc.getIdMeta("HOST"),5 Q% A2 H: N$ Z/ G, X6 ^1 O
        cacheEnable:    false,& y* l6 q; y. a3 O) q) p$ ~
        isValid:        true0 |; [7 q+ e# J( Z, a
    })9 ]3 J- u7 C2 K3 i
);: ^/ x6 ^5 \  r$ A; q

. z+ |( K: [0 v) B& b/ J

# }5 T) o' m" T6 v. s4 E% D
5 b5 i) s% z7 O6 {! ]6 K
0 `) i, G/ v* H: \

0 p# i  |3 O2 z# Y( A2 S3 bCache = xdc.useModule('ti.sysbios.family.c64p.Cache');
7 [& V& y  m# u9 NCache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */
, {! ^3 j! @5 J% A+ m- ?
2 a) D1 j1 n1 d9 S- A
6 {4 u0 \; x$ @  F
! l0 u# q6 \7 _4 e; \6 _
9 ]1 r; X* ~1 x2 b  z3 P3 f: Q, I! R
/*7 N! x& z+ T% n# t
*  ======== Operating System Configuration ========+ [' \- c' X1 C
*/5 O! R  ~3 o: n2 ~& J
6 e* z; G1 e7 A, x+ |- ]5 b

7 m0 F2 ]; @( x1 b$ R4 T/* no rts heap */
; p: W9 g& P2 a' S# N& lProgram.heap = 0;7 H: o' n* z  u, t; {6 U# L
Program.argSize = 100;  /* minimum size */
* |$ c% O3 s6 Z4 `- r& {* u3 H' UProgram.stack = 0x1000;- R9 }' h0 {% p' j+ H$ W
' H8 {* ~- G! u  Z
, M8 e3 u* R" T3 A
/* create a default heap */
9 {$ y! O. d( P+ ?# h% o9 wvar HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
7 o) e' ^' P& Svar heapMemParams = new HeapMem.Params();
5 a! y; s/ z  T, v& uheapMemParams.size = 0x4000;
. W: n1 L/ K* V# P: E: Z
/ v7 c' i* i' s" @% @

" P' k- D. m( d/ Cvar Memory = xdc.useModule('xdc.runtime.Memory');
6 i; h) t3 G; z2 _5 m: I1 HMemory.defaultHeapInstance = HeapMem.create(heapMemParams);; ~# Z2 Z/ ]$ j+ |' T- Q- J
9 M- z8 H) T, I6 L

9 @5 V# I: }$ V0 a9 t- [+ R/* configure System module */
+ C5 y" k+ O2 [( }5 j& Xvar SysMin = xdc.useModule('xdc.runtime.SysMin');
4 a  o9 m5 U- ?5 h& H; H9 S1 ZSysMin.bufSize = 0x1000;; }: O' ]+ U& q  p# o
SysMin.flushAtExit = false;9 w* D& c5 U3 U1 v
' V& s: t5 G5 C' p3 E
0 l+ k: s5 h0 }6 G0 ]9 v
var System = xdc.useModule('xdc.runtime.System');* J! L- G( G: N5 h' ^' c
System.SupportProxy = SysMin;
! I$ {/ X& E' m0 _1 |$ j8 k! b! B( Q( x/ _* N. G8 k6 }: o

$ h0 U0 h) b# R/* configure SysBios to use the lower half of Timer 1 */
: e# V: D$ m" e! |/ H( N+ Wvar Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');8 e5 F2 S* r. r3 u, y! Y# ^! P
var Clock = xdc.useModule('ti.sysbios.knl.Clock');7 n7 d; v9 @& m5 n4 s: l( |
Timer.timerSettings[1].master = true;  Q+ Q5 c+ S8 N2 C
Timer.defaultHalf = Timer.Half_LOWER;
9 u& P& |/ l6 J( WClock.timerId = 1;6 x( w% r' N% r) o4 I1 v

8 J9 W+ p' A2 h4 i# z: V" W
5 Z  _6 F, y7 Y) A% B. e2 Q3 n* [2 ]2 G1 P) E: g+ V6 Y) ]

& Q+ O  c) z0 m
分享到:  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-12-17 11:40 , Processed in 0.039619 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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