|
|
[color=inherit !important] 我们这边用的你们的开发板,测试双核功能,目前遇到的问题是:. W1 Z' a' |* k8 _/ X) S9 r S
[color=inherit !important]1.ARM端Linux 系统正常进入到文件系统中
2 x& d& I6 o* a4 I i% p$ z0 J[color=inherit !important]
- E( ]1 h0 n# Q" y' \% z& b5 p. j3 T. G
[color=inherit !important]2.DSP端运行基于sysbios的工程,在工程中通过如下设置定时器27 r9 C, \) r- P: H) _, m9 z3 b
[color=inherit !important]& ^" u2 T" M" i! N \0 @
9 D2 ?! P* s; k& XtimerParams.period = 500;' i# \* o. Z. m6 o# ^: _, R& |
timerParams.periodType = Timer_PeriodType_MICROSECS;: w5 H7 }1 o# m$ ]- g [2 T1 b
Timer_create(2, Timer2Proc, &timerParams, &eb);( Q8 _) |( e+ q4 L1 M5 G
" ^1 D9 H: {( C. u% i% j
3 ?" ]0 u+ D/ w; W& z) I
3.然后在定时器Timer2Proc()中断函数中进行翻转GPIO的操作,然后用示波器去看GPIO的波形,发现产生的波形周期为960us(正常应该是1000us);
6 K ]- Y3 {+ n) I1 R5 z* Z产生了定时器定时周期和我预设的周期值不一样。附件是我dsp.cfg文件(只能上传一部分)。请教一下这个问题是什么原因导致的,如何解决,谢谢。
% j+ c/ T1 g9 Y) X# L, d% D$ J) Y0 I7 a a
0 g4 R- L* v5 F
' b/ V2 o x F8 O& v; p/*
. j0 L3 Z7 p1 f' H* Y * ======== Dsp.cfg ========* v* E+ H& A9 l3 f/ m c6 C
*
/ G- ?6 X2 d4 }$ ` */3 ]9 L0 z- g9 t/ N" Q, d+ C: F/ F
# a' t2 @$ l3 x0 t
' R) ?3 Z& l; ]3 g5 _: t/* root of the configuration object model */
8 r/ R; \, C+ L2 I3 _% l- Tvar Program = xdc.useModule('xdc.cfg.Program');
+ ^2 z. @% Q- m; D0 z" E2 j* ?9 g# r& p$ I# f
: y1 w9 A* A7 I% ^. B) v. Z/* application uses the following modules and packages */$ t+ o v- d2 s
xdc.useModule('xdc.runtime.Assert');9 x; S! T' W: |- x: _
xdc.useModule('xdc.runtime.Diags');
' g6 S4 @# f: `/ P8 t1 xxdc.useModule('xdc.runtime.Error');% E, K5 K2 Y8 t& o
xdc.useModule('xdc.runtime.Log');8 X, Q8 j0 }6 q' m; F
xdc.useModule('xdc.runtime.Registry');& t& E( C1 w1 o- F- s4 P ~4 l
& P* F) c2 L+ p5 U2 g
7 |" h( m* j1 x. h) _& G; Fxdc.useModule('ti.sysbios.gates.GateHwi');
( N1 r0 N, `, A" exdc.useModule('ti.sysbios.knl.Semaphore');3 L* ?# d+ l& D J
xdc.useModule('ti.sysbios.knl.Task');; \1 d' @. B/ O7 ?& J r/ h" l
6 e5 m B! s1 J; x9 N" ~- [/ Y- h s& E% N( t- _; o
2 H$ c7 B6 ~. c1 G) F/ m+ q" }
) b y: c5 B3 a5 P1 t- @, ]$ ?
* R7 `5 t$ p7 J8 O I
( _$ A' Q: C( I. j' ^' k/ W
- g$ N% k: G* i3 G* A4 T! lvar BIOS = xdc.useModule('ti.sysbios.BIOS');
, w4 V9 W8 ^6 k$ o& L; TBIOS.libType = BIOS.LibType_NonInstrumented;+ D* O2 o0 z5 D) p' H! z c
/ _9 p3 C/ V% }1 O( Y. `& T7 }0 w( p9 r& D3 [
. m7 J j* b3 ]
xdc.useModule('ti.syslink.ipc.rtos.Syslink');4 T- r, B: ~: r ]4 z5 u
* e4 W7 ^8 |. Z M
J& l2 `% v& B0 H4 D8 X @5 s" l0 a0 F+ O
var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');7 e; Y2 ?2 S! y
var procNameAry = MultiProc.getDeviceProcNames();
( C/ S* D2 {: y) _MultiProc.setConfig("DSP", procNameAry);6 b" h$ G4 `1 ^# G9 G
7 `$ L/ D4 X1 V4 L0 I M
+ L, e5 `4 \# t5 l1 b- B
: m+ [ {- x& S @6 p" R2 C: ivar Ipc = xdc.useModule('ti.sdo.ipc.Ipc');
; |( b" ~2 z5 l( m( g+ r
, ^" g: R1 J" ?8 [( V5 G$ M4 O" Q& M' u* C. E' D
5 K2 w+ A$ E" I7 M" o0 C
Ipc.sr0MemorySetup = false;
8 P& L5 S- L# W* ?1 m' G7 Z6 }4 I1 x+ B' {
7 t- X! q" u0 ^5 b$ f; U* e
; V; i: ~) ?+ n7 [9 z" Q
Ipc.procSync = Ipc.ProcSync_PAIR;
+ ]" j: T* h- Y/ h! R1 r) e: f! B7 q, s# i3 o
/ T+ s. A$ S# N1 m+ V/ p: K/* define host processor */) E0 e, S% _# J/ ^# D8 O/ q
Ipc.hostProcId = MultiProc.getIdMeta("HOST");
; }4 ? Z5 s( j3 C1 Q, S7 C) K. P& a/ i M! S0 V4 @5 \% ]
0 D2 Q- V$ ]# j4 m- M L8 s
/* shared region configuration */3 G. j( p( U T
var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');/ i! d- R* ~6 N" s' P" \3 Y2 b
1 n3 `( [% g! X1 Z& B/ G
{/ Y/ E, |* z3 A. C! Y/* configure SharedRegion #0 (IPC) */( g2 w+ `8 ~" \! n% p
var SR0Mem = Program.cpu.memoryMap["SR_0"];
3 Y2 K) l+ J. B, O1 M, d0 T$ {9 S2 Y# P- K. k, j. p4 w
: k+ `/ e+ T) o G$ Z
SharedRegion.setEntryMeta(0,
' ?8 J; _" q+ s new SharedRegion.Entry({( a$ |' {% k/ p- O
name: "SR0",* a3 i" |2 W- Q% i
base: SR0Mem.base,; Q' J, P6 D. B0 i' D
len: SR0Mem.len,6 x0 n* R" b* V" z3 b" m1 o
ownerProcId: MultiProc.getIdMeta("HOST"),. u1 H0 y3 w/ {: P! H/ M
cacheEnable: false,
3 g( s: g$ a9 z: c3 L, w' U8 L isValid: true
?, ^+ d- J5 d3 I9 `0 P })* e$ [' G! @) m T' s& b g) M
);
8 L% S% b1 | p+ L* v! K8 L% I- g" m9 r h, _
- ?/ H1 k! k& ~. e" o* _6 }
* Y, y# x% m- s3 ~7 ^
: Q7 V4 v; p) n p
L& k( j$ _5 k! NCache = xdc.useModule('ti.sysbios.family.c64p.Cache');
5 [5 I/ L, L b( f: H7 Y# iCache.MAR192_223 = 0x00000008; /* xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10xx */. d2 @$ m5 U Y; b, s) R
# L4 T$ c" H9 ?- @' k5 p/ G! \
6 }/ M; I/ m0 \" K. o8 b; d5 ^# f0 E/ K$ Y1 \; ~* H/ z: `
8 f7 m1 u# U* ?2 L2 o; U# V/*
5 T) G5 Q7 V1 M' e4 ^8 u * ======== Operating System Configuration ========
- M$ E8 ?! Y" M% A, S */
. C: X1 K+ b' [4 G2 v2 @
' E4 [+ O3 r* C) d6 U
7 i7 \) A/ F0 I2 C+ Q9 a/ [0 w/* no rts heap */
. G }" a( R% {/ d( h& @/ iProgram.heap = 0;. }( q/ R6 c, a' m) M
Program.argSize = 100; /* minimum size *// a! E; A3 m) T5 N9 `% g, c5 }
Program.stack = 0x1000;, A K& f& s. V& U7 E9 ]7 o
1 k- q" b/ y+ |& w" ^5 q
: p* y; z3 v9 B, ?$ p. g
/* create a default heap */
2 s- u1 T _* f; Yvar HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');4 }; _. K8 W: F5 i3 A& R
var heapMemParams = new HeapMem.Params();4 _' f, Y' c, Z
heapMemParams.size = 0x4000;. M0 s! M5 R: a6 Z; H4 |
% e6 J& j7 X7 H2 u0 ]
/ n/ t& h: F% \6 R
var Memory = xdc.useModule('xdc.runtime.Memory');
9 B7 i' e' q0 }& d- f/ k) MMemory.defaultHeapInstance = HeapMem.create(heapMemParams);
+ o$ Y o- T' v% X( O
% j. t" G1 n! y4 h1 |8 y/ |1 y
8 l( P" l$ Y* J7 u* Y/* configure System module */9 t3 S: Z' g7 d* J
var SysMin = xdc.useModule('xdc.runtime.SysMin');
% l1 D+ l6 K' J( bSysMin.bufSize = 0x1000;) d- _) ~. `: G h `! y, ^1 E
SysMin.flushAtExit = false; n, B6 D: P2 j# H( ?% d
% _ I; a# c4 ^# I( N; i. f4 Y7 A
8 l+ k7 b) s1 ]: h" H, j7 t6 z
var System = xdc.useModule('xdc.runtime.System');, p. t5 _ I$ Z' r
System.SupportProxy = SysMin;
" `) b; R! o2 c6 a. x1 M& u( o" E. j& X: o2 X
) i x5 r! \% b1 }" L& w! B
/* configure SysBios to use the lower half of Timer 1 */
& e8 a7 q& P, v4 B7 I dvar Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');
! d# `7 O+ b0 U. N8 x/ xvar Clock = xdc.useModule('ti.sysbios.knl.Clock');% u1 Q0 V. m5 D6 k$ R+ ?& P2 V
Timer.timerSettings[1].master = true;
; K, y; R( z @( _( v2 |Timer.defaultHalf = Timer.Half_LOWER;
' Q. B- y; w9 {Clock.timerId = 1;
3 J0 J8 n$ e' Z' o# \$ a
- D8 A) D- a$ @, F/ c# J2 x+ k0 i$ i* o# h( ^( t4 N2 J3 f/ M
* e# Q q! A( F2 ~0 u: Q
: |7 D$ j. ]0 G5 l" m. E, [+ a |
|