omapl138中 dsp端time_create问题 定时时间不准确 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

4

主题

9

帖子

56

积分

注册会员

Rank: 2

积分
56
跳转到指定楼层
楼主
发表于 2017-4-7 16:58:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:
5 b4 ~7 A( ~  Z& U( W1 E; P4 L4 \[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中
& S! S2 v+ F( a: T) }' L! c[color=inherit !important]
% G1 ?/ {0 i, t4 o* k( d
7 S& I0 z( g$ W! m" |/ ?; o' I; R. A& i
[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器2  [2 \9 i' q; I/ w! {$ ]* |
[color=inherit !important]
4 w& b# k% a3 C% U  Q) v5 s6 b

- J% g' ~5 r$ F- s6 TtimerParams.period = 500;
$ c+ _7 P0 G: q4 btimerParams.periodType = Timer_PeriodType_MICROSECS;

) r" j9 |: G, k4 a( q" UTimer_create(2, Timer2Proc, &timerParams, &eb);
0 F2 O3 `2 r  X! c- u4 w$ @4 y6 R% J" r

' x0 ~+ M6 O& \+ m, A; Z3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);1 h- ^4 Y2 e5 M5 Y9 R7 ~
产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。
' ?; ~! n. H- _
% ]2 U) W/ _' f4 n  R0 x  M

; _( `7 a. I% _2 n* e# @+ b' o' n4 v( s3 |  |& L
/*
% J, i; R' f$ Y *  ======== Dsp.cfg ========
! ~" c2 G& F, ~7 c, n! N *
) {8 B7 w+ X: Z, K6 e */
" h$ g( l9 n/ {/ e. E0 X8 c" q7 ?
; @9 Z& e# @6 v  z7 f
/* root of the configuration object model */
3 z. d: i7 n+ q! d& B1 c* M( N. tvar Program = xdc.useModule('xdc.cfg.Program');
$ Z0 e+ T3 c& ?* ^  [  `" t4 o
' h- g9 X  ~9 B+ [- g( p
9 O1 I1 Q( r6 s* m; g+ F$ t
/* application uses the following modules and packages */
! U4 w9 U& F# Y6 r: hxdc.useModule('xdc.runtime.Assert');0 S- x4 |4 r4 A2 @
xdc.useModule('xdc.runtime.Diags');7 O- p% J6 x1 ?0 g0 G6 t4 T
xdc.useModule('xdc.runtime.Error');2 b2 _6 D" a) g8 o1 t: a% e
xdc.useModule('xdc.runtime.Log');
3 u! A( M. ^- \% axdc.useModule('xdc.runtime.Registry');5 `, z) T& b  Y2 m* i6 ^

8 ~; e* h  K  N! }( e0 \

: n7 F: P) n- M: ?xdc.useModule('ti.sysbios.gates.GateHwi');
  C# W; t$ t: ^4 K5 Ixdc.useModule('ti.sysbios.knl.Semaphore');
6 J' Z' e# _. L8 ~xdc.useModule('ti.sysbios.knl.Task');$ {! d1 f' j( i) [
$ e; X' p0 b6 @
7 p  m# B& u2 ]0 ?5 l7 l% y
* i/ E0 v0 W* N# C( e1 Z8 i, O& G
/ c4 ^' `! N9 E3 v$ C5 H

, K4 v( W/ W; k0 q# C8 c9 S2 T
, A& ^- b3 F$ t% a# @3 k7 j' [: Q

6 J% }$ e. [: @var BIOS = xdc.useModule('ti.sysbios.BIOS');; t( `$ Y, C. L# e1 |# x
BIOS.libType = BIOS.LibType_NonInstrumented;
3 X0 X2 r6 @# Y5 `4 ]  f; O) h9 n- Y  e  f) x3 t8 N

: F2 F1 X" ~) B3 E7 }0 J0 v7 B* Z7 v( S
xdc.useModule('ti.syslink.ipc.rtos.Syslink');- Y# S5 D+ u/ [& `/ f

* f3 X0 q7 A- L8 c

" m! s( n$ z' R6 V" ]0 k  Q( n* M  i* u) \# G  Y6 A
var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
: L. i" F# L. M$ F8 m6 Y5 U1 ~0 ?var procNameAry = MultiProc.getDeviceProcNames();
, X. Q0 L, c3 [6 B1 rMultiProc.setConfig("DSP", procNameAry);- B0 ]$ q1 R$ A% Q7 q3 Q/ O1 H

4 v6 s" c# K7 V. w' w' q3 _' s
3 x7 ^; F1 t0 t2 k  ~
3 K1 p* S! z1 o
var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');
$ \5 O: a- {. q4 W0 F* T; g6 }9 z$ A2 B, u. O, u

% [1 T  f% M6 x) i' m' O/ f/ ?
9 Z0 u5 \9 s* U+ ~7 RIpc.sr0MemorySetup = false;$ Y. D0 m/ E! l+ C+ n

0 w% U  b: r, u

/ i. z) {5 `3 z; u
, j; @* G; d6 Q2 iIpc.procSync = Ipc.ProcSync_PAIR;
! f' @' d+ P- @; w4 a+ l$ E
" S1 Y/ ], X# w' V/ K1 c8 t

% k8 S- Q4 `# e* `- [  ?1 A/* define host processor */
8 z$ m3 x6 |9 ?) N& \6 NIpc.hostProcId = MultiProc.getIdMeta("HOST");
6 h: ^: ]8 W( V; O4 ]; P: J3 a
( w- X2 ?( c" s% L
+ w0 n$ T  c5 F  C
/* shared region configuration *// E! U- x5 J  s: h
var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
$ b4 N  S2 O8 q) \# d7 S/ K& e+ b. q$ l) V& L. n6 q

! x: a' v' j: I5 Y9 a/* configure SharedRegion #0 (IPC) */
$ D: {# F/ D9 I, M9 f, Rvar SR0Mem = Program.cpu.memoryMap["SR_0"];
9 [# U: a- \8 t7 s# D- i$ ?7 U$ G0 l1 A2 {& s3 X

; \7 x' ]2 c2 m3 m3 l) z! a  |SharedRegion.setEntryMeta(0,
5 G+ z. W% g' [6 \    new SharedRegion.Entry({
8 N" s" L1 b: F, {        name:           "SR0",. ]  s* h' T0 \+ K
        base:           SR0Mem.base,
2 g! I7 W! z' W" Q        len:            SR0Mem.len,4 ^5 [5 x6 s" c  b' y
        ownerProcId:    MultiProc.getIdMeta("HOST"),
" x6 ~* a7 V+ y        cacheEnable:    false,
& ~9 L7 x+ q% ]' {5 J        isValid:        true
: {$ ~2 d" Q9 ^( R$ r8 f    })
* R0 W* V" Z' m);
/ i, Z! q, L2 C; @6 r+ n3 i# y1 l9 r) V' t0 y4 O

/ j) Z/ {# p7 g6 I# \
; ?1 N3 v0 l. ^) D* e! s$ m6 m! d+ e5 ~" y# J

! Y* Q' `& C* F7 s/ k% O0 ?4 ZCache = xdc.useModule('ti.sysbios.family.c64p.Cache');+ y" ^  i# `) p# z2 z& s
Cache.MAR192_223   = 0x00000008;  /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */0 C4 G- j4 t8 H/ ^" L

5 V) X% U- r) H" \4 O( \  k
& d5 h8 }; t$ S' Z2 X8 p* ]" ?

/ ]# b  {: e; r: M3 z

