|
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:
/ l4 N4 X `* }) J[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中/ r. C1 k' Q. K9 ~4 ]7 R
[color=inherit !important]
- W! ~2 t0 ^8 ?5 R0 d% J) }2 w% x+ m$ M2 s5 P9 P
[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器2
4 n1 [) h; Q1 f2 c[color=inherit !important]
$ f0 y) f+ v4 c, ` z2 a
3 \) g$ v9 N5 [3 v ItimerParams.period = 500;
/ s8 p; W; H( g( e: P6 V* ktimerParams.periodType = Timer_PeriodType_MICROSECS;
0 P' V: x0 a/ _: b' O, c4 G4 x$ Z$ DTimer_create(2, Timer2Proc, &timerParams, &eb);
$ i1 _, Z4 a4 R/ ]) A
: x# O9 d" h. R. J! Q: T4 Z1 r
8 x1 m h0 G: |5 R3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);7 x* f* y% p% O( o& D7 n
产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。
1 D( ?3 ^3 M+ A# ]$ P1 g
# p5 S2 N: @ v* F% B+ V/ b6 Q$ Q8 \9 K1 l2 _# P m
4 Y4 P$ E8 E# l* R/*( ]7 Q+ Y0 ?" y4 a$ \& O
* ======== Dsp.cfg ========
6 Y; C; e5 H4 `$ f5 t *8 b2 G9 V& x4 V
*/8 U3 x& Q" j/ C* d9 z( R4 U5 D2 @8 Q
" p3 `& D- {5 P" ~! [3 T; x9 h, U& G7 G2 }; m9 P8 p& O
/* root of the configuration object model */
; y& w Z1 x6 B6 B0 c1 dvar Program = xdc.useModule('xdc.cfg.Program'); A% [, J' m* T' d& r# K9 ]" h
' c/ Z& m, @+ _0 P& ^/ u6 v ~, f
, o6 p4 _/ ~! r- C/* application uses the following modules and packages */
) C# s6 n- B4 ]# e9 Exdc.useModule('xdc.runtime.Assert');
3 u- r& h% y4 b2 [- c Y0 E+ C4 G8 I5 Yxdc.useModule('xdc.runtime.Diags');
9 \5 y5 j$ u2 `' hxdc.useModule('xdc.runtime.Error');
8 ^- H$ @( |4 p$ R; ~6 Ixdc.useModule('xdc.runtime.Log');
& B. k7 {0 }. V6 j1 }3 s7 A; P( E2 nxdc.useModule('xdc.runtime.Registry');- H) S" Y4 K# |
+ N4 z9 m. L s, g1 s
! c: ~& `( u- K. a% ?xdc.useModule('ti.sysbios.gates.GateHwi');6 T, A( E; X4 |, G. L
xdc.useModule('ti.sysbios.knl.Semaphore');9 i/ b* a6 H. t0 M9 p {3 Q/ B
xdc.useModule('ti.sysbios.knl.Task');
! ~* H2 c8 E/ a; r0 Y6 c* a
+ A# Z7 R) J, q6 j o6 V; Z1 Q I2 G! y' o* r- T6 ~/ F
# \3 N1 |: S% H; x Z; U G' A) v; b/ c0 d3 m# z
0 r0 V5 p. x1 K1 C/ Z, |- T+ u
. J g: f9 @& B1 d* E4 H6 D7 l0 v; x. g' R/ z
var BIOS = xdc.useModule('ti.sysbios.BIOS');
7 I+ x5 u5 D6 OBIOS.libType = BIOS.LibType_NonInstrumented; ^0 ^7 O7 C) ~/ M
G; _; y; i0 s \1 [6 I y/ T; z8 g$ v
S9 x( [8 t; [ h
$ O; K% R, X2 n9 [xdc.useModule('ti.syslink.ipc.rtos.Syslink');
# n& |7 h3 Z. @ x$ C+ R. u0 `' X# J5 `. e5 O4 b+ @
' m4 {. z6 W0 y1 q: c
, d; a7 U Q+ ?% d! P- B5 wvar MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');" R, @9 w4 |- T u& R
var procNameAry = MultiProc.getDeviceProcNames();5 A' \& F) ?" G* |- O
MultiProc.setConfig("DSP", procNameAry);& u6 U6 i, P1 N# \7 W# d
2 r1 X0 ~3 v, k' R/ V- o0 W8 b2 R+ H% I3 F- u
9 K6 m4 w2 A* F$ ^& g$ r/ z- p8 I
var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');* b5 x9 c$ B: |+ v+ S* [' g
+ \9 w8 x0 d3 w2 O; N
+ _8 Y& X1 i+ r& [# d; B) \
+ t# g( a) J4 r. N7 NIpc.sr0MemorySetup = false;' u" J( q9 s% ^1 A$ ]
; k6 n# j/ g3 M2 u" H
k6 V8 ]$ W( d; F) _8 @
, c \* |7 h% }/ C9 i$ y5 O3 l# m8 uIpc.procSync = Ipc.ProcSync_PAIR;
z Y( F4 X$ H1 \, v* x3 [% d$ X
! s5 W) J8 e) x4 ]+ D5 W& }: t; d" f( p( g# k( G2 S/ ?
/* define host processor */) Q9 z: M: h/ f
Ipc.hostProcId = MultiProc.getIdMeta("HOST");
$ j: e+ s' Z. f6 @2 b) a6 ~' t! b; ~% x
+ i* y0 S. e7 T! ?. N/ }1 b! g o
/* shared region configuration */
$ W( W" C& G; w. k7 g9 W9 \6 yvar SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
2 v! Q+ e8 { b/ c2 [: L8 \- X- N" b9 a2 I7 c0 N2 j7 S9 N4 D
- |3 U) K: B3 v' M( C
/* configure SharedRegion #0 (IPC) */: L2 f/ G: J4 C) {3 ]0 n8 f% l
var SR0Mem = Program.cpu.memoryMap["SR_0"];
1 D2 U# T1 M, O7 `0 g7 x6 }" ?# _; b
& H6 {7 M5 J6 ]0 h% J
SharedRegion.setEntryMeta(0,2 ?1 B( @) T# S6 c9 H
new SharedRegion.Entry({
4 ~0 Y4 q* o. @$ |/ G: A name: "SR0",
% [% E9 e, \# L) Q8 E+ g2 A' | base: SR0Mem.base,
9 i2 d) J g. O5 m3 N" ] len: SR0Mem.len,
$ E: t9 r( F4 z) Q& J4 {2 b( L ownerProcId: MultiProc.getIdMeta("HOST"),, \% n- h5 [0 t5 H. F5 ^. e
cacheEnable: false,. x4 U/ J- N! a, G7 i4 ]+ ^9 C
isValid: true$ ?5 ]6 f M6 L; E5 n! i
})% I% T" j: R2 C' f
);
7 R0 D+ U/ F/ L4 Q8 y
3 R; l& G h6 f V3 V5 F; P
& K. U- m5 A3 G. |% Q/ f" v }# y) g' V7 b& ]2 U+ Z7 b
- I5 _6 H& ?, R! |. w$ m, u, {+ N* ?% U$ E. @0 G3 f! @
Cache = xdc.useModule('ti.sysbios.family.c64p.Cache');( v- J: F5 f: C0 D& n% `0 p
Cache.MAR192_223 = 0x00000008; /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */% g: r' {' Y5 a
+ _( x" d1 i" T* Q) y$ Z
" u9 p. p. y' r1 X. t$ E# V
& v2 m! V" k: `. W$ s& A- m+ I3 q4 T2 e4 M# [1 d
/*7 u, R( }0 L$ Q2 U; y" j2 z
* ======== Operating System Configuration ========
3 ~ c4 o3 @0 E4 e */5 K, ~! K4 E# H9 O6 Q, d% _
7 a/ L0 j+ K8 K8 _' d7 N3 T( | [! @( F* ?4 V3 x2 M1 U! V0 k
/* no rts heap */
0 Y! W: |% h/ h$ \$ E1 ?3 L$ ^- HProgram.heap = 0;- z3 O! B. e3 X' c4 E+ R
Program.argSize = 100; /* minimum size */
) N. w: b; O* ] k2 pProgram.stack = 0x1000;% X' ]7 ~+ t9 x. D5 h" A! w+ a |
' \7 Y( }: a2 k0 Z% E
: V: g- q& ^# P, K, |/ D/* create a default heap */
8 M5 E+ x# ]" D# Vvar HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');, y, |. t$ C' U/ V9 q
var heapMemParams = new HeapMem.Params();* w$ n0 @$ x+ s" F, Y; M
heapMemParams.size = 0x4000;
. `- p0 d3 ?: H2 b3 Z' }; H: b1 d E; s: N1 {! Q' w
% ]3 s7 S* `& M" I& t: e7 [var Memory = xdc.useModule('xdc.runtime.Memory');
0 J# i# @! _2 L- NMemory.defaultHeapInstance = HeapMem.create(heapMemParams);' z! ~0 m5 r+ D% _
# D0 P) T# {$ X8 {+ j' B* z& W& O4 M9 A/ D' R9 U
/* configure System module */& b2 ^. }# y4 a9 O
var SysMin = xdc.useModule('xdc.runtime.SysMin'); v& d# C" o5 [4 _
SysMin.bufSize = 0x1000;
. U: I. \5 t$ m- M# m9 WSysMin.flushAtExit = false;: z4 C, E {4 A* k! @( ^; @9 o
3 p* c* ?- q w$ F' U% @7 U
6 _" S& K1 J1 J Z, L7 a$ q/ y# O1 ?var System = xdc.useModule('xdc.runtime.System');! E% ^! }% {3 v1 g y+ C; _$ b
System.SupportProxy = SysMin;( P& `3 k/ s! o _: [( `! u; z
* l9 i; M% J" I
" l, D: J3 L, G& b; k5 b# ^/* configure SysBios to use the lower half of Timer 1 */
; B" o( T- B% K! v6 P+ hvar Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');7 Y7 y; l& u" a
var Clock = xdc.useModule('ti.sysbios.knl.Clock');$ j2 g/ T1 V' ], o
Timer.timerSettings[1].master = true;' n! X) Z) R8 r( g6 l. s& Z2 Q* [
Timer.defaultHalf = Timer.Half_LOWER; A3 q: H: U i1 m0 T
Clock.timerId = 1;
, b4 C6 \% i0 E& L! Q5 a! K$ w
?9 S4 k2 F* X6 y. P) a& v4 [; Y6 ?
1 k: E; K7 w* X5 M; q
|
|