嵌入式开发者社区

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

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。# _3 `$ S: `% ]  i
我是在DSP初始化这不太明白。' u" W; q, h5 F& j5 _- m
初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。
4 J3 G: L2 z3 U; K4 r7 n( L% B2 I& J# }0 ?: R

2 ~; @6 V* Z- r6 Y0 l: P首先        PSCInit();//UART0使能: l2 P, u# X8 D- b
void PSCInit(void); {# p; M! r. r2 a0 E4 ]
{
& O# A& R2 s6 h7 b        // 对相应外设模块的使能也可以在 BootLoader 中完成
8 W: M' {+ V/ m    // 使能 UART0 模块
6 k! c+ N7 w2 a0 k    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);% J' R! W  E7 p& l
}) w, U8 B) z. |% X: Y
% ^) X+ h3 r1 n4 L( u" H% X

# J- K/ T/ ?/ c* ^然后是 双核通信的初始化           AppInit();
% [; g1 o# _  D: W! kvoid AppInit(void)
* A- a. Y; T* t{
+ f5 e+ Y/ @4 C, C# |0 W# I    /* Structure to initialize IPC (see Ipc.h for definitions) */8 d* P9 e( [8 M* y, Y# w8 n
    struct IPC_cfg ipcCfg = {
5 ?* p( J. c8 @# H3 n4 R# U& J' `            IPC_DSP0,             /* local processor Id */5 \; X$ ~; M: c
            IPC_ARM_HOST,         /* remote processor Id */
; N- u2 [  c" Y# }$ \# k( L8 v            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */
; I& y/ I. y$ O, o0 c            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */
. Z# Q' G  P( t# U' I            NUM_MAX_EVENT,        /* maximum number of events to be created */
: h; [+ d. m  Q5 v  e7 l6 L+ ^            &ipcPvMemDsp,         /* local side private IPC memory */& a( v" L* A3 m: I) e' M
            &ipcPvMemArm          /* remote side private IPC memory */+ M6 n4 z$ N& `5 L2 n; B. p
    };. a" w, d3 b- A7 D1 t; z0 ~
    IntDSPINTCInit();
3 r& P7 S$ g# V8 W) h# z+ K8 s    IPC_init(&ipcCfg);
! s3 v* {1 g4 D  E& O- N    IPC_intRegister(C674X_MASK_INT5);
7 q8 n, n, F4 W' q    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));! e! p' g6 W  c) X. C
+ c3 `) g5 r& [" m+ o4 n
    /*  Enabling interrupts for DSP C674x CPU */
1 Q0 w5 |) R8 K. R1 `    IntGlobalEnable();        /* Enable C674x global interrupt */- s" M9 \# ?+ @3 R- Z* d
    iAssert (Notify_start()); /* This will enable IPC interrupt */# `9 |( o1 B* \2 K4 I& T
}- Q# U/ G3 A7 z" K1 G$ M

5 m- r( _% x; r5 W7 D/ y1 J/ q然后是  6 ]1 A6 q4 w6 G( ]
            // UART 初始化9 ~6 d! c% a4 ?/ _3 n
            UARTInit();* i7 e3 \: n9 m: J/ }* Q

7 p5 b: W# i  W0 B9 y* C            // UART 中断初始化+ ~+ D( M; d( p
            UARTInterruptInit();  ~) ~  @, e! A
, [  Z0 ~3 m) O5 x$ i

& Z% C. Q$ B: V5 V  B/ A  p* L' S: [void UARTInit(void); J. S+ U) g! c- w# W! M
{3 x) Z" m2 S7 p4 M
        // 配置 UART0 参数
5 r) P3 ]0 P$ L        // 波特率 115200 数据位 8 停止位 1 无校验位
) y2 o4 K8 p* @" _# S$ g3 W    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,+ t( {1 l- ^8 _( K  S7 O$ B( [
                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);( [1 c  E. B  t5 k
        // 使能 UART0$ s  |/ x, r  j; u0 Q, d; k
        UARTEnable(SOC_UART_0_REGS);+ [! ^, ~/ |# {8 |1 d; J

  I9 u, t- q1 z4 K; X    // 使能接收 / 发送 FIFO
' ^) T! H2 t3 w2 n0 M//    UARTFIFOEnable(SOC_UART_0_REGS);
. s7 e2 @) m2 k+ Z7 N0 w7 ]2 E) Y5 ^. A8 y. g: e. @
        UARTFIFODisable(SOC_UART_0_REGS);  [# }. x# n! O2 `4 c
0 k3 V, A0 h" `
    // 设置 FIFO 级别     接收FIFO的级别
+ Q: B: A0 [! i1 ?8 X//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);6 u5 q$ d  O6 a8 f9 P) Y8 V5 \6 K; h
}
2 [% I/ w8 O) ^+ B

  d: @& _! a$ n, l
8 {, r$ P& p; m& ~0 q. B. @3 i* ~void UARTInterruptInit(void)
2 ]* k( M8 _# s, r$ U) z+ J0 s{- M: P& o; Q% i' q  J
        IntRegister(C674X_MASK_INT4, UARTIsr);0 q$ ^+ P8 U: n1 D/ h# W
        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);+ Z% V9 T, W9 R/ \9 l8 D' Z& l% O- i
        IntEnable(C674X_MASK_INT4);
9 u. q2 A8 ^* U; C% k3 l+ D( {* X. U2 S  t+ M
        // 使能中断
& o. N) U" h) x8 Q1 J        unsigned int intFlags = 0;: q0 `: e+ g* i: g4 B
    intFlags |= (UART_INT_LINE_STAT  |  \
+ X' _% a( ?6 N! v8 Y                 UART_INT_TX_EMPTY |    \
3 u# z% A- I3 y                 UART_INT_RXDATA_CTI);* {, @/ I& o& C( ^
    UARTIntEnable(SOC_UART_0_REGS, intFlags);
9 c$ y; c( Z# P  K* x8 w0 v}# G- ^2 y8 k9 f6 t
2 @4 w! F4 m- G5 J& w% Z

' U& z( e* b4 ~# jvoid UARTIsr()
; Z! n  a$ X) b7 ^. t{
' S% @- \7 s/ J6 w& ?: B    static unsigned int length = sizeof(txArray);
2 \/ X0 g9 W. p    static unsigned int count = 0;4 ]5 L' G1 ]1 W1 [, S
    unsigned int int_id = 0;
7 k7 F  X. n* \' g" J1 f  z9 @" E; o. @/ i
3 e& B3 c( l6 c+ e# ]; y4 i
1 c5 v. y/ c7 {9 f) H
    // 确定中断源
8 _8 d* H. Y, Y' L- a    int_id = UARTIntStatus(SOC_UART_0_REGS);
* R# d! w! g9 c7 B9 @
; u1 p8 S+ H6 q* d    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。
- |$ B% A1 M2 K$ c! K2 g) q. I  R1 G! W
8 R" q/ ?% q6 W& {9 W
    // 清除 UART2 系统中断
7 W  }2 B, W6 M# N; C: o    IntEventClear(SYS_INT_UART0_INT);4 F8 R/ x8 a+ L; X% l. Y% a- T
0 }* z- a6 A0 H% m8 s* M' g8 b
    // 发送中断: i2 H' w# D. M3 S
    if(UART_INTID_TX_EMPTY == int_id)( @8 S3 W1 l" h" E: r9 Z
    {; d  i0 Z- w# ]6 ?, N9 z7 S& u$ w
        if(0 < length)$ P2 M2 m8 F/ c
        {) B- A. o- a* }+ W2 b5 E
            // 写一个字节到 THR! ?! e% i# I8 H  V% D
            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);; f( p7 `2 k, q9 i( i0 b
            length--;3 ]& v* X! @7 K: j
            count++;
  R+ u) r8 s1 ], [( J* ]        }! j0 h- H/ t! {7 Y, Y+ {
        if(0 == length)) a7 m( A. V) f4 t1 A$ o( A
        {
1 X/ Q" ^! ?, V            // 禁用发送中断3 l. O5 q5 B& V- x
            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);5 F' e% W4 Q% X. |
        }
9 S4 S' S+ ?5 J( P) a! q     }) l9 K, h- x2 V! p5 J
% n) c; I0 j' l& D! G
    // 接收中断, f1 R  t2 a/ R1 z
    if(UART_INTID_RX_DATA == int_id)
5 L; M$ @, A' ?4 u    {  k8 V+ ]/ n8 F$ \. }
        if(status_a0==0): J# @- H, N) @' N9 {- W( Z
        {, W. c* Y8 f  j; k# `7 G
                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);0 b9 V. F- a  R6 [0 W: w
                if(a[0]=='#')# g( k  k- b/ d: y
                {
/ F8 Z9 g3 M, a; Q. A; F7 J                        status_a0=0x01;
3 a. Q( s' o  D3 b& ^" G" `                        status_a1=0x01;% w; I+ r) S5 p( o+ Z
                }  d3 H5 F. E, n& s# t& n
        }, H- ~$ U$ H+ q  b; A! t
        if(status_a1==0x01); I) r% Y1 A) W" `( V5 Y" z+ l
        {
# P, t; v8 M4 }' u                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);8 C3 {" j! T' S' p
                if(a[1]=='R')
) j* o( D7 d! J0 q, `                {2 _7 A$ {% o, |2 i( r
                        status_a1=0;' ?: P7 q$ u# R' T4 D8 z# m( K# j
                        status_a2=0x01;4 Y! N) L  F" {& j
                }
8 j7 w/ P7 y: d0 B% K8 O0 R        }) V: y  T4 N2 C5 j# g3 X
        if(status_a2==0x01)
+ U+ i, w7 ~! ^7 Z        {8 c4 H7 i5 I- I7 V- X1 {
                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
) y6 u( Z7 w+ K& Y                if(a[2]=='A')
2 z. e" M$ F, ~& R, M, i1 z                {( J2 ?/ r5 V' \$ d
                        status_a2=0;9 [# F, s; B1 w
                        status_a3=0x01;4 v; C4 B! R% [7 I# Q; W+ C* e! z
                }3 w; [* Z0 a' k  v* L& z
        }
! m' ^+ C6 {6 f3 E+ N        if(status_a3==0x01)
$ Y! d; g/ j, u+ C7 j: X        {9 H3 ?  a) L9 ~1 ^( U- V! X
                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);4 K. n) K7 s) r) L' b! ]( Y
                if(a[3]=='N')# [. g) j( H( i5 S+ z4 Y8 H" v% V
                {6 ^8 w3 Q$ \3 B8 x
                        status_a3=0;
, b/ D. ~9 u' f$ M# ]- |4 k                        status_a4=0x01;5 j$ m( N0 Y, J8 G# M4 F
                }0 ^' p6 d" B  E$ F# L" @
        }
& D+ x" |5 w  Y; @2 n  z        if(status_a4==0x01)
! O) j5 W1 ]* P6 M+ R, c        {
8 ]' z+ O. ~" M+ Z" F, q                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
1 _6 V4 g; m/ R! i" d# `$ {7 H                if(a[4]=='G')
2 W( Y4 C* p, f$ x* m3 B                {( B" b5 i" A. {( \
                        status_a4=0;! P" B/ D% o( j5 E5 h& o/ _5 p
                        status_a5=0x01;: T# M8 A/ C, _; c3 k/ E
                }; O& O$ X* v8 m) m) b8 W
        }
( c4 E9 A6 _0 [  U6 U        if(status_a5==0x01)
' j$ a" R1 j$ R        {% _' r# W3 e! k
                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
: L% u4 |1 P( d; j                if(a[5]=='E')
; T9 G: t* t$ ?; k. A" I! ?                {
. u* I" c1 P& R, g                        status_a5=0;
: a5 R0 \, h! u1 T                        status_OK=0x01;6 F5 F& t- m3 ?
                }
: l  c- @8 i- v( G        }8 a8 Q3 V- C. I: d
            if(status_OK==0x01)$ A/ w- D& o8 {4 D
        {
3 l, z0 @' {% U: |7 p: ^                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
8 j+ |/ y& ]" J8 N                        lengthrx++;
" p- c' Y5 A% |5 u1 j                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值)- Q# r# I( u. h/ t6 m
                        {
; O3 X# k/ a( c: e" Y& H/ ~8 r# ]                                RecState=0x01;7 F( U3 L. G0 H' @
                        }& _' O1 d5 B& `* w$ r8 J
         }. k+ @9 W8 u. a4 O' G- y
$ i4 b- p. H+ p% z1 o" P, D
     }
  B% j0 r# F3 I1 ?
$ ]: q& f! n8 U0 q, e    // 接收错误
/ t. Q1 U- v+ U* b8 M2 o4 B    if(UART_INTID_RX_LINE_STAT == int_id)* Y# [) P2 Z, n" V4 e
    {$ b, \$ s! P0 {; `8 B% |7 {7 ]0 C
        while(UARTRxErrorGet(SOC_UART_0_REGS))
& y: s8 i6 r3 }        {
5 c$ f" m$ [; q: d  ^            // 从 RBR 读一个字节
1 Q$ k3 ^6 i3 C9 G  r6 q            UARTCharGetNonBlocking(SOC_UART_0_REGS);6 `  x8 Y; X* z/ \9 t* \! X
        }- N9 U5 \# a; r9 }
    }
; f1 O8 [  x# u/ g8 O
" f% ?9 o( U1 a' u    return;" f2 G0 k4 k! [, g6 M" C& E
}
% g% m* Y2 a0 e6 n0 l8 f
6 c; K! q' B" I5 H
& H) ^3 ]8 u, p1 N/ Q# `, h8 I

5 Y8 z* D. H2 k; i
作者: Jackindata    时间: 2016-8-17 11:13
hi,# [! ]6 V0 `( e( y# J( e$ P
! G9 e, F2 U, O
UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。$ r  y3 v' C$ C- b, e# v$ B2 x' ~+ p
- B; g& F5 u! I: k( P
要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:13
8 _$ S9 m9 I1 u2 D- r$ t: Fhi,& a* E  w  y+ w5 T$ ^' [3 F

6 d8 H; g0 }- Y: c# ?UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...

# k# K' B/ b+ I, e7 A. E) Nvoid main (void)3 e; N  }, w: o. Z
{& m7 S# ?' ~9 ?2 p* W( T& l- ?7 H
        int i,j;
0 k5 t2 T3 [% P2 `- Z" y# u3 X    char *str_buf;; U3 U0 s" E! H4 \
    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];, O% r) L' H+ U7 F
        double est_L_b_=0;. C: u0 o% C  i
        double est_lambda_b_=0;' y# U0 @( X& z3 S' X+ {; t5 [0 T( x
        double eul_[3][1]={0};' D- x" }/ A4 x3 o4 w# u
        double est_v_eb_e_[3][1]={0};  M) w0 S! h4 Q# [
        double est_C_b_e_[3][3]={0};
5 z. \9 ~; m% P' M% z- z    char *qm;5 [0 m' W) v9 }
    char rec[70];9 B$ \7 y. l! I7 G( ~3 n5 h' V
        double L_b=0;
( K; v9 O, F8 s# t$ `. K# d/ e        double lambda_b=0;
7 v; W" r- |0 o" ?0 o+ {& |) x" Z; K        double h_b=0;* B& W/ S4 Y: K( J
        double rate;: e$ C& d5 p# W5 t/ a8 W$ \3 E

. u' b* w! Z" [/ ]7 ?* ~
' E, v7 \1 q- W4 Z, P        // 外设使能配置
' B* M, B' i) }2 S7 c        PSCInit();
% V) {4 H8 o6 H; D6 W+ x, N% m7 D9 o
- j5 @: r4 L/ b3 n  \( y- }        AppInit();1 x, ]: E' a/ M; H8 S: V* z

3 L- q5 J# }2 ^  p% U# K6 k, L        // UART 初始化
$ r; D9 S; ~! R) f+ ?4 z  S        UARTInit();  y7 [2 u7 P- a8 V. ~4 `5 j9 }. \. \

, U( A2 n' C8 O9 l& g( Q0 j        // UART 中断初始化/ s' m- L8 i( k) M- v
        UARTInterruptInit();/ R1 D" h+ t4 s( n
6 M2 u5 U1 v! ]2 C& E
    evtRcvd = 0;/ A( F5 \* {5 h- z- M1 ^2 Y4 R
    RecState=0;
/ R& |: j" J) z; T    /* Initialize */' S# ?: a6 s$ i4 v

, P5 w/ g! Q4 J7 g; |9 L; V# I    printf("DSP subsystem ready\n");
9 |! Q1 A* F+ @/ L) X- ?/ _: F/ Q' B5 ~2 m2 L
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));9 z& r" |7 d1 B7 I; c" d* |
8 }/ i4 O2 ~/ a. ~/ q9 C, `
for(;;)
' U& ^# K: i6 Y+ B& L( {( m  l{
% f9 U* ]2 t/ ^        if((RecState&0x01)!=0)
/ b- S+ o. Q$ N7 S, X/ a6 Y( r$ ]        {* i! b7 K: q6 V2 e3 N
                printf("liuzhenxing\n");
7 i4 d, A) \, Z* _+ p        }) l+ X4 \9 ?" K7 Q5 f6 S
        else
) Q) o9 C( K8 W8 L/ C) l        {
6 B7 B! H7 D: X8 ~       wait_event();5 |1 b9 c/ R- J9 C
4 Q) L9 ?0 W1 ^9 C1 D: p
           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针" k+ r- g* P+ j! ]6 w
