嵌入式开发者社区

标题: 双核通信的同时需要DSP核通过UART接口读数据 [打印本页]

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。- k( ~$ f% H2 z2 ]
我是在DSP初始化这不太明白。
4 N$ [& d2 W7 s- h初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。
( m+ L3 ~' e3 r0 f3 F7 {1 h
" ^3 `, M- e/ H! z; h4 y: @: l1 |; B; l, K  U. B: B) ^# ~
首先        PSCInit();//UART0使能; y/ Y( Z5 p! C6 u1 @
void PSCInit(void)
( i" j+ N5 f! q) A: t- P, }{
' p/ S, x4 `& I8 h7 m1 B3 T        // 对相应外设模块的使能也可以在 BootLoader 中完成
% c* z2 t6 B8 U! |0 }    // 使能 UART0 模块
# G7 `3 ~" u3 \3 Z' v/ X7 c    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);
8 X  S. O2 u5 S' d8 I+ L( K$ x}- h9 q  f$ }5 ?+ j1 `

/ o9 o8 l2 a% _  D, y8 j+ L( Q  {% M9 b- P' r
然后是 双核通信的初始化           AppInit();
7 a! t; W+ l+ V6 ~void AppInit(void)
1 T( y" }5 o! j' l{7 s+ U! \6 w) B9 P( p8 V
    /* Structure to initialize IPC (see Ipc.h for definitions) */
7 a2 [  d0 u% C3 n7 |    struct IPC_cfg ipcCfg = {- a! t9 d: w/ h: l: O( N. I( r
            IPC_DSP0,             /* local processor Id */) g$ @/ Z, {& G. C! H
            IPC_ARM_HOST,         /* remote processor Id */9 T; b7 ~3 W& s6 h9 f1 W/ h% M" g: z8 D
            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */! Z7 h$ a# d0 y- v& {+ _7 l) V8 Q
            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */7 C# x3 T, C8 U2 X- Y. ^
            NUM_MAX_EVENT,        /* maximum number of events to be created */8 t* x( J! [3 f! D
            &ipcPvMemDsp,         /* local side private IPC memory */
0 A" {0 r  D/ v5 D7 @, [, L5 I            &ipcPvMemArm          /* remote side private IPC memory */0 H; n6 y4 T! f2 q8 Z) E7 D
    };0 w" b- @6 U1 k+ A7 z" @
    IntDSPINTCInit();
3 s* T  Q2 q+ a5 y- u' S8 n, O    IPC_init(&ipcCfg);* J+ g9 t: b8 @4 m
    IPC_intRegister(C674X_MASK_INT5);
. M1 Q0 `/ [' |: f6 i( \& y2 F2 W    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));4 q' |& C9 D- R, g

* ]) a; O0 L2 j) E    /*  Enabling interrupts for DSP C674x CPU */
8 \. K! n1 t; b    IntGlobalEnable();        /* Enable C674x global interrupt */
1 G* j* f0 S5 q! b- q! `    iAssert (Notify_start()); /* This will enable IPC interrupt */
9 w' E4 V3 H, s+ o9 A. e}
- U5 P3 a6 h5 o, u0 s& p

  i) l$ l; L5 m# D7 p% o/ I. P然后是  
1 a3 }, V7 w( t" o3 d9 `# A3 L  M6 Z            // UART 初始化5 H  h6 r# {7 c, N% h
            UARTInit();1 ]5 e( c1 C* E
6 [" O: {" \5 @3 s& p1 C! O
            // UART 中断初始化/ f: {8 Q5 q- U0 X7 K2 L9 D9 L
            UARTInterruptInit();9 |& h* r/ o6 j' Z

# K) w# P% a8 h, |9 X" @( ]' ^/ ?" V" ^7 M, \
void UARTInit(void)8 r& l5 `1 e, K( T
{
1 d0 X8 v1 I0 L4 [1 f        // 配置 UART0 参数
* ]' L) Q/ {+ T. z1 q        // 波特率 115200 数据位 8 停止位 1 无校验位. o& U0 Z- x( ^8 {0 R
    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,
% }- L. S% Q6 Z% S                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);
- ~" Y: v0 L2 u        // 使能 UART0
5 [7 ]4 ?: C$ n% m9 m- U8 x        UARTEnable(SOC_UART_0_REGS);
6 ?- [( ~- o8 ~" Q5 S) K, M7 ~. A1 d2 b: o: O9 r% H
    // 使能接收 / 发送 FIFO
2 R4 [* r- [/ X6 e8 a4 `//    UARTFIFOEnable(SOC_UART_0_REGS);; R$ I# m2 D1 E
5 h! M. O( q$ F2 m8 r/ @& P9 l# U
        UARTFIFODisable(SOC_UART_0_REGS);' u0 ]" o# u2 G. a& h9 T

6 E: L/ J8 ^7 v    // 设置 FIFO 级别     接收FIFO的级别
5 {9 v' |8 u) H) s6 l- p- X//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);% @* W) {: P! o* G5 E" E
}* g+ z" d; x, ^' j3 G' o4 Z. E
2 A! ~7 m9 U6 U! K( X$ g

: O  R* V" m/ n5 }+ Gvoid UARTInterruptInit(void)  p0 ^  U! X+ E( P
{
0 T; Y. u$ `  L1 w4 v1 A        IntRegister(C674X_MASK_INT4, UARTIsr);4 P: T- l) z, E! q: z; O
        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);
9 g5 ?  y: O9 |2 w- K" t- e        IntEnable(C674X_MASK_INT4);
( C/ S5 y" e2 r( h+ v# w. O' M4 P; k* W( j* r( x
        // 使能中断. v, r/ M5 C7 g
        unsigned int intFlags = 0;
! L$ b* \# ]- b6 }8 [+ M+ d    intFlags |= (UART_INT_LINE_STAT  |  \; j  n' f+ R. p
                 UART_INT_TX_EMPTY |    \
+ @: d% [$ P% a# X( e- e7 v                 UART_INT_RXDATA_CTI);
5 i1 `2 w6 Q! s0 _    UARTIntEnable(SOC_UART_0_REGS, intFlags);, M1 U: X) y0 K( S9 _* _
}4 \: ~' L% f' {! }2 z" c, x

1 M* H2 T; k; \4 C% U/ u$ C7 i) @" F9 [1 Y" _
void UARTIsr()
$ b  X6 e; Z, z6 \% J. G3 T& _{7 G. W& c- R- }+ W3 K, w
    static unsigned int length = sizeof(txArray);+ {5 ?3 Y0 j1 N0 J3 `; P
    static unsigned int count = 0;" Y! u% ^$ k4 l3 e+ R1 h
    unsigned int int_id = 0;
6 _) X9 M7 j, I$ i; W/ ~" K1 I6 u) D" Y* [' ?( B

8 d6 y4 X$ V& d3 q# O* x2 w% h) t5 Z
, Z( G# m. V/ u& B" d$ b    // 确定中断源
" k- X" I' Q1 l) h8 _9 A+ ~    int_id = UARTIntStatus(SOC_UART_0_REGS);
. c3 h4 {/ l2 B$ N& ~# P% Q' m1 \! j# v6 o" U+ M
    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。. E6 ?" g: E9 q( ]+ ~% V

! I- ]1 h1 `9 Z* b$ Q* c' y4 k9 [2 U! E5 Q4 E/ z- P& D5 J
    // 清除 UART2 系统中断, H4 W0 {( a. c8 P# v4 m4 w# V
    IntEventClear(SYS_INT_UART0_INT);  i* Z8 ~( C+ m. K% b$ s& S. R/ g% @

8 x0 X' m! G5 w0 L) r: b    // 发送中断
. [! u2 e+ E  F7 ~' Q; }. I    if(UART_INTID_TX_EMPTY == int_id)
/ q6 \2 g0 h- W    {
3 c0 y! p" c4 I        if(0 < length)2 a0 @- N; k' O* z/ l0 H, o
        {/ w+ {! X. [+ G& v, |; \
            // 写一个字节到 THR3 \& X+ F7 `9 w1 `, N- n
            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);
$ u' C, f: [( d2 r            length--;
! q7 R" b* s; Y( u. Y9 L            count++;
  f- A3 p8 [/ f4 Z  H% g& x; P        }+ ^- [2 z3 ?3 r  |( w- r# B# g* S
        if(0 == length)
3 Y- F+ ^# U% n( S        {
- a9 o8 p: \- L" N            // 禁用发送中断7 o9 T3 G# F( N, ]2 W% T. X! U
            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);
/ c* P1 ~% K5 l3 u4 c        }
0 G! |. w  g, r* U     }
# W. M+ N( g( O4 u3 i6 ]( F
4 ~# H! O) H1 c' s7 o% p5 \5 S7 ]    // 接收中断/ ^; d" P3 I* p+ O5 |9 a0 K! y2 G
    if(UART_INTID_RX_DATA == int_id)5 i1 D: t( r7 y8 q' e8 m
    {" Q" h4 m4 F. o. _1 v! B) x' c( [
        if(status_a0==0)
) e. Z0 h# C  ^* C# `* T" z' M3 ~        {
% V4 {$ j1 N8 r                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
0 S1 U8 x* Q" ?7 C# w  ?6 s                if(a[0]=='#')
% ?3 L9 e, y7 {                {
" E- E% p7 [( a                        status_a0=0x01;3 B$ _! @/ b3 s: n
                        status_a1=0x01;
; K! v( P: j' |- \3 L7 ^                }' x5 C7 X4 V& K, r& t
        }
2 G' x% z) O, M/ B' g        if(status_a1==0x01)
% Q" h+ s2 |: y  g  Q' s- o+ v        {
1 L/ u/ B3 R$ A/ n- n  Q* ~/ n                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);" w% j: _7 ^; r/ X
                if(a[1]=='R')3 P2 }, [, n% B( K4 Q: ]
                {
7 ?0 d0 `; k, q7 G1 ]                        status_a1=0;* W/ ]8 S/ G$ g( E5 |
                        status_a2=0x01;7 r" s% d2 X+ [0 W. b1 _9 E+ K
                }
' F' |; ^/ E2 H1 k* K0 l        }
4 Y: c' q5 \) }' {  q        if(status_a2==0x01)- ]1 L5 h" s) A9 x) N
        {
8 H+ T! A5 v- {; v                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);7 _3 u+ Q* U3 |; x6 @+ ?+ Q, M
                if(a[2]=='A')2 [; ?( q+ V9 l  b5 W
                {+ i- J, \1 a5 X8 e3 N2 ?; I- Y5 j
                        status_a2=0;3 x0 T, z- M5 {4 g
                        status_a3=0x01;
4 f6 i+ I1 K) T4 ^                }% f" @" n& k, P/ P  z2 J& H# \
        }
# O% y# q9 k& H: l/ {        if(status_a3==0x01)
/ q! C! r7 j: I2 [2 J3 x, ]        {  ^5 u$ G. v& b- x* t8 S& I9 A' t/ Y
                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
& I( [0 m9 Z1 n! s                if(a[3]=='N'); u/ j" M& H' Z# K6 \
                {. H- w7 @- r0 w+ H
                        status_a3=0;
( I$ {& b5 v2 a) e. S                        status_a4=0x01;- e- G( w' X( I3 k' u
                }! H% L2 b% V& Z& _
        }
( o& \: s% n$ h" U0 \        if(status_a4==0x01)
6 U0 S6 d3 {. }8 z        {& E; M* {0 S5 V! H% B1 k% |6 d
                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
( M- |5 X/ L# c, W  d3 M! R                if(a[4]=='G')& q8 E: e- v. v
                {
, B) G# d7 M* k+ C) |                        status_a4=0;
% O% r$ M) T/ s: k- D                        status_a5=0x01;
" e- ~; M( }' e. S( L                }. g9 a0 J+ y8 X+ r) H: n! Q
        }
& p6 q( T" ]" u( \        if(status_a5==0x01)
, R6 R% }- I+ C        {8 w% x) t+ ^6 ]7 |0 V
                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);3 T$ G' I! k) s# F& B
                if(a[5]=='E'): O1 Q! R' F1 d
                {
% Y* d3 L! K& c' @6 K/ l: [, E" s                        status_a5=0;
4 Q1 r$ H8 _# w' J8 k                        status_OK=0x01;. g. a, U9 I9 U
                }& n4 C7 _6 B2 v# q5 v& X* `2 Z
        }
* m7 C9 X" g0 i+ j" l# h            if(status_OK==0x01)/ L( J; f$ G( I4 T
        {
2 @% x- [% @4 w7 a4 }4 ]$ v                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);  Q' y3 m# g  L* o
                        lengthrx++;- L. w% `2 H1 {$ I$ C' X* k9 i
                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值)* E) p' P8 j% G0 _$ c- i4 y
                        {
4 o& |; s$ l# F2 \+ c4 ?4 t( B/ d                                RecState=0x01;
8 q! K2 i0 d9 J, L1 `                        }
) i; [9 Z+ p3 h2 Y) S/ T0 E         }' o+ r3 i7 j! M" R4 l0 p
6 r! H, Z; h! C+ A
     }' p* W2 [- S; {, ^; N- q

: P: o$ g4 _; M4 V  P    // 接收错误
6 |/ [6 }3 \3 X. O6 i    if(UART_INTID_RX_LINE_STAT == int_id). M: t$ K4 s6 n0 D$ E4 `
    {1 P; n, m! }# E8 p2 {+ f
        while(UARTRxErrorGet(SOC_UART_0_REGS))& j9 C; i! ^8 k  r0 L8 M
        {! w( O5 u) s- n0 n6 x3 y' f
            // 从 RBR 读一个字节/ F/ P- R; ], _1 h" L
            UARTCharGetNonBlocking(SOC_UART_0_REGS);! o0 [' o% F- t1 e& @/ U
        }
3 ^* W: A( N6 l4 |* @& _    }
' R6 l2 }+ M, ^/ T# L4 L( @8 }" o8 l8 I4 ]( B% T1 w+ n8 O, S
    return;
& `9 _* U- E: p0 G8 \, t3 Q& M}# a! N6 k5 R$ L" v( R

( C1 b) L6 r  o7 l. |0 M
/ {$ |3 ~9 L5 S% E# E

" Y  I+ |1 b; B) G- p% U* J
作者: Jackindata    时间: 2016-8-17 11:13
hi,1 H3 B* E( v, {3 A& h3 a
" \$ {- ?; w! w' A8 J' t
UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。2 m: w, V# [5 h. E

& j8 M7 k2 K! I0 A要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:13
8 f( R. H: x* ~+ j0 C  Phi,
0 r& _. e" z% Y
5 I$ E5 ~0 W" UUART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...

9 c9 I7 P2 Q5 z: s4 c3 Q8 N' A0 Bvoid main (void)7 U5 ~* ]- N+ m7 `/ S( L
{
# h5 z! A5 C9 U        int i,j;6 j: s2 Q; G+ f7 a$ V! U
    char *str_buf;' L0 b7 H: c, B! L
    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];
/ \# v8 M; Z( ~9 a        double est_L_b_=0;
! L- T- w1 O+ C$ j        double est_lambda_b_=0;* O/ {' Y9 V: @7 I# F. H
        double eul_[3][1]={0};
) J9 A! O* F* Y" H8 M$ \        double est_v_eb_e_[3][1]={0};# j0 [" F- {9 Y+ Y3 l
        double est_C_b_e_[3][3]={0};
. f0 ]- f8 g7 ?) F9 T; F1 z    char *qm;. @  D% W- O3 ~. H+ |
    char rec[70];% n9 e; Y2 `1 a) P8 i: O
        double L_b=0;
+ ]! b' r" Y* z& _- W' ^: N        double lambda_b=0;
, m/ @% w- ?/ B2 I# E, H        double h_b=0;
: \1 A/ q) s! v7 g0 J1 ^6 S        double rate;; I; y: o* u5 |( v
9 ^8 j! j) m! _2 v5 F/ X
) H$ X0 `& Y. ]1 q, A0 ^
        // 外设使能配置& J- |) b- `* i% E; U+ n! T
        PSCInit();
8 W& P$ k, \) `0 T, S) _/ _$ H1 N% E/ S6 [$ K" T  M! Z3 b
        AppInit();
/ y# W5 U* l: F3 ?1 I0 O& t& e% i9 ]
        // UART 初始化; S6 ?1 x8 r+ j' p) q
        UARTInit();8 _7 e0 a7 W2 b# H& \4 m+ }% ]7 A9 z: u
) ~. p" ?3 W+ I- |8 J7 A
        // UART 中断初始化
& a2 j& d9 O8 ?) b7 A        UARTInterruptInit();9 A' {9 x5 n3 z: N0 ~( Q/ U8 S

+ F2 C/ V3 n/ B6 u. ^6 L5 G    evtRcvd = 0;; s8 R; Y1 O/ L/ ?. ?% W/ g
    RecState=0;
# O: ~% r* e* q; {2 A- D    /* Initialize */8 y' n4 O% i7 G" o2 p1 l
5 ]5 y, K9 N( S! g
    printf("DSP subsystem ready\n");
" z# x8 x1 f# |  O- T0 f
1 e& r# i7 B) Z( ~1 v( q4 h2 Y    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));
& A% I5 a# p4 g' K  m4 _0 `
9 x% J: M: u; `. i. P! ]* ^% b" hfor(;;)
3 K8 j9 ]4 G, A6 p{
) Y! A7 ?8 s6 ]: [6 L: Y        if((RecState&0x01)!=0)
" t3 x1 C: {6 n, ?" P        {
: m. _" C- o6 @2 E" n                printf("liuzhenxing\n");
, P- |, Y: q0 v8 T, I$ L. t        }
/ O* p+ K. ^! K; m- V  O        else3 z2 v2 W6 U' q. D
        {
& ~2 n1 x' t3 ^       wait_event();
/ w- i6 p2 N' A9 g! p- ~
, E- t2 C+ ?( P           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针* R: O4 i* b, k7 c: @/ z

4 o, X% K- B4 T7 A           for(i=0;i<60;i++)
9 J) y4 ?$ w0 G! R           {
, X% g7 R5 C' x2 S# c9 w2 S                    rec=*qm;
  U5 t( L: H& Q; [! _                    qm++;
4 y/ g8 v; l7 d5 f           }
* F7 W( a3 i0 i" i+ L5 I* V) f5 ~8 M9 m2 t/ @4 M/ F! N* u
           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);
$ k$ F/ b  C; W1 ?- e
. ~! w4 j2 z2 u1 |% G. V           L_b=L_b_receive_double;
; [- a4 `/ l- k8 X( G0 ]           lambda_b=lambda_b_receive_double;4 R+ ?* i0 O6 k) I9 `3 Q
           h_b=h_b_receive_double;
/ G9 m- L0 [8 T; [- t           for(i=0;i<3;i++)
3 }; h5 q5 S; [+ K                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];
+ y( P7 P' j: S! J% j( D/ }5 Z           for(i=0;i<3;i++): h; g" L$ g" K  T" `
                    for(j=0;j<3;j++)/ v5 L! D+ \. B8 t5 O% b  A. y
                 est_C_b_e_[j]=est_C_b_e_receive_double[j];
- ?' i: i) f( g& O  A9 S: T6 B9 y0 o$ E$ W0 t
                printf("L=%lf\n",L_b);
/ c. \- ?* P+ P# F; I# U  U; y                printf("lambda=%lf\n",lambda_b);
! w6 Y- |+ G9 m+ D                printf("h=%lf\n",h_b);
6 H( N2 h! }* z5 i5 G4 O) k4 G) [0 e5 H' o7 D9 y' q
                for (i=0;i<3;i++)
) r" m1 ]& a5 A+ d                        printf("%lf\n",est_v_eb_e_[0]);$ Y9 V2 Q. O2 l5 L
                rate=sqrt(est_v_eb_e_[0][0]*est_v_eb_e_[0][0]+est_v_eb_e_[1][0]*est_v_eb_e_[1][0]+est_v_eb_e_[2][0]*est_v_eb_e_[2][0]);
/ c, M+ v, ~! u4 C/ I                printf("rate=%lf\n",rate);
3 ^0 e- Y, w) g, R4 p% @* Y- [* G" Z3 @8 T, y3 G
                CTM_to_Euler(est_C_b_e_,eul_);( v& ^' k' T( ^$ U, f$ C
                for (i=0;i<3;i++)
/ }& a6 Z* [3 }                        printf("%lf\n",eul_[0]);8 V2 N) z* T) h' U. f" k# w
                printf("end************************\n\n\n");
# p) `1 O3 `2 _  Z
; y0 H7 Z! _' @* ~  }; V4 W                /**********************************************************************/2 Q- _  w2 U9 h$ L  {

! w. |6 ?; r# k            char flag[4];5 M* {6 Z8 q3 S+ O4 V* G+ Y- N
- W. `8 Y0 k4 I: S6 m- J. n# Z( n
            flag[3]=0x00;
: P/ T9 [0 F$ S/ f            flag[2]=0x00;
5 R9 q) L/ x1 |% }" u            flag[1]=0x00;1 a7 ^/ ?1 G: t4 X$ g
            flag[0]=0x01;
1 j! L8 N( c( p4 S' ?5 J
$ {7 }2 q& M% o9 V% K    /* Allocate I/O buffer and init with string */5 P+ c7 ^* m& {" Z
    str_buf = (char *) malloc(80);8 @" p2 W+ O3 B0 s% W
    str_buf =flag;7 P5 {6 T5 j, ~, b' R* C9 G0 t0 F

$ D1 e$ p: P' T6 |    /* Send buffer to remote CPU */8 L  i& A$ O/ R
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));+ s( S& ]3 h' M2 n. @! `  y4 W
4 l* w2 B  O6 K1 N" y5 o
    printf((char *) myPayload);" P  j! }5 b! H( v. L$ T
        }" z# I% M8 l( [! @% |
}/ X7 M8 U( v% y
3 r1 o, B8 N8 V! D: s! J$ s
    WAIT_HERE;2 ]7 S& X, v" c8 w
}$ G8 X# @, |2 ~7 P

作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:
) C  B& P/ Z/ u# ]" g' }8 T我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。* _8 S% C. Y/ }- q( I/ d) O# s
然后我把双核通信的初始化屏蔽掉,UART0可以正常接收到数据。
作者: star_niubi    时间: 2016-8-17 11:40
我现在就是需要接收数据,基本上不用发送数据,所以不用管发送数据的。
作者: Jackindata    时间: 2016-8-17 11:54
syslink 的初始化是否成功,notify 通信是否正常了?
作者: star_niubi    时间: 2016-8-17 11:57
Jackindata 发表于 2016-8-17 11:54
: f) `' e& q* h3 f/ m; s4 l: Lsyslink 的初始化是否成功,notify 通信是否正常了?

$ T; K0 `( u6 X: I- @' z4 q双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:54* R! `: d; v0 B, ]
syslink 的初始化是否成功,notify 通信是否正常了?
0 B- R3 y% [& ?
我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:20
6 x; H% Y1 u  Z, e, n, U4 w7 @+ h我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程

# m* W2 n- J1 F: ?. l/ C( H2 K  V建议查看 UART0 及 DSP 中断控制器中断相关寄存器值 是否正确
作者: star_niubi    时间: 2016-8-21 14:56
能否说的具体一点,就是双核通信的都修改了哪些寄存器的值,这边双核裸机通信的资料很少。




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4