|
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:
% i ^; |6 @2 @! x/ q3 U3 o8 ~[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中
3 j- p! n: C) y& c[color=inherit !important]
. ^& g- J% g( k$ v
) B/ H4 {6 N! ~/ P! J[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器2( ?! g/ ]9 ^- |9 s- e* O
[color=inherit !important]) Q) d: h7 A/ W- i
0 U2 r* s2 `; c( o3 ?% J! c
timerParams.period = 500;: J, i0 ~: m- C: |4 O q
timerParams.periodType = Timer_PeriodType_MICROSECS;
5 z" A/ I/ S; G6 ETimer_create(2, Timer2Proc, &timerParams, &eb);
9 N$ j9 k4 f3 m3 T6 n8 Z5 F
t$ q: ]$ Z2 l, J& q; c7 X% R% ?/ Z! |0 A
3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);5 d' a8 H: Z" E& j5 V y/ W
产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。" s+ c8 V7 V! g3 d5 [; X
1 [( f# l1 |3 M; h, r: `. }' J; R9 w7 u
! v, C. b" Q& S8 S) |" L1 x
' P5 v: _! }" c9 `7 ?) t9 o9 |& l/*
0 f, I3 m$ u' N- t4 J * ======== Dsp.cfg ========
- @) g1 B! S: p *
% e. s7 r2 U* h; { */
0 f$ \, d/ i& N, |7 K
|9 l8 v) P: {+ {* S% v% r. ?: | _; y' Q
/* root of the configuration object model */
) \+ o# u6 X0 S9 Svar Program = xdc.useModule('xdc.cfg.Program');: _; U! C3 G& P* C0 f+ h
& Y3 l8 M5 u* y
/ k7 m9 `0 R; d" V# _
/* application uses the following modules and packages */
( N1 o% c! ]- q( Ixdc.useModule('xdc.runtime.Assert');7 H: m o6 i( y; R
xdc.useModule('xdc.runtime.Diags');
) B1 w2 E6 Z( T- [- Zxdc.useModule('xdc.runtime.Error');8 p' b8 w/ _5 @. b F; b
xdc.useModule('xdc.runtime.Log');
( k- V; U; ^/ _xdc.useModule('xdc.runtime.Registry');5 w2 |8 i4 C U4 n/ E( H" m8 z
- H* f5 G: A3 f* `, L
; z: j; `% f+ M0 L0 N
xdc.useModule('ti.sysbios.gates.GateHwi');
/ n) @9 }5 _* I* Oxdc.useModule('ti.sysbios.knl.Semaphore');
% s2 W2 h# |/ _xdc.useModule('ti.sysbios.knl.Task');
( ~" g8 a0 h. X. F* X/ D2 i: c& i: Q- c+ S
3 O5 W' p- |; ]* f: D
, w7 R0 |7 A% x5 S. N X) v
! }+ r; O: m- z4 _1 p3 |
W3 d$ ?% B" G$ E) F# l; `% w5 T7 ~; o
7 @, `6 {- k6 q! V- t- ?var BIOS = xdc.useModule('ti.sysbios.BIOS');
; U- Y/ [: V, O; M% R1 NBIOS.libType = BIOS.LibType_NonInstrumented;
- |" _; E2 |) I" n3 ~! D% {* n* e. ^6 ~
0 W5 D6 i" V1 Q: A' B9 U: g
( h% F4 A! j1 ^/ p% \) Pxdc.useModule('ti.syslink.ipc.rtos.Syslink');
2 u' O+ x5 S0 Y3 L9 |
m$ J- q; @4 Z4 c2 l. W$ {
! {" {5 h: `, e0 Z+ G2 k; H8 [9 C3 x0 S& i* w. G3 \
var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');- Y" c7 }5 X0 r( e! R
var procNameAry = MultiProc.getDeviceProcNames();5 W; j9 @! h4 |) o
MultiProc.setConfig("DSP", procNameAry);
8 a2 M* Q: z- t$ |4 V' |
# [$ w2 \* V) m+ \! h) @- l' H; | R- K
8 v `. {: w) E0 D9 \var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');
) x- Y7 {. ^9 t) A7 @5 C
, K; K' Q4 v$ t" Y9 d4 y7 ^8 o# m) J, `5 w$ q7 k
! W, ^ V* q' FIpc.sr0MemorySetup = false;
K+ B! B* W( Q8 B8 K5 @! w, n+ L0 p
: [6 X [ x' ^" F3 c( Q8 Q) x0 R) o( z" I% y
Ipc.procSync = Ipc.ProcSync_PAIR;3 C' q7 h, M6 Z6 ]/ s
( h5 o) v. m6 J
8 r9 E9 y& q& u
/* define host processor */! S' v5 Y, ]6 Z$ n
Ipc.hostProcId = MultiProc.getIdMeta("HOST");
% I5 R; T9 K5 \
& u: f$ V9 d( d
8 T+ ^0 U& H0 q, S4 {# c/ q8 W/* shared region configuration */8 `! ~' F; c8 k
var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');. P. U& p8 z0 }3 U) j
# c: E8 i* O( h% ]# L# [7 C# V
8 o+ C; I3 K6 {4 ^3 [' w/* configure SharedRegion #0 (IPC) */
' {7 q4 ?% c: e3 e1 Z6 yvar SR0Mem = Program.cpu.memoryMap["SR_0"];% ]; y; ?, n5 `0 C$ b
1 S3 P, N$ q: p# w
|* q7 z3 C: cSharedRegion.setEntryMeta(0,
: s1 ^% T7 {) }0 O ~2 I* Z9 _& n new SharedRegion.Entry({ {' a5 H* U# Z# {
name: "SR0",
1 S, Q3 o* ~7 I) h0 c base: SR0Mem.base,$ D8 q9 y5 X2 W! T) z7 v
len: SR0Mem.len,: ?" c5 G8 S2 i7 m( ?
ownerProcId: MultiProc.getIdMeta("HOST")," I) u6 i1 J1 [5 T5 X( R6 L2 d6 w3 a
cacheEnable: false,
% U; F, ~& h; X1 z& S, b isValid: true& _1 s0 V7 G) n$ c3 F
})
! E0 w. N6 X+ ^' Q" c, D0 B);
# m5 r9 K" }4 k% o' {2 M. l0 H- v6 V" s0 Z
. i; j4 ]& `8 @7 s) d2 g, Y7 Z8 c
1 ^1 _6 k/ H+ h6 \( Y+ M% C
. d. t E& O* \0 m
Cache = xdc.useModule('ti.sysbios.family.c64p.Cache');# D: w, s) C( a2 v; D! a
Cache.MAR192_223 = 0x00000008; /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */
; E6 u3 A( |$ h0 H+ E* \3 j! L' g1 a
5 f0 z# O3 f* P- z M
! K6 B! X9 B6 v. V8 H
3 |# ?8 R1 T/ D" d/*
6 _; ]; A5 e) P- g" N0 c * ======== Operating System Configuration ========
) \2 w, q2 g( d( W6 `) g */
7 n4 @* @4 n6 @
3 a) T/ O& Y$ U ?9 y% n
, B3 J. v7 i- T6 J# p' [/* no rts heap */4 y: L; j O0 F. y8 e7 T
Program.heap = 0;1 e* z: \6 ]9 h+ F0 k4 @( y8 j; }
Program.argSize = 100; /* minimum size */; w5 `5 L; N' J0 |& Y
Program.stack = 0x1000;
! w; J$ d. N$ Q" T1 F% w+ _9 w# C/ E& T6 W* W0 |+ o3 \
" B0 e6 A3 _' V/ q2 t
/* create a default heap */: L* f9 E6 P4 i7 ~' D
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');5 P8 f7 f5 l0 N. U+ B8 u
var heapMemParams = new HeapMem.Params();
1 A' h5 w6 c1 R8 d( G9 xheapMemParams.size = 0x4000;
/ k- T% u! Z+ O9 F. s* a, U9 O4 T( F6 k& L! l' o
' J9 `! W: `/ [
var Memory = xdc.useModule('xdc.runtime.Memory');! h/ b) M) W' [7 b7 f
Memory.defaultHeapInstance = HeapMem.create(heapMemParams);
/ L2 P9 v& Y! I2 O ~# A4 T" `$ a- o$ ]4 D# x
u/ n v7 i t& a- g! P( ~
/* configure System module */
! V1 O+ T. s: N( Kvar SysMin = xdc.useModule('xdc.runtime.SysMin');. P2 [2 |& G' w% _* a& X
SysMin.bufSize = 0x1000;
& S, l) M! R2 MSysMin.flushAtExit = false;: N: d0 H$ N9 M S& O! S9 j1 g: u
6 |$ J" M$ G+ l& J1 s1 E/ @5 a% Z5 ?: G1 O/ n9 o
var System = xdc.useModule('xdc.runtime.System');
7 S6 u8 X7 n6 f( E6 z- q& VSystem.SupportProxy = SysMin;0 U( U3 M6 J( s+ g6 g. C( q
* j3 V$ K" M7 p
9 H0 V4 J" I m4 I% ?& [/ j
/* configure SysBios to use the lower half of Timer 1 */2 I8 e+ g& A# B/ H
var Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');
. B$ v! d0 o8 _ I) Hvar Clock = xdc.useModule('ti.sysbios.knl.Clock');
3 x. M5 u1 }% | NTimer.timerSettings[1].master = true;
; \; U6 l6 _! G k3 k. D$ [Timer.defaultHalf = Timer.Half_LOWER;! }7 m7 @& M& i/ Z2 I3 K
Clock.timerId = 1;
1 m3 Q1 r. k& h' R" k8 i' A6 @* ]/ l& _: v
V' H B$ n2 a8 o' d# b; x% T) z+ a; m( q8 D4 T
2 x2 Z' ?4 Y$ e4 ^- L8 z |
|