嵌入式开发者社区

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

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。0 F( e, D/ t; ~5 \8 G7 q
我是在DSP初始化这不太明白。
& C' b. @% C% A+ X* C6 Q初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。' B" z3 [1 }: ~7 H
3 p  }2 h4 X8 ?1 X

5 q' f9 r$ f5 Q7 q7 z$ U; t: J! Q首先        PSCInit();//UART0使能) `6 b- T, B- F; d4 l
void PSCInit(void)2 X' `( ]' E3 B. G4 k5 d3 C1 U/ V
{
- T; P5 \! d1 P1 W0 _        // 对相应外设模块的使能也可以在 BootLoader 中完成% X; S; j' \( Y, z, [
    // 使能 UART0 模块
  k/ Y1 N2 Q! x; j    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);
/ M+ ~& c" P" d) w8 S- T+ H}
  J4 M! S+ h8 A

# G9 S# q: j6 M+ u+ R
( ?0 z2 b0 o3 W& D2 z然后是 双核通信的初始化           AppInit();
3 j' k, B& {5 A2 R  l4 J, F4 \void AppInit(void)( i+ x$ ^$ {  U3 ~: y4 Z
{1 r7 k# m. Q( j) B( z0 R
    /* Structure to initialize IPC (see Ipc.h for definitions) */. }! }8 Y3 E8 t! y% k6 @  P
    struct IPC_cfg ipcCfg = {
% u7 J* |/ z, \9 V/ Z8 l            IPC_DSP0,             /* local processor Id */
! [: c" t. m. w2 c6 g            IPC_ARM_HOST,         /* remote processor Id */
9 V  I9 Z- C; j/ d( d1 ~0 |            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */
5 j  L" |. \4 E            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */
5 T2 K+ B& O! e0 t" C; s( Z- _  s2 O            NUM_MAX_EVENT,        /* maximum number of events to be created */
- |4 V4 h7 w: i( J0 d/ {, v: f' f) a            &ipcPvMemDsp,         /* local side private IPC memory */
& j% y( H! A) ~( {1 V6 X2 W0 u            &ipcPvMemArm          /* remote side private IPC memory */
( s4 H3 w1 a. Q: e6 L) y    };
  I5 ^" r, ^0 U/ a4 z    IntDSPINTCInit();
, C: f* q( }! D    IPC_init(&ipcCfg);
4 X% X( O3 K' v    IPC_intRegister(C674X_MASK_INT5);
! F1 k, Z, M6 Z, X. U    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));: V$ l! x. K& B# l

8 W1 A8 f  \2 }# Y) e$ ^0 {    /*  Enabling interrupts for DSP C674x CPU */
; j& k4 H/ w0 K7 o    IntGlobalEnable();        /* Enable C674x global interrupt */
7 M# U8 B# D; |6 \. ~/ r7 P& N    iAssert (Notify_start()); /* This will enable IPC interrupt */
( ]0 H  A+ ?) _' i& S8 K3 l}) d4 k' K3 N0 C0 L" _
& _) T. I. c7 ^9 S/ S
然后是  
% [$ O* Y' C. v1 A            // UART 初始化9 |/ {( X" l: `( M
            UARTInit();
% \& [" C* E8 ~% Y* }4 f! J0 q, c& W& f5 W- C3 z% G" p; W
            // UART 中断初始化
# i, S( @3 [3 w            UARTInterruptInit();
7 [, O' [0 ^" h
. Y, B% U: C3 Q% R4 z0 \1 x! O0 ?6 B

* ^/ E7 e2 w5 q+ l2 q! y4 O% \- _void UARTInit(void)' R6 V" S9 A/ P+ [. G
{; M! Y, L6 c& J. a( _$ F8 s5 [3 B
        // 配置 UART0 参数( z  r) J& i  V: S
        // 波特率 115200 数据位 8 停止位 1 无校验位% T7 n, S7 M4 x
    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,5 M- A4 [2 S* F
                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);
: K2 s' X. M* C! f. d1 _0 v        // 使能 UART0
' z" ^$ f$ M2 ?* h% n        UARTEnable(SOC_UART_0_REGS);+ ?: _/ Y1 j3 X% p; V; q
, D. g# B: ~: {) U! O+ H7 J2 B
    // 使能接收 / 发送 FIFO+ {' g7 z1 Y! O+ U4 Q
//    UARTFIFOEnable(SOC_UART_0_REGS);
: g0 N+ c% x9 O% R4 D# V  y9 `
/ a- |) u2 G$ n! D) s' K        UARTFIFODisable(SOC_UART_0_REGS);
) K: K* n# f) j% S* S' ^' v
' _$ h& B. C3 T) n    // 设置 FIFO 级别     接收FIFO的级别. h3 M3 |9 _. n' L4 }
//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);/ c& d. h( X! i. j  u; ]
}
# \% q* b8 ?; s3 x' s2 l
  h- a! K$ h$ u. m
/ \" a2 ^! b  I* H
void UARTInterruptInit(void)! C$ |3 r; Y$ [) U2 Q
{6 n  S, R! Y/ c* H( _% a
        IntRegister(C674X_MASK_INT4, UARTIsr);  D9 m# F2 v& w
        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);
9 L) V% \5 z: q9 E* Q7 c: F' g        IntEnable(C674X_MASK_INT4);. o7 ?% z4 O% \
* n- p3 ]! T5 B- t
        // 使能中断; B6 p5 S5 n! Q" r; W' G3 F
        unsigned int intFlags = 0;
2 {* G" t( b+ D4 I7 ^. `) e! r    intFlags |= (UART_INT_LINE_STAT  |  \
/ V3 {9 x% U/ n: h                 UART_INT_TX_EMPTY |    \
' T# H% e2 e7 G- ^                 UART_INT_RXDATA_CTI);
9 H7 E0 w- x. V/ H    UARTIntEnable(SOC_UART_0_REGS, intFlags);. @5 P/ `7 }$ F" u
}
/ ]% J# R  R  G; R/ K$ a* K
& k8 h1 Z% u  ~, B' u4 \9 T3 N2 ^

5 O: V' X7 w3 q( [  j7 ?6 G; hvoid UARTIsr()$ E) `' t. _! q- F& ]+ q; p
{
$ ?# }7 T0 \- U" Y$ w# n. W: @- y9 l    static unsigned int length = sizeof(txArray);
0 Z- ]+ ^* O- Z: p6 J    static unsigned int count = 0;
3 C5 Z! V. \" q    unsigned int int_id = 0;
+ m, ~' X0 y$ L( `1 e" `, S- ~) Z7 P' w* }/ g4 C, E9 n
! |3 z% D6 D5 Y

$ j5 J) c+ W" H' d    // 确定中断源
4 k+ \3 r5 W( f1 p5 G# d    int_id = UARTIntStatus(SOC_UART_0_REGS);9 O: w' @7 @+ l) h6 E$ N5 L
6 [% o/ p6 h# {6 Y/ x
    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。
$ h( O2 [+ k; T" L3 V. \' s% t2 H  F, M" O9 N
( I  s# z& y" ?4 g" p, q6 a' p: |
    // 清除 UART2 系统中断
' p) e$ Y( |5 }/ `7 D    IntEventClear(SYS_INT_UART0_INT);
- |1 G. B, I, R# [9 S! @4 P, T( {
    // 发送中断3 x- @1 b; e7 D6 u9 j
    if(UART_INTID_TX_EMPTY == int_id)2 v& T- a/ @4 _3 b, [3 [
    {" m  o6 b2 z6 [. Q
        if(0 < length)3 x. o  u3 C/ |0 c4 H& E
        {
' Q: C. H9 q- i8 S  `            // 写一个字节到 THR
2 L0 g+ l' v; n, U            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);
* t3 Q4 ?0 W* x/ o            length--;
+ p2 {* ^; j+ g4 }6 Q: |: o. g/ c            count++;2 Z( `( Z0 z4 a6 I$ C
        }0 j; ?6 p# w8 L: v* C5 ?7 u
        if(0 == length)
) }, A! C0 |2 l9 O. ^% ~        {/ F' J+ \& B/ \) s
            // 禁用发送中断  l# j' P/ E2 K1 n: R$ {& F) x6 E
            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);$ o/ ]9 z* a9 F- t& u
        }
8 O0 Z9 ^% n2 f  M$ v* H. @     }9 t9 N# X1 Y  t
) v8 @, d% v5 ^) d6 u, |
    // 接收中断
$ M5 l) q3 Z2 t. ~8 C    if(UART_INTID_RX_DATA == int_id)
- L* f' I: K6 D3 i$ A2 m( l    {5 o4 B' x: j' y7 e7 u9 l
        if(status_a0==0)% F% _1 U1 b+ j0 d* p0 y  Y2 ]8 I" y0 _
        {* a; d; C" v  i0 p% [) T# ?* `
                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);+ Z& B5 Z& n" r, K; `% w) B9 m
                if(a[0]=='#')1 B1 j6 t. k% [4 M/ L& E
                {
. A! @( z7 X/ _" p                        status_a0=0x01;
4 \) B1 w2 ^# z1 M6 y9 E                        status_a1=0x01;. N; Z9 Y! S: R) j
                }* R' \/ `  K5 F+ C7 B  |
        }* I3 J' |8 S/ L8 {
        if(status_a1==0x01)
* r9 m2 H4 s5 e; T/ B6 D        {( I' o, z) C2 A9 {: n& K
                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
7 d* {/ k: q4 _5 Z                if(a[1]=='R')  z9 B5 P% x2 L, F; H
                {
& X+ m% h  ^4 X                        status_a1=0;0 r, z' s& D- J4 Y
                        status_a2=0x01;
9 |" v5 Y5 e4 ~7 J% f3 r                }9 _( D+ D' P8 W$ z& {
        }
" U: d- w% `- |: D/ ^4 L" J- Q        if(status_a2==0x01)0 i. f: U6 W( r, t7 H+ F
        {
$ ?& i- @( k" Q. T                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);& J6 Z3 l' P3 v0 [* h  F; W& T
                if(a[2]=='A')2 _1 `1 t  s1 d! |5 J
                {( e( |+ n  Q' o3 G' C7 Z- ]
                        status_a2=0;
8 M/ `1 R9 A7 W/ Z4 {                        status_a3=0x01;
8 O0 D: c1 W" ]% w- G5 f& ^% X9 J                }+ ^, A0 T4 h2 v5 j$ s2 d3 X
        }
* ^" W  v$ t' o        if(status_a3==0x01)3 \6 ~/ E1 X8 M
        {
/ T) \7 F0 P* N. ~                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);/ E! ?* ^0 z+ s# e9 i9 q% j
                if(a[3]=='N')7 @2 w$ \/ V. X* Y
                {
  Z. ]- ~4 q$ u# j1 s# y( `# e                        status_a3=0;  j$ c# F4 L7 y8 w, }
                        status_a4=0x01;, e) M7 j# i2 R; F* H9 G6 _$ e
                }, t9 g# M1 \# x4 g; r* p( K5 ~
        }) d2 J6 z; C3 J8 ]& B
        if(status_a4==0x01)
+ k+ m3 H! i# j4 |; I8 \# _) Q        {3 ?0 Z2 D, ?' G. k) |( ]! x
                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
9 v' O- C( f) O  V9 [* `                if(a[4]=='G')
2 r( k8 O% T! O* O% r! f+ n0 K                {
2 i2 c% n# ~7 g8 B: T' w: j                        status_a4=0;
* v6 ?! W' C8 e: x; \                        status_a5=0x01;$ U6 N7 f# u3 u$ p5 T7 h! m
                }
, V: m7 c9 H# \( U        }
" m+ y5 r0 T; q1 l$ f5 X        if(status_a5==0x01)' b7 x* S" h7 h. h8 Y9 V8 g
        {% ~# j8 J& J" E' x( b6 W5 {
                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);7 H2 ~7 F+ D; c. S6 B; X% a; o
                if(a[5]=='E')8 r9 W$ X/ h' o0 Z1 F+ ~* z5 z) f+ Y3 A
                {1 i2 P# `3 }* q9 n1 U( K/ X8 D
                        status_a5=0;
) g) @" p( L: ^5 Y2 H                        status_OK=0x01;6 k8 A, c! k) }$ E# O8 `
                }, S  p& {0 R( A5 u6 ^  K
        }
2 C! H1 ~( n% j& t" |            if(status_OK==0x01)
- m* W  a0 \2 v3 }        {
2 }# e) H& }, s2 J) D& T% d                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
, R! ?$ E: C/ M1 n! Z- I                        lengthrx++;3 V* Z# ~6 ~" l" G" a, |  A
                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值)
+ b, t  `* L/ B: m                        {3 a  a8 l! q4 J6 ^2 \7 x
                                RecState=0x01;3 b% _# X  N( T4 {, B* l& b) F
                        }  T( I' a' b7 n$ k# \  _
         }6 K. y  i: y! I( ^
' k; j, U& h7 C7 y. u2 m
     }
& ^7 I8 b) L% u4 k0 g5 [; \# ~: q: K+ @  J3 ~* B, s8 m3 a0 y& |: A
    // 接收错误; W1 U# e- d2 [$ e9 e) R. [. H
    if(UART_INTID_RX_LINE_STAT == int_id)/ M; t- t, }  T% |2 j  C0 K. ^5 |
    {; v; }: m) R' N. I" c9 g6 E
        while(UARTRxErrorGet(SOC_UART_0_REGS))
* i3 K# E2 I5 ^5 l0 f6 [8 u        {
6 @' [; ]( E: X! y) a- z            // 从 RBR 读一个字节; F& X+ @" ^; Z- x" Y, m. S
            UARTCharGetNonBlocking(SOC_UART_0_REGS);7 y1 g( H0 T$ {) v3 y5 U
        }
/ H9 i$ w, _5 f4 A    }  T3 o" ]9 X( t2 {) A: H- x
) t- h4 D  C7 r0 c" e
    return;
2 C2 J* J( q9 \5 C  `5 h}
! H% L1 y5 e8 b8 i/ S6 E
" a/ L5 }9 r: c4 m- O5 ^
$ k1 h& r7 d& {' f  g" q! f

0 U3 X) @1 T: y! ]& O0 E; R% ^
作者: Jackindata    时间: 2016-8-17 11:13
hi,
, ~0 W- _8 R9 x9 x
; Z4 p, E% h3 S* l1 n5 NUART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。
5 B2 N. n. q+ z* O2 P$ J- c3 ?; h  _9 A
要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:131 B4 ], y9 Q! d& W
hi,
! x/ p/ k' W7 `' s* v( ~. Q2 X: C  f9 G2 o& A4 Y5 ]
UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...
: w6 f. [+ j! n- ]
void main (void)$ x5 f% j: {" V: u0 p9 K
{
! f+ \$ M! e, E" P6 X" u        int i,j;
; c  J; m* j' q/ a- p- d' ~5 r    char *str_buf;' g( S& D& h  r2 ]
    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];
) {" z: V* b# w, W5 q8 L+ @        double est_L_b_=0;
- N+ V1 _( ~8 I( y1 e3 f        double est_lambda_b_=0;3 {$ l) x! o+ u0 i* d) q- ^- t
        double eul_[3][1]={0};4 {0 [8 w' \9 c) \( a3 b
        double est_v_eb_e_[3][1]={0};; g/ v/ I. l- s
        double est_C_b_e_[3][3]={0};8 B; E+ p/ j0 z; Y: }
    char *qm;
0 W- `# q% @+ j' V) c7 p1 H    char rec[70];
. }( i9 Q( ?/ i- Z& R, D        double L_b=0;, n: b4 e: C7 }- ~
        double lambda_b=0;
, E: c9 g& ]& e% J' `+ S        double h_b=0;7 i- Z! h0 s. w0 [- m3 V4 t
        double rate;9 k5 P/ s/ ?9 ]
! y& Q  T3 B& f, W7 @* Q- C' V

: Z1 s7 I' ~) F4 }  f: N# I        // 外设使能配置
# \4 X) p8 H! r9 i- c  y. ~, A; x6 ?& V        PSCInit();7 q2 F* Y% Q) S+ Y

7 |1 Q/ ]. `1 l+ O) `. p2 y7 T" E. }  u        AppInit();
, Y& X* m6 O& L' w$ `5 L' d) u( T' A' t0 x0 W3 F
        // UART 初始化8 n" ?, B+ l! n
        UARTInit();& @" b; S! n. c8 j( J4 w- j
' B# E: x  D& |9 ^  m% N! u
        // UART 中断初始化; I6 V& V+ [( |8 y8 H& f! e: {
        UARTInterruptInit();
" d2 \- K8 w1 g) P* s/ V6 }& F* h8 i) z  n3 n3 c: y
    evtRcvd = 0;
" Z; S$ R; Y: ]$ v    RecState=0;
! Y; o& Q# d2 k% `' D4 v    /* Initialize */8 `- M$ L7 g  I: I1 Y
8 ]9 e. z. _8 f9 T+ e% @
    printf("DSP subsystem ready\n");% W+ n% Y; ]# @  O

" Z/ A- i: l5 d& G2 J" U) }    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));
5 |/ N, Y! C( \; L" K1 r- I& y4 k( G* s
for(;;)
+ R6 ^. W0 i( J% I{* ]6 }4 g7 [. H) P" ~
        if((RecState&0x01)!=0)5 X' y' u; T1 l" F9 Q" B
        {( V+ J1 V; D* b  n- U# {* k) M  K
                printf("liuzhenxing\n");
" B3 ]0 J0 y7 q        }
  \* _$ V# O9 s3 u" W5 [3 P        else
5 u/ \. P$ |: ^7 e$ q        {
2 l2 Y2 u2 {8 T! }7 j% u       wait_event();
+ G# ^3 O$ L: A2 A8 h$ [6 U8 k. ]' P2 E7 K
           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针4 |5 K; |3 ~# U7 D6 s  x# B
0 Y6 k, H7 L3 i/ h4 I
           for(i=0;i<60;i++)6 |; Y- y" k: j5 H& s
           {& u, ]) C# S" t
                    rec=*qm;
$ O. U' J* z' e) }                    qm++;
" I; Q1 K, g# C5 ]# z           }; f( ~5 F5 q6 D0 [3 J- Q) J
1 Q$ }, D! T$ p% w% [5 X% i. R
           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);- t; I% m3 U+ ?' w
5 m' f- M" q  a+ v6 f
           L_b=L_b_receive_double;
: M" _! n  N0 x! g9 I+ j$ {           lambda_b=lambda_b_receive_double;! ?  q' e( @# e, d
           h_b=h_b_receive_double;5 J& A8 \' I+ Z
           for(i=0;i<3;i++)* L# ]" R  m' g/ L  ^
                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];# V* G) K; r1 [$ U" E& f
           for(i=0;i<3;i++), S" y2 t  t, t% d' V
                    for(j=0;j<3;j++)
2 g/ R, |- c8 x                 est_C_b_e_[j]=est_C_b_e_receive_double[j];& w8 h" U2 Y: {. `- Z% @

1 S) v  \* G, o: W' M                printf("L=%lf\n",L_b);8 Z" j. b% t" z# ^' l6 S8 h
                printf("lambda=%lf\n",lambda_b);
- W2 ^9 @5 B4 v. a4 E+ X                printf("h=%lf\n",h_b);- k9 u) ]( Q; C% E1 f

% n4 b9 y; u' l7 f0 A: L7 ~                for (i=0;i<3;i++)
9 D' Q% X  V- U8 d4 w                        printf("%lf\n",est_v_eb_e_[0]);4 v- u$ x: H& r$ J. e( s8 d
                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]);5 R7 z, J) w5 z; k; d1 a, ~: L/ W
                printf("rate=%lf\n",rate);( |4 M7 }% U6 }) H

