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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:
7 P% {. y7 m. r[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中& g8 V6 ~( W7 c+ K% ~7 _
[color=inherit !important]
, K. ]0 f, e! i1 S! z0 ?" c

7 y( \' O+ h- z% k; x+ Y: x1 `, f: p. e[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器2- g; l5 e& L* b$ |/ B( T. w
[color=inherit !important]8 w1 @5 m% w& Q1 [8 r1 j$ R

5 }6 z" {: m8 f$ ItimerParams.period = 500;
9 E) u/ R7 w1 O0 {# FtimerParams.periodType = Timer_PeriodType_MICROSECS;

+ @5 x, L1 `/ }! @) P/ v' UTimer_create(2, Timer2Proc, &timerParams, &eb);7 g9 z+ Q1 V7 d$ J+ p

2 L+ D8 X' H7 y6 {' e8 b

" h) q! f% y2 r: M& t8 J* p3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);
/ v2 }' P" ?: t$ J8 W' Y' z! i& h产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。
' t6 y: G- i  `7 m2 K3 }0 R4 F, C; o7 W4 D2 N- Y

! B( P2 D- w. v' ~2 x: `/ D+ m& ^* D8 z7 p6 @7 T9 @
/*0 H' _- ]% G% H0 g/ z- J
*  ======== Dsp.cfg ========8 F$ _; Y4 n: [
*4 M) M" d5 ^' V* P+ Y
*/* y" r6 c0 w8 w3 J0 k( y4 P

' n1 ?5 n" Y" p. X5 A: Y& h
8 F3 y, Z' F8 W1 T
/* root of the configuration object model */6 r8 i) J& K) j8 H8 K! n. E
var Program = xdc.useModule('xdc.cfg.Program');
+ v  t' J! A8 J7 E+ W! h" u' f+ _. r. m# _7 `/ G
+ n# D9 [- s( }/ r4 S
/* application uses the following modules and packages */3 @, [  A3 A3 }1 J1 ?% k
xdc.useModule('xdc.runtime.Assert');, ^8 V4 C# \, M2 u9 n
xdc.useModule('xdc.runtime.Diags');$ ~1 y. K* ~$ Y/ c9 k# S. m
xdc.useModule('xdc.runtime.Error');! Y- E# T$ ~0 u
xdc.useModule('xdc.runtime.Log');
  s- ~; h' N$ B7 {xdc.useModule('xdc.runtime.Registry');$ \" I+ S* A9 L) m9 Z  `+ x

% e9 N% q* f% Y/ c0 s3 a

1 w0 j: G) G% yxdc.useModule('ti.sysbios.gates.GateHwi');% I8 ]/ W8 G; s. H" e2 G) W  N' G
xdc.useModule('ti.sysbios.knl.Semaphore');7 H: L' z  b; q1 U
xdc.useModule('ti.sysbios.knl.Task');/ p0 N6 K3 S' t5 Q; A- K# X
5 M8 J9 ^3 F, n- G, U: p% T

. T/ j$ w) A8 ]; V9 q  v' v  N- T* E. j

  m" \& i' w  c) N, u% z: w
7 Q/ e% `+ Y  H" `! I# D( X4 [6 c& T* L5 b& j) [. q0 W

