|
[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$ L4 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 A6 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, Z6 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 |
|