|
|
[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( d7 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( p9 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 _' s3 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
|
|