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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:" R' \( }! c" j, e/ H
[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中& c& i& o' O! G/ T4 m
[color=inherit !important]
, B1 f' f4 P0 m" x& A1 o
1 o7 j9 I) e( b+ m9 x
[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器2
, \8 g( N( ]" K[color=inherit !important]1 G' ?: ^' p: M  P: F" o1 f5 z, L$ m
* E+ R  Q6 }' j6 A' P
timerParams.period = 500;. U  T7 R7 x# ~' P+ k' c
timerParams.periodType = Timer_PeriodType_MICROSECS;
, C6 c8 h5 [$ U  N5 v% N
Timer_create(2, Timer2Proc, &timerParams, &eb);
: n! F, ^$ b2 C- `0 N' W& o% _
# Y/ }6 u% L% p# s) g

  y$ E, S3 q9 U/ s& ^6 h3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);+ @0 f, N2 t3 [! r8 b/ Y1 D/ _! c
产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。! }( I( W# L! V6 z* ?' I: W

/ N7 c5 R: C' @
+ m& Q( k8 ]  ?6 a% N3 s" A

! c, _( z  e6 [' g: ~# D. j. Y/** c* m& J5 a0 n3 f. P
*  ======== Dsp.cfg ========
  Q& }) p& P+ ?% ], p *
* S# Q( ?7 {! G5 `1 S */$ ^% z$ i& {; z$ p9 B8 S0 E3 B- U
( A3 \0 |% {5 q, |, y/ M( J' r" H

) u6 J8 r! X; A: _/* root of the configuration object model */, Q7 @( @8 u8 U9 @4 ]) ]# Y
var Program = xdc.useModule('xdc.cfg.Program');$ z' H7 w+ B9 `: q

3 e. t; F3 y  p: t  \5 @
' r1 Z! U: n0 p1 T% b& @
/* application uses the following modules and packages */3 h2 M* P! o: U
xdc.useModule('xdc.runtime.Assert');3 A5 q; D* Q7 B, \, F+ M. H1 O# Q
xdc.useModule('xdc.runtime.Diags');: A+ m. c6 h- }# i3 w
xdc.useModule('xdc.runtime.Error');
2 m% a+ |0 j* v5 zxdc.useModule('xdc.runtime.Log');2 c& U( g8 X# S& H: o
xdc.useModule('xdc.runtime.Registry');
5 `1 W: I. z& R9 C0 X
% u7 w$ u5 R4 v$ A% Z
3 p1 o) T# h! \8 |8 M
xdc.useModule('ti.sysbios.gates.GateHwi');6 H7 z! i/ d: i8 T4 X
xdc.useModule('ti.sysbios.knl.Semaphore');
8 }: c* f) Z2 V7 E" C0 Gxdc.useModule('ti.sysbios.knl.Task');3 Y- T& D8 {, {

) D* R. t/ p! q* X+ J  c2 w' P
; T; ]$ L1 ~$ o2 o( `7 E  ^, g9 W" J
* ~" b! w' s6 ?4 I: p

9 o0 s: V5 u4 T, b8 Y4 V% ~5 k- h2 P; L* D5 i$ X
9 b7 E1 G0 O- l( O: y, @6 f

) B' `0 R% q) N& G7 ]var BIOS = xdc.useModule('ti.sysbios.BIOS');
/ o2 W! D2 N# g2 jBIOS.libType = BIOS.LibType_NonInstrumented;! U  E5 @" b# I9 G( F
7 m- E% U' {2 Y% t) n2 ?, N& p8 p
% L. _. d# i8 U
( h# X* c7 I  P; t& |: m, [
xdc.useModule('ti.syslink.ipc.rtos.Syslink');) R2 P) \) X' e, x5 T- D( i2 @4 Q
2 N% F3 B1 p$ O' E$ Q. n1 k3 s2 |

9 t( C% Q2 h1 ^' p$ k$ g
$ r$ g4 {- K/ H# f7 mvar MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');" ]1 p. r# K  h  _3 _
var procNameAry = MultiProc.getDeviceProcNames();9 c! m* ?! f) f
MultiProc.setConfig("DSP", procNameAry);
  y/ U, P& N0 X9 V9 [! M! b2 f, g# [
( W, Y5 Q" ~7 D3 T- ~- e3 d( S2 l! x
  A# u) E- }2 Z
2 ?  H) n: w. L) |! j1 O
var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');1 e6 A9 H3 L! d; G5 Y' |: [

; d4 J' h' q1 }. i0 R* {# M
, [( |1 k5 r' Q1 Z# d) A

: L! h3 S% _1 v8 Y3 r) |! B7 C1 QIpc.sr0MemorySetup = false;; b& _" ]: M) y# l6 b$ c
0 [1 `0 o( L* p9 V4 m

1 G" A, x" R% k6 r6 {1 a' Z% @1 X$ F7 T- `6 n- W
Ipc.procSync = Ipc.ProcSync_PAIR;
! y6 v2 j; @; C# f. M/ R5 u. w" F% a4 ]6 {/ B
" a0 @5 h+ ^" L  f
/* define host processor */- r/ z/ _: U6 n
Ipc.hostProcId = MultiProc.getIdMeta("HOST");' ]. \6 Z4 u, ]$ m$ Q) \( a

' u1 z8 v- w$ L. ?  ]

7 L2 R+ n0 a% t: u& d9 m% Q5 h6 C/* shared region configuration */
0 }8 J& u- _: T4 @) M4 jvar SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');6 w( X( D/ D+ P
1 \! H: H5 H7 ]) S
( B+ I7 u  U6 B
/* configure SharedRegion #0 (IPC) */) \- x( T" L! n* n0 k
var SR0Mem = Program.cpu.memoryMap["SR_0"];1 P3 b' y: v" F
6 X, p3 L- q' g; g8 X; e* C

+ ?2 g8 S2 g( D) d2 v5 r1 cSharedRegion.setEntryMeta(0,
5 u' _3 ^/ |6 W7 B    new SharedRegion.Entry({
" \0 D: M% b+ N/ f        name:           "SR0",
1 k( L+ Q5 G' [7 A. n6 C        base:           SR0Mem.base,
* u/ Y/ j9 k$ C; o        len:            SR0Mem.len,
; {$ C+ G. s) \! e        ownerProcId:    MultiProc.getIdMeta("HOST"),
/ q9 p# `* }2 `' m' F4 W        cacheEnable:    false,' T( a, b5 k! E: C! h
        isValid:        true
' N. X9 U; l6 i; c: {& X' Z- p    })/ s9 x- c- Q. i6 F/ y+ l$ G
);
2 D, J" ]& S" H; I1 V9 c$ I, k$ l( h% V* n5 E( ^. i3 F7 M
' v4 y# V. n7 H# F

$ s3 E+ c) X" i# m* h! E. ]! c; ^6 a! }  F3 Y* p

: j  C$ j% F1 }/ R- K7 FCache = xdc.useModule('ti.sysbios.family.c64p.Cache');
6 l( n* e. J4 m. }# ?Cache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */
3 F7 X# A) M6 P: T: G" L
7 K9 q. @' K. H4 s0 ]- d

" E5 ]0 \8 y: L: _! R' k+ _& [) g4 ~5 H3 _9 P" b5 R
6 z3 q, n  a9 w: X. v8 r/ G0 u
/*$ u- l2 f3 `) M3 p
*  ======== Operating System Configuration ========
% y( M$ p! r2 k5 G */6 F( s/ H+ u, K# S. r

1 u( I5 V* D, w* I) [
- |; W6 q. m0 U3 [' C/ ^  e3 A" L
/* no rts heap */# P/ u+ O4 ~/ I) Q
Program.heap = 0;! G  |8 l/ Z, K
Program.argSize = 100;  /* minimum size */
' F  y! c* e4 @, jProgram.stack = 0x1000;5 z  C" d4 Z, |: v6 T" J+ |: e) D

3 _& ]6 P- U& Q* F# p
8 x7 X! ]$ p6 z' r0 Y0 ~# `6 D
/* create a default heap */2 L* C, \: Z( Z; T) D  R$ r0 o- Z- q
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');$ L3 E! a+ ^3 u1 O
var heapMemParams = new HeapMem.Params();
1 B: v  W& _" U  t3 gheapMemParams.size = 0x4000;
' r* Y+ \/ n' v% M. N& `. t  n
7 Z6 e, t, p0 W" w8 I$ J( G( n3 n2 _
  [2 j. Z) m0 O% S$ f3 j! |
var Memory = xdc.useModule('xdc.runtime.Memory');
3 v( m" `: U) Y5 H5 G; O0 UMemory.defaultHeapInstance = HeapMem.create(heapMemParams);
+ `& `& x+ e- T9 C6 C0 g  P: ~. V% r. Q7 I

5 P# d, g% m2 \4 j9 R8 R- u/* configure System module */& @) Q( x$ W# E6 h1 A) u
var SysMin = xdc.useModule('xdc.runtime.SysMin');
: t+ }& s5 @! ^- t$ ]& ~, [SysMin.bufSize = 0x1000;
, k! E9 \& m& W/ y2 gSysMin.flushAtExit = false;. f( U2 Z. L8 R/ D. S

6 a3 {3 ?8 b- j

# _# s, v8 o8 j4 ^! l( S/ U( Lvar System = xdc.useModule('xdc.runtime.System');
9 h- r( o" b3 H& H1 L: a$ lSystem.SupportProxy = SysMin;
1 g$ I- x6 L  g8 ^1 d1 k" L# _; H" p/ y: J
1 J+ `1 w2 M8 ^
/* configure SysBios to use the lower half of Timer 1 */
6 ~6 G9 Z. v% M( lvar Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');
( ]7 N" X' b. t; c2 f" W" Uvar Clock = xdc.useModule('ti.sysbios.knl.Clock');
) J5 l& o2 U, T$ lTimer.timerSettings[1].master = true;
: _  {2 C. b# I" l! l( g' MTimer.defaultHalf = Timer.Half_LOWER;/ c0 B9 @% F5 p7 S
Clock.timerId = 1;
. d; f+ H6 V& E: J* l* F- s) M5 U: ~) R- H
0 W; l3 p4 f3 F

1 R2 g* c) D/ n. r/ M! O2 t8 Q5 x' o/ |1 o
分享到:  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-11-4 23:41 , Processed in 0.058841 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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