9 k1 k! i. T: ]4 D, b                CTM_to_Euler(est_C_b_e_,eul_);
7 n# }+ h3 |! p! m/ n7 v4 _$ ?                for (i=0;i<3;i++)! \  K( m- o; N! `( x  V7 Z
                        printf("%lf\n",eul_[0]);
( E8 D, V" ~9 T7 ?( i                printf("end************************\n\n\n");
& ~$ P$ O5 `, I1 w
8 E' R+ D) U3 o  L: i- Y" b                /**********************************************************************/
0 x, H& K/ `. B* G
  S" N$ E, U$ g% ]9 _- c5 F+ o& K            char flag[4];
0 Q* @4 m) `2 G' L* P5 @1 r# p- j$ x. d/ K& g# k
            flag[3]=0x00;
5 g% i6 f1 u  }! U( C5 r; M            flag[2]=0x00;" u( h5 _, F9 P" ?8 x
            flag[1]=0x00;
, s- [0 K7 y4 _            flag[0]=0x01;- }8 t, ~# b1 d+ k! p& h* \
/ H( |" g! ]  e. C! K
    /* Allocate I/O buffer and init with string */. W! j9 R& U. O2 h0 c, N
    str_buf = (char *) malloc(80);) t% ^* L6 t* t; n( b
    str_buf =flag;
) G$ U0 M% w0 g6 r7 I8 t: W- s% A0 r. C( ?* |+ O
    /* Send buffer to remote CPU */
6 n* u, N4 u5 T! @: ~    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));
2 `6 F- V- Q' b% V3 W
4 m  v! w4 \2 s    printf((char *) myPayload);1 |7 x) o/ d+ H8 S  O( ^
        }  @: J8 b8 J7 F7 X. A% j+ J
}
7 e! {) o  s6 f2 U; s
; b9 z  w7 U! ]+ Q% [& J    WAIT_HERE;" A& ~' u* ~8 R6 I* W; Z. @6 L4 A
}
- I* P1 }0 z2 ?( V/ D' s
作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:
/ C0 J  B6 m3 `我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。
/ v  T" l+ p$ j  l然后我把双核通信的初始化屏蔽掉,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$ M. J  ~  G- B# w" b
syslink 的初始化是否成功,notify 通信是否正常了?

$ W1 N* l' l) d! r5 ~; z双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:54
# c# i% R4 I" D3 jsyslink 的初始化是否成功,notify 通信是否正常了?
; O8 u' \% I0 w4 u
我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:20" {9 b4 p% |2 [2 W" K& H6 y" F
我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程

9 w* [2 G, r- q5 j" D8 n建议查看 UART0 及 DSP 中断控制器中断相关寄存器值 是否正确
作者: star_niubi    时间: 2016-8-21 14:56
能否说的具体一点,就是双核通信的都修改了哪些寄存器的值,这边双核裸机通信的资料很少。




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