7 n7 {5 a$ N/ [3 ovar BIOS = xdc.useModule('ti.sysbios.BIOS');
- W8 `) g) {) ~+ `BIOS.libType = BIOS.LibType_NonInstrumented;' t3 G# k( l: A1 ^" x
0 f3 S& V. Q( i
: F$ B- V7 w$ R

: D2 X& {: F+ x) x! f3 r% ]xdc.useModule('ti.syslink.ipc.rtos.Syslink');
: J9 W- O7 r  K0 A6 {7 f' @5 @) a3 F2 _& ~; \

. Q# m) }/ M5 n1 E( Y$ O: \
  L' U( k/ q3 Q8 t' }var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
6 ~. K* i* n0 u% U" J9 gvar procNameAry = MultiProc.getDeviceProcNames();: z9 L3 q, t9 m) ]) q2 I$ C
MultiProc.setConfig("DSP", procNameAry);
  ^1 h9 E7 j  l. _8 y/ Z! |6 E3 q- ?% G6 Z2 Q: v9 |# H

& ^/ t) O0 o/ E/ \( B4 M1 N
( ]0 u' k9 z+ k! E! Z* K  Fvar Ipc = xdc.useModule('ti.sdo.ipc.Ipc');8 @, Z2 T$ ?( U0 P% J8 s0 b8 A
9 `. V- x& n6 M1 P
6 q$ P: ^% U( ^5 _: K( f, r$ \
: @0 B0 _" y) N
Ipc.sr0MemorySetup = false;% w" O5 m! I; R+ C7 r% C

9 g( m! _# v. q& T$ o3 K/ r

' \4 B8 {+ u$ x7 |1 f+ e. M: ?) A( l1 o; o
Ipc.procSync = Ipc.ProcSync_PAIR;9 O7 D7 g1 X6 o

5 R& b+ S+ I8 R5 ~1 h* a9 a, L  d/ c  J

1 A9 z6 ^+ \. v7 g2 V/* define host processor */% g/ f2 q. d( V$ {
Ipc.hostProcId = MultiProc.getIdMeta("HOST");
& j+ ^& H* w# m+ v" k8 w5 X: l5 N3 G1 h) ]
1 g) l3 X. ]7 G  a& T  h
/* shared region configuration */
1 a( D  q3 s2 p. r! N7 ^5 V$ h; w; Avar SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
1 r  G8 }# G1 C0 ]. t
. R4 b+ g+ o( K2 C8 B6 {
8 V  W8 B' a4 y: @* l
/* configure SharedRegion #0 (IPC) */
1 @( W& C# |) T  ]4 L& p0 O* {var SR0Mem = Program.cpu.memoryMap["SR_0"];& }  g4 d7 G8 C  P" N# Z% f/ w! I

! d- v& x/ V$ q+ X  m

0 t' X% t4 L1 m4 NSharedRegion.setEntryMeta(0,6 l4 ^  c" m" V5 P
    new SharedRegion.Entry({
& F% ?1 N8 p" N: F* }8 J$ V# E        name:           "SR0",' P4 K; C* s* d; f3 U! x/ K7 r
        base:           SR0Mem.base,( J' f) r5 N3 }! D
        len:            SR0Mem.len,
, m' R/ Q$ e* ^3 L( h% b        ownerProcId:    MultiProc.getIdMeta("HOST"),; p/ X& I9 B! a) g
        cacheEnable:    false,% u+ A2 n# c" E) Q: @2 {! C
        isValid:        true$ W% C( \1 V0 m, D1 A4 Z
    })
/ j, D2 Y# A/ ?! Y);
3 r. w1 y+ |. ~0 e0 m0 ^# r  k& z) U) O( _
" R) g8 ]4 e: s* w8 k9 G' x, t

* l+ D( m) u: j. s
( M! ?8 {& O% h7 F( S) q1 g3 A$ \

! y6 ^! E4 C8 y. s, [5 M4 v" lCache = xdc.useModule('ti.sysbios.family.c64p.Cache');
9 G$ f3 C0 W( {3 j6 X' Y, w' sCache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */# ^- |: D0 J$ d" m$ d; M
0 G3 u, h/ c: u; r4 _

% b, H, z/ |6 H7 k
# W8 u8 L) V- J* Z

. H$ N# h" r8 h3 c0 ^/*
! }- c8 Q, D! a! \/ @) n; K *  ======== Operating System Configuration ========' f, q; k# @# F. F
*/
8 n6 P# T3 G, X3 G, s
( K4 N. Z/ d- k0 h$ d% H. o; _
. k+ ]  S5 ^. p* C9 s3 `
/* no rts heap */3 R! r, h8 O/ t# Q7 A& o
Program.heap = 0;- N" R% V# ^' A' o+ }' \
Program.argSize = 100;  /* minimum size */
2 W/ D& l6 ~- \& GProgram.stack = 0x1000;
% w5 _+ F4 Q' n
$ D7 J4 M+ S- @" I4 Y9 a+ ?7 H

: b2 v5 R% R& ~. o, m2 l/* create a default heap */
6 ^" E" Y9 B0 k2 |var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');" p9 ]+ ~. s( e9 O2 U) L
var heapMemParams = new HeapMem.Params();# {8 ~0 F9 }3 F4 N% ~# o" y5 o
heapMemParams.size = 0x4000;
4 Z: [9 i' t+ i+ a1 k
8 A8 p; Z, D) a1 u  |

$ V) T; P8 o2 t6 O; Y) Zvar Memory = xdc.useModule('xdc.runtime.Memory');( t% t' V- R, j5 a! |/ V2 }7 d' y
Memory.defaultHeapInstance = HeapMem.create(heapMemParams);, i& e' g/ Z6 ?* e0 g9 t% T0 E
: p* h4 r: J6 J. F) E" Z& d6 Q

- A$ W: A6 K! U# s) P$ u5 \) d/* configure System module */
, s: {( V% z. x9 qvar SysMin = xdc.useModule('xdc.runtime.SysMin');, L' _9 r" z1 z1 z! K' }' E+ L
SysMin.bufSize = 0x1000;
. S  n5 p! J* b% r! I0 a7 w  rSysMin.flushAtExit = false;# i- B) S1 {+ m( E+ k" z$ l

* [! I& b( K' v, W3 C2 y! N
( o! B9 u# F& z7 F7 r! j' E$ G$ P
var System = xdc.useModule('xdc.runtime.System');
) ]) I9 {2 F8 Q. k. P) n8 G- \System.SupportProxy = SysMin;
0 s& t7 s- P$ s6 R4 y6 h! {
2 W( n6 B. {6 g" u' T

: N3 T$ H% U! I8 ~/* configure SysBios to use the lower half of Timer 1 */* h, h, x! H9 X" ]8 @! @5 n
var Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');) {* D+ V4 F0 [3 @& C" l4 g% R" h2 R( R
var Clock = xdc.useModule('ti.sysbios.knl.Clock');& Z  j' S" X8 E! v. H% n
Timer.timerSettings[1].master = true;
+ l8 R/ _8 U: fTimer.defaultHalf = Timer.Half_LOWER;: W) r8 Q# i& B% f" u
Clock.timerId = 1;
- S6 Y$ y* G% u  X- l+ `9 X- G
9 k4 s$ }" v3 b* ?2 K: K7 Z3 n3 o: C9 m2 b" g! [. t/ ]* s! _

5 h- S& ~; e4 N, E9 m- U* X7 v0 ^0 `# K* l3 n: |
分享到:  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 14:10 , Processed in 0.040586 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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