2 N! V8 y# C8 L* s( _+ Y3 q
           for(i=0;i<60;i++)
2 q4 X5 d+ }- B: W" E. z; ?* z" [           {
9 ]! n& S) P3 m/ m# F                    rec=*qm;7 w; C3 ^5 Z( U% E$ i
                    qm++;
9 s' o& }. a: s' X# S/ Y. ]           }
3 D! m# [) `) o$ M% s
# A, g- j8 m4 J4 V* I9 G           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);/ J/ e9 Q3 v* ^* s  [

7 Y1 p: o/ ^$ V* R- _3 ?           L_b=L_b_receive_double;# G6 }4 s! I, j- m7 @
           lambda_b=lambda_b_receive_double;/ ]' p, z, V7 M, j
           h_b=h_b_receive_double;, C* I. a$ G) ^2 D, z
           for(i=0;i<3;i++)
4 M/ B0 J/ b' ?& N8 w                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];2 m3 I1 f  g) p2 ?5 S
           for(i=0;i<3;i++)
+ l# n2 w% |+ v  H; T1 T                    for(j=0;j<3;j++)
6 d) g3 Z. S$ O$ _- r: j                 est_C_b_e_[j]=est_C_b_e_receive_double[j];
$ T4 r: `  \9 U2 i2 D# O) T5 o$ q4 v" m) a5 d3 I8 n
                printf("L=%lf\n",L_b);
5 s8 d8 ]  S* U; B6 x, \; S; H3 ~                printf("lambda=%lf\n",lambda_b);6 |2 C+ W2 P- S- `+ l; K. Y( t
                printf("h=%lf\n",h_b);: N1 e1 o" l- G9 P- e" M
9 O& o9 w9 e3 z* z$ Q
                for (i=0;i<3;i++)
1 \* V, [- s9 D5 T: i2 i                        printf("%lf\n",est_v_eb_e_[0]);
3 z" h5 d8 J  L4 h' \' C                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]);) p* V; A5 X5 K* s5 q7 C, r
                printf("rate=%lf\n",rate);
1 x# m) b# s" L& j- n2 A% z3 l% M, L( t8 C1 t1 D! v; Y$ ?
                CTM_to_Euler(est_C_b_e_,eul_);
( s: A" b7 m3 U9 B! K/ G, D0 A                for (i=0;i<3;i++)6 ^/ a' v, Y, ^
                        printf("%lf\n",eul_[0]);
" V; a- }; E$ B                printf("end************************\n\n\n");0 g! v+ Y) Y- l- }$ o% I
4 d; a1 F& s8 F( j2 L- V
                /**********************************************************************/
1 T9 |! r$ s( N
5 J& I: Y, B) S6 u            char flag[4];! c" {! ~, h) r  M! Y# ~% g
0 D: p8 S4 p: x# \6 P& X/ s' o
            flag[3]=0x00;
- L4 C; ~3 f* _: t  @. ^            flag[2]=0x00;
* j! q) `% \: X  }$ x2 a            flag[1]=0x00;# h, ]; O: q- Z" I& N* t
            flag[0]=0x01;
7 U9 \& l% r6 y% W: N% T" G
+ n) q& n" K+ A  g    /* Allocate I/O buffer and init with string */
0 J) O( y2 a: X3 s6 }. j& o    str_buf = (char *) malloc(80);8 q5 n) v7 l2 s" w9 R% ^( e$ n
    str_buf =flag;' o( ]2 X1 W7 m

4 a; I- Y, R, d5 [" h& S5 h    /* Send buffer to remote CPU */* F. T. Z! [! v4 f6 |8 u1 n
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));! P) U% T8 N! b- [- p8 m. H, o

' C8 b1 x9 P8 v8 F5 m    printf((char *) myPayload);& i: {* d+ d5 p' K
        }
1 O6 q3 ?7 b$ N% Q}, r" v  B, z, }* w( f

/ ~( Y2 Q: g' @' f    WAIT_HERE;
2 U0 |) I' h* A1 W7 b3 e/ H, Z}9 R7 p0 ^5 e5 a

作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:
6 z  Y0 z' B4 E6 a8 `4 r我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。
+ s) K5 T$ K/ I  g; \- Z4 @5 U$ E然后我把双核通信的初始化屏蔽掉,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* J) O% r1 o, O
syslink 的初始化是否成功,notify 通信是否正常了?

, }0 q+ f9 ^2 a! `双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:547 k% v! M& o7 [3 p; |* }
syslink 的初始化是否成功,notify 通信是否正常了?

3 q* E% c" D1 ~; ]- k2 |我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:20
6 z  Y/ F( @1 u6 |4 I  U" ~4 y0 G我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程

6 i" p9 t* \1 m9 T$ s建议查看 UART0 及 DSP 中断控制器中断相关寄存器值 是否正确
作者: star_niubi    时间: 2016-8-21 14:56
能否说的具体一点,就是双核通信的都修改了哪些寄存器的值,这边双核裸机通信的资料很少。




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