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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:
$ c6 [$ {& A; r[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中% L' i* X1 P3 q/ z8 Z9 i+ h9 _& K
[color=inherit !important]
9 b& {" l+ G1 H( C; X

5 C$ k( {8 K0 U5 [) a/ S[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器2
; `6 [, ~+ O; B% h[color=inherit !important]& R1 z4 g, ]7 W3 A' v# G9 r) z# u
) m" Y' }' ~# H. K( C+ z1 c
timerParams.period = 500;2 M  \$ _, d( T2 M+ Q
timerParams.periodType = Timer_PeriodType_MICROSECS;
  [" Z2 U; y( g$ J
Timer_create(2, Timer2Proc, &timerParams, &eb);/ D3 D1 y, z3 q* U3 {

  V  {( j4 e1 E& ~; o2 z% W7 v

9 v7 K3 q& t7 B/ n, p3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);
* ]/ [' G( A: _1 \6 _产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。; q4 S8 d& d8 A- P" H
* r4 \' p/ T- _5 X% S) W

% f, N. U% u, U4 }
6 M3 P) e1 [/ t. h  L; E8 |( g2 k/*
9 a+ y* n% X1 \- p *  ======== Dsp.cfg ========8 q# D/ J! W' @. ^. C5 E
*
) l) J7 N7 `; k: I+ v+ H *// k- Z: j8 {( i- f% \' d

9 r1 a) ~* ^! s- G2 |

8 e! ?9 ]" U, `6 j5 C4 \* T$ e; ~/* root of the configuration object model */
9 @& m% x  R% _: `# o, A$ Uvar Program = xdc.useModule('xdc.cfg.Program');- n4 Y+ n+ e" y. @4 y. B
1 u; q; w+ Q* F* g# b
7 N: P* s; W- `
/* application uses the following modules and packages */
5 C+ U( Z( H; w* ^! f. ~3 @- Kxdc.useModule('xdc.runtime.Assert');/ C0 {/ z$ p: Y. y/ G" Q( u
xdc.useModule('xdc.runtime.Diags');
* |$ h- c" o' C, Rxdc.useModule('xdc.runtime.Error');" V* k$ r$ x" [
xdc.useModule('xdc.runtime.Log');+ P! I; P. J1 ?) O: h% q
xdc.useModule('xdc.runtime.Registry');
! r6 n% w2 u% b( }* s
# \1 h1 K$ o* q+ d. o- p

5 _2 h0 _5 S) n$ M5 f) exdc.useModule('ti.sysbios.gates.GateHwi');1 z' ]9 T# I) K; |  ?3 t- c$ T
xdc.useModule('ti.sysbios.knl.Semaphore');
2 @% J7 B1 l! Hxdc.useModule('ti.sysbios.knl.Task');' a' c- D2 J& q

" J' s8 y' l2 o$ ?5 o

6 }8 f" U" k9 h* S/ M$ M& F# K% M/ k
6 v/ z' g! a, F, C: e2 a5 P3 I

  y! ?1 M) U0 [7 H9 n8 b6 N$ c  A9 z( U0 q
# \1 K# @! `6 V
var BIOS = xdc.useModule('ti.sysbios.BIOS');
% y9 J4 q2 x. |7 rBIOS.libType = BIOS.LibType_NonInstrumented;# P) u' B# p3 I. ?
5 Q- X  V* `3 l  m& w

% y% s- v* Z4 J" U. x, p7 m$ d" J7 ~7 X0 ^3 c7 \: n7 D# h
xdc.useModule('ti.syslink.ipc.rtos.Syslink');
# t7 }+ y. {6 |! P( x" P: U0 e1 b% P9 W4 Z) V) d. Q

6 n& R- F) }8 v& O! i( g2 G) v" Q
% e# F) V! x/ `; I- Y- q: hvar MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');$ U$ Q$ i  n5 p" y- l
var procNameAry = MultiProc.getDeviceProcNames();. ]- k; f, o0 l. q  A; R
MultiProc.setConfig("DSP", procNameAry);
# N) X6 y% L5 h4 f) T2 w5 l6 D3 M# q1 p
, V* C: |4 u+ I( M) w/ U$ ]3 A
  S8 B. T' X1 Y) D7 v
var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');
2 b  R: m* g; t" Q6 }6 @/ K* N$ v- u, Q* i- @5 k1 Y

3 M' F  H, C# L. E/ Y5 W
. d: {" B8 y; j7 vIpc.sr0MemorySetup = false;6 C6 ?0 V3 S1 U: I1 o
  i, H' v& b9 _: E
0 h5 i+ F" E- J0 [- f
6 c# ?: z5 _3 U: F7 D9 h# F  i- I+ J
Ipc.procSync = Ipc.ProcSync_PAIR;
3 x* j# i6 U+ T  \9 H1 ?/ U4 ?  |3 q0 ^; g5 G( M

/ A' O9 r; ?. s" A$ L$ E/* define host processor */
. D' }9 j! k$ U1 f, }9 pIpc.hostProcId = MultiProc.getIdMeta("HOST");, ]" g1 P6 x* y% B

  M- M7 k8 u+ w1 B

, {: f  x. `/ b; D/* shared region configuration */
* h( e4 z+ A* U! B# Yvar SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');; V0 H& u; A/ o  {2 Y: M

/ J8 S' {" m( L
' c6 J- L+ ], [5 s  h- u
/* configure SharedRegion #0 (IPC) */
, ?7 l/ p9 j+ L- N$ ^, cvar SR0Mem = Program.cpu.memoryMap["SR_0"];
: Q) e; r1 _( a3 L7 G+ c7 v
4 ^5 i6 X0 x. @) y
2 \+ n( _! j( N# I5 F
SharedRegion.setEntryMeta(0,
/ E+ F+ V" `* T* b* l    new SharedRegion.Entry({
5 Z( m/ q7 Z4 r1 U% V1 U" [, f! [        name:           "SR0",
4 V/ F: R/ w1 b. ^! i0 n% d" [0 ?4 z        base:           SR0Mem.base,* w9 ^7 a/ ?$ ?% Q
        len:            SR0Mem.len,7 {3 T5 j* E8 H" x4 f
        ownerProcId:    MultiProc.getIdMeta("HOST"),' o0 U) m/ |+ [
        cacheEnable:    false,
! U- S. u2 a; D+ ^! V        isValid:        true0 n1 w& Y6 Q3 J: E. A
    })
7 _9 X( N" w+ e4 K/ z! a; H);  ]; v1 g- T% \8 v0 p/ f& E

  C% u" f- ~: b" f# Q$ b
8 U/ H# ~- p& J, y+ j' v

. X  x- a) @' w
) Y" V" V1 g  E& ?, S8 t! b

, Z" h. h' Y* OCache = xdc.useModule('ti.sysbios.family.c64p.Cache');
# D# T- G- E) s1 YCache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */
* e' R8 ?. }& B  [1 T; P- e& o/ e2 x& q
$ k. b- C6 i' m2 I% F) l2 U
: j, f% ?( C: z. _; k% q# e" y
9 `6 _9 f* k9 _4 G: n: M: k! W3 F
/*: k: o' p7 K7 o8 d. c: l+ t
*  ======== Operating System Configuration ========) A4 ?8 J0 r* a3 f7 w# }
*/- N5 }1 ^9 }5 U3 t

* B! L! t" d9 o2 x- D2 _4 |) j

) x/ t( D, B9 _+ q% I, Z& s/* no rts heap */
0 a! B0 P! i- F  n7 b$ |Program.heap = 0;
) |3 h  m* j  ^$ dProgram.argSize = 100;  /* minimum size */
' m# q* y5 ]# ]2 S4 T8 h' X5 O6 l* KProgram.stack = 0x1000;
" x! B1 h! G7 V9 Y% F# A9 ^) p* @" k1 H) D( ?" o6 k

& A: l% m/ `( b0 S" M0 k- {/* create a default heap */+ y" v8 F! f) B( g7 d* S) @
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
* g& h1 d6 }$ ]7 A& m7 c, }0 Dvar heapMemParams = new HeapMem.Params();
8 i1 S1 t% ]( E% ]* U8 RheapMemParams.size = 0x4000;7 F$ [. n! r# v  r+ B; F6 F

  J' e! ^* O9 x0 v$ ^# H

/ z' M) S# d4 k0 Kvar Memory = xdc.useModule('xdc.runtime.Memory');+ X+ y9 }, z4 m% H* h' q
Memory.defaultHeapInstance = HeapMem.create(heapMemParams);
" w0 E  T* r# s  `1 M6 `2 t0 |( H9 c7 k9 f

( ^; I+ {$ a- B- j  S$ B: M/ I  g5 R- Q/* configure System module */
$ Y) C" ^6 s& L- Evar SysMin = xdc.useModule('xdc.runtime.SysMin');
  q8 ]3 ]/ T* V; b, a+ f$ ISysMin.bufSize = 0x1000;
5 {+ o5 d( }4 A, OSysMin.flushAtExit = false;
2 j) k& e, |, K  `5 c# y+ f1 @+ W$ X* \( p* z
+ }7 F0 S& ?( @, B' ~% b3 I
var System = xdc.useModule('xdc.runtime.System');
& G/ p; W' b, T# `+ _% ~1 I0 r" ~System.SupportProxy = SysMin;
+ n' Q6 o, n* J* m: b) q6 L$ A7 i, @' O: b  n. k0 a0 E# q, W1 o
- f3 _) O8 z% C) b; c8 R
/* configure SysBios to use the lower half of Timer 1 */
: k7 ^" N  b0 J; dvar Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');
$ E# B. U6 |1 e4 E" yvar Clock = xdc.useModule('ti.sysbios.knl.Clock');+ D2 G; |( C6 K% _( t
Timer.timerSettings[1].master = true;
& W  |, i+ j4 }& DTimer.defaultHalf = Timer.Half_LOWER;
" v- `# E: l% W$ S. Y. p: rClock.timerId = 1;' F# f8 p) x' l% N2 q, K

  Y, Q! x8 p% Y3 l, |4 W1 F. B9 H% ^& {4 E8 m2 t- d- S

# R9 ^; ?. B& q* w% ]/ {2 V; |' p5 Y
3 n# P( k/ R3 f/ ^" _( _+ J' }7 {
分享到:  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-16 16:20 , Processed in 0.041681 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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