! j$ ~; R& G/ v& c' e/*( v* j% d  ^8 ?$ J6 G0 L4 Z  r1 k
*  ======== Operating System Configuration ========' ]/ n" |$ T5 b
*/
' a. Q! j3 T9 s+ w/ Z' r" u- l- ^' L* c

3 g* ?( _4 k: O2 I/ [$ F/ A% `/* no rts heap */2 |$ Y! E2 ]/ V- f
Program.heap = 0;
$ i  P" E1 Z, o+ I6 O+ {& x5 PProgram.argSize = 100;  /* minimum size */3 G' f. r, a' o$ T& w
Program.stack = 0x1000;7 M. p1 T9 o8 u8 I0 k1 U: I6 z' E

/ |: d5 [5 _/ n7 [  O2 a

* j5 d0 v. }) [# p/* create a default heap */0 Y  i" d' i! E) E' |$ ]# N
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
! g2 {! O4 o) g% k* L6 mvar heapMemParams = new HeapMem.Params();7 G6 J6 F8 x. v% r- g
heapMemParams.size = 0x4000;5 d4 `: u# i/ o& c" ?

4 m$ k7 u+ X& j! _7 N& c  u

! A+ q8 b# a% q* Q, Y9 D6 b. V( M) o% {var Memory = xdc.useModule('xdc.runtime.Memory');- q' V) I/ E4 H, R$ o
Memory.defaultHeapInstance = HeapMem.create(heapMemParams);' Y1 |, k; f+ X; S' b: P* ?
$ J* B3 d6 z4 [! K
, m- B4 r. x/ p2 r0 ]/ ^( P( G
/* configure System module */4 R$ g& m8 h. h& @7 g
var SysMin = xdc.useModule('xdc.runtime.SysMin');3 L) Y9 Z9 o( X* T' w: L7 O/ U2 }
SysMin.bufSize = 0x1000;& m; l" g0 W! N. D
SysMin.flushAtExit = false;) ]- F+ S1 M% r+ A( t
% U1 s; d% @* X  b

5 N% _7 X  f% f# }6 i0 M- bvar System = xdc.useModule('xdc.runtime.System');% t9 O  N: n, W
System.SupportProxy = SysMin;
; J4 R3 N0 [9 v2 g0 A& f& y  @) ^8 F' ?7 j% c+ ~& x
' Q  z. h. l" B; G" i8 B. i8 _
/* configure SysBios to use the lower half of Timer 1 */3 }% \% ]$ J8 Z3 y2 e$ V' W8 k+ Z
var Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');
& e4 ^5 M- p4 S' V; Q: c/ ~) a" ?var Clock = xdc.useModule('ti.sysbios.knl.Clock');
) T8 ^; E6 I, E" B, HTimer.timerSettings[1].master = true;
$ J( y* W( v7 @* q; xTimer.defaultHalf = Timer.Half_LOWER;+ y# z& w2 {$ z0 h2 F2 w# z( b: d/ B
Clock.timerId = 1;: e$ _  h$ L1 N

7 z/ o: a5 Q  z# z! N2 ^! ]# W& B& B% e- a

; }2 Q* g  T# L1 v2 ~4 F" |' U/ O2 X2 G0 K4 }! f# 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, 2026-3-20 19:47 , Processed in 0.043367 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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