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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:. v( r8 N0 X' ], G/ K: N
[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中1 j% {4 T; X# {5 a9 U3 @
[color=inherit !important]! ^* p- j( M; z' `! J- n

3 ~2 p; T: k3 e& @# h" a$ j[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器2
9 q! E- F7 C$ J[color=inherit !important]9 I' D0 b& o1 l; n! e

9 H, c  v" q$ P- M% t5 Q+ @7 rtimerParams.period = 500;$ a2 v8 T1 g# v3 _) I. Q# l$ L
timerParams.periodType = Timer_PeriodType_MICROSECS;
& d# x1 U; |3 S& h% P6 ^
Timer_create(2, Timer2Proc, &timerParams, &eb);
) p; L0 P2 r  G( \1 _1 R; G3 i3 ~1 o  G
  Q! j' @: S. P; N7 O. V
3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);+ ~) U% U4 B% f; q) f2 K
产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。+ I8 ~: l" _+ N0 @! R9 J- J

: S0 c! ~" d" F) U3 n# F$ J# s* P

% l" |- f5 @0 F% G
# x1 g8 }* S6 {# R% q9 \' n% d/*
( u% f1 [* z- [9 ?) ~5 I: q *  ======== Dsp.cfg ========
$ o& Q* t& ?" b. @8 K *
9 _: F/ \) v0 m- `3 @# r$ A */( P+ C7 A  y& V
. {8 a" v; U% W* I
4 s3 y2 p# L0 P2 ^
/* root of the configuration object model */
' z; j" D4 W: E! E0 K! Gvar Program = xdc.useModule('xdc.cfg.Program');
7 E( r4 j" X0 R1 m( S' r$ E  F( B4 s- d2 H7 G- w
8 Z: _% v% j5 T
/* application uses the following modules and packages */
" i( f* ~8 t& a3 B, V, p/ N8 ]xdc.useModule('xdc.runtime.Assert');4 [; G1 }. i5 x
xdc.useModule('xdc.runtime.Diags');
% G7 C( w1 _! B$ v0 k* Exdc.useModule('xdc.runtime.Error');
4 {- ^: @1 i" R6 ]+ _+ p# V1 B% v( wxdc.useModule('xdc.runtime.Log');" l1 e0 I4 N- m% M' w% n
xdc.useModule('xdc.runtime.Registry');( `, N8 S: T; e) o# n2 O

/ C, f6 ^8 f; |8 e$ K- }" n: j

/ V/ L" |' P6 z0 Txdc.useModule('ti.sysbios.gates.GateHwi');
: }0 p; \9 @- b; S3 N- J4 yxdc.useModule('ti.sysbios.knl.Semaphore');
0 G2 Z+ T  u& {/ B+ Y; [9 l. ^xdc.useModule('ti.sysbios.knl.Task');
9 k. ^5 N& x' t8 X( g- z# Y0 m' D5 `2 b% l: c$ S+ ]) I
8 X/ j$ g: J: Z+ Q. A. U, o

6 h6 \# [9 v& N
0 X5 H8 Q9 w% i- ~0 m
" }9 O: B" H, u5 z. E) w0 F+ k* K1 p% V
8 ?) n2 n% |+ L. B
var BIOS = xdc.useModule('ti.sysbios.BIOS');
: P( ]. O5 |/ o! C2 B7 |' L) O! ^0 oBIOS.libType = BIOS.LibType_NonInstrumented;
" `# b+ I0 r3 Y, F' a8 b  s9 _+ }% {4 O4 J% Z; E8 b/ A, X7 e6 }

7 \( o8 F/ k$ ^7 J5 W( _& Y/ ^8 F; B+ U
2 [: n3 s: i; L: n* L& `xdc.useModule('ti.syslink.ipc.rtos.Syslink');) B! d/ h' ?% M* n

1 i3 x( S5 Z! f3 c6 ?0 K& I

* m7 Z, R. R% B& y7 J9 o
. _8 F3 \8 F* m  M7 _var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
' Y. J5 T: a8 A4 @& W( G: Evar procNameAry = MultiProc.getDeviceProcNames();8 Z% J) m: ^4 x6 z* m0 Z4 t7 J6 _& g
MultiProc.setConfig("DSP", procNameAry);: j0 r% O: H) F  D
6 \( K* K  v: D* y

4 O& v6 R0 o# E9 @) G, W* M! `% n, d, ~$ K
var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');* ^+ ^% d7 f1 @. l4 y" V

* y1 z1 T1 ~# C, J8 o+ a

1 F9 b" W4 T$ }" Q3 d, K( Z4 x8 q4 J& T6 l0 `  |3 c% V
Ipc.sr0MemorySetup = false;( ]$ i! B2 g" p; a  N- t

3 K% G0 K: E, U* D& n# i

. q- A( Y9 g0 j: S9 D5 X' g) G5 `$ D. [3 Z
Ipc.procSync = Ipc.ProcSync_PAIR;" ^: R' T2 V* f- Y

$ c- n( G6 P- P! h1 {

( A0 H. m! `1 t( o' B1 s/* define host processor */
9 S  a$ [8 L  X# K9 J8 q: @. oIpc.hostProcId = MultiProc.getIdMeta("HOST");
; H/ L0 Z) a# i1 [, f' C! e
" w: v; W  f7 ^  g& T* V$ L
4 o' {( H0 [& ?' Y2 j4 g4 h2 ?' C
/* shared region configuration */( D( P3 U0 s" ~& W4 `
var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
. Q# ^0 b7 z% n- X2 y* E9 }; K& \0 [2 J: a3 o1 @5 {+ H
8 Q; _* f/ G: V( D, e
/* configure SharedRegion #0 (IPC) */
' s! o* v! a; D( i/ uvar SR0Mem = Program.cpu.memoryMap["SR_0"];1 s3 B& V. r# G- i, G' Y- F

3 I- h& A" v+ |2 A
6 i) P$ P; }2 b3 K
SharedRegion.setEntryMeta(0,
9 q' E5 ~, X0 G. a! ~    new SharedRegion.Entry({( [# c& {: A! R0 N8 u
        name:           "SR0",
8 ]5 s) q* P- L        base:           SR0Mem.base,
# x2 e, v) |+ U- @        len:            SR0Mem.len,4 r# T6 y4 e. M9 b/ U! N% |
        ownerProcId:    MultiProc.getIdMeta("HOST"),
9 t: o# L6 N0 t  q' e7 q# F        cacheEnable:    false,
) @+ F2 F+ L7 m6 R        isValid:        true% J; {* L/ i8 G5 {! w
    })
, F0 o: e1 c. T8 m& A# t0 r# R);
9 j; v: O: p) `# i& f: w& E
; G4 ?0 C( o& s# i

5 H% g3 Z& S: S7 O* S! a" g* \* I) y& y2 X% w  a7 Y# u

' r" ?4 T9 T8 F, Z
6 d' Q% D0 x6 i, y5 T% r
Cache = xdc.useModule('ti.sysbios.family.c64p.Cache');, g9 ?& s0 o6 l3 V9 J
Cache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */
( X4 `8 m7 |: r% t4 v, n+ u# q& P7 A. S& J/ {5 q! X
' R# ?" ^# `& Q9 h# L# X! o  ?
2 c+ e* J6 d; z, E$ f1 o% N3 Q

  M6 G' y. x" E. R" f$ m" s5 X/*, k3 Q! U5 W. y& g; R' _! u: |
*  ======== Operating System Configuration ========7 p5 d6 u  n1 G3 M2 f) C5 y0 R  Z
*/
: m5 q& r0 P0 ?, r! ^( v
  D4 u& o. H8 E

. }1 r& T2 J4 j) v  v. C/* no rts heap */
4 Z9 C5 h& [  @4 }Program.heap = 0;- S1 k  U1 L2 P" f* u/ `% Y
Program.argSize = 100;  /* minimum size */
& [3 V7 \9 W/ b3 `$ UProgram.stack = 0x1000;
. v8 w; a5 |0 ^: T* G/ W' c2 C
' w+ Z, f$ w  R- w! f
$ U# L* P) q* P
/* create a default heap */
$ {+ [% v5 C  y! P, v! rvar HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
( `" p1 D9 E- T: Gvar heapMemParams = new HeapMem.Params();( i  |# V9 U! n; s
heapMemParams.size = 0x4000;
- j7 |  ~( p2 }; Q- W) Q0 h
& ]# ?3 v7 W! v1 `1 G$ }2 T6 o; X
; f! Y8 g) s3 g9 A
var Memory = xdc.useModule('xdc.runtime.Memory');
" }8 [- q2 ^, a9 U% oMemory.defaultHeapInstance = HeapMem.create(heapMemParams);
5 B% D  g0 z* {* J3 X/ |" I. P0 P& v4 q3 q, r- D5 }
( [" N8 a* W& W  M9 L, ]8 [" t
/* configure System module */" H& [+ z1 F8 }; E; g& b
var SysMin = xdc.useModule('xdc.runtime.SysMin');/ v! c( Y; @( S4 C' {, z  j
SysMin.bufSize = 0x1000;
/ q6 B% n+ q" O3 x! z$ |2 iSysMin.flushAtExit = false;9 |1 V0 ]( G3 e
" A/ r- A* F$ B& `8 f! g# Y/ \

% d9 D4 n0 Y6 l$ Z. H; Evar System = xdc.useModule('xdc.runtime.System');9 T7 c. H& c; h$ {9 N- Z
System.SupportProxy = SysMin;7 ~1 k9 t0 S) r8 K$ W. @6 Z
% K: h7 h; z# @) f- E+ Q3 y

/ }/ T& r/ R. {4 v1 w/* configure SysBios to use the lower half of Timer 1 */
2 d9 x4 ^# j$ Y" G. q7 Jvar Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');
0 {  c5 A, [3 B( R) h+ ~var Clock = xdc.useModule('ti.sysbios.knl.Clock');
# L' V9 X. T$ ~8 c3 Y9 CTimer.timerSettings[1].master = true;
1 P: W2 W7 E1 C  {0 a2 x5 ATimer.defaultHalf = Timer.Half_LOWER;* l/ P4 `( I& X9 C9 t0 {$ y
Clock.timerId = 1;( M9 |3 L# |) L) x( A: Q
( _' e1 c6 J& j# F( C

5 U, V* H: `1 d9 o% ^' L7 k$ N( G4 t6 y4 ]6 E

" U4 N& Q) Y: Q7 b& v9 M/ e) R
分享到:  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-10-16 22:08 , Processed in 0.048279 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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