嵌入式开发者社区

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

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。
7 s5 A/ y/ Z+ a% H  X1 f我是在DSP初始化这不太明白。
6 [9 M2 _( A* W2 T初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。" P1 O1 o$ s, I/ ^
  y4 }+ I+ _% {* {5 e; |( @

2 \) V% U2 M) ~5 l, H8 t7 x! ?# g1 D8 J首先        PSCInit();//UART0使能& o5 S5 d% L- D6 I
void PSCInit(void)
2 L" J" p! d! F! N# v" g{$ K6 C+ v; M5 a& S3 @3 K
        // 对相应外设模块的使能也可以在 BootLoader 中完成
8 C( G. c) n4 F+ t' I    // 使能 UART0 模块: K: [9 t2 D  X. b
    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);
' i% l. D6 W  u6 U6 r}  |( c+ B6 W' ~( s, B- C' P3 T$ X  Q

/ s; M4 d2 _; X2 D0 B5 ~2 j- r0 E& [; J0 u* S
然后是 双核通信的初始化           AppInit();3 D+ V* d. L- |# T
void AppInit(void)( P& R  E6 O4 y. Y( }
{
' L3 ?3 g0 N0 V8 Q' s, W! f/ E    /* Structure to initialize IPC (see Ipc.h for definitions) */
- E9 |. D0 `! `" s    struct IPC_cfg ipcCfg = {
* e2 v" Y8 G! e/ ^) T            IPC_DSP0,             /* local processor Id */7 i/ P5 q4 J4 r" `9 P: v$ Y4 r
            IPC_ARM_HOST,         /* remote processor Id */
; ^- m% H! t/ e7 G            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */! Q# W2 g+ L& l7 j
            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */5 y& {1 d8 q3 `$ {2 O; \
            NUM_MAX_EVENT,        /* maximum number of events to be created */2 H* J+ L! \8 a; \* \: Q1 b
            &ipcPvMemDsp,         /* local side private IPC memory */
% {- F% h& P0 S/ \            &ipcPvMemArm          /* remote side private IPC memory */8 u. t- u: @9 I9 _% j
    };
7 ?- a  E8 ]. {( s* B    IntDSPINTCInit();5 V* W& V( C, w) q( d2 Z7 _
    IPC_init(&ipcCfg);
9 N0 `# g2 k2 {/ t7 _( b! U    IPC_intRegister(C674X_MASK_INT5);
: G. K# t/ Q$ J" W! e    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));
' P1 f! F4 ]: u  q$ i$ t
4 \/ P, \4 t4 |: Y5 `    /*  Enabling interrupts for DSP C674x CPU */
. ^5 C! _' J. {( A  w* m    IntGlobalEnable();        /* Enable C674x global interrupt */
% ], {: H& G7 s- a5 I6 g    iAssert (Notify_start()); /* This will enable IPC interrupt */# Q0 @4 b" [) h- c5 O
}
# X6 }( g$ Y; b5 f' F

2 |6 Y  ]( K; s$ t! w  y5 E然后是  
2 Q7 c4 X, ]1 j6 @& {% H            // UART 初始化# b6 F! n6 S/ J; a. O
            UARTInit();
( I$ B! D: z# v$ h) N; J( o' \2 A8 g  O
            // UART 中断初始化
% _' Z) c' c: Z  S0 r  I            UARTInterruptInit();+ H2 C$ X  d: S6 k

* O1 \$ s# \' u3 s2 o! ^) l0 S( M* G: {! @
void UARTInit(void)' g: t; u3 z1 ^2 e+ g4 ]- }
{3 q7 F3 Y- q( w
        // 配置 UART0 参数
- [8 t" y8 V+ H" I9 d        // 波特率 115200 数据位 8 停止位 1 无校验位3 l3 {. n6 h- @' X3 V
    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,
! b) o! A' g6 \& \: t' p                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);
/ n9 I" A" f+ z) @. D) _% F        // 使能 UART0% U1 y1 ]& y1 L+ g, P' v
        UARTEnable(SOC_UART_0_REGS);
* S6 L1 R- ~" }* I* [5 V8 w+ z0 Q! v. `. E3 H
    // 使能接收 / 发送 FIFO
8 I" G8 S; q. A: p# h//    UARTFIFOEnable(SOC_UART_0_REGS);
' Q/ X) B) y- W: c9 z/ u! U3 O, Q
        UARTFIFODisable(SOC_UART_0_REGS);
% K* j8 b2 X2 x! R0 L
; U8 f8 d& @' m! d# t    // 设置 FIFO 级别     接收FIFO的级别
4 l3 Q9 I' D' a. R//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);& C- M+ d" R, \# h% m
}% [- n3 _4 m! z3 n# H) \* ~
( i% [! y7 e/ ]9 W

0 x3 y: T, z1 y1 y0 m2 Z( k; Fvoid UARTInterruptInit(void), s- u* B% Y) w; l$ R" w/ v
{. N) m, F# l5 s8 I+ G; ^, [
        IntRegister(C674X_MASK_INT4, UARTIsr);
' C. M2 w8 Q- I  L        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);
3 A: Z( f) M2 o# |        IntEnable(C674X_MASK_INT4);
' o/ S" e: Q9 t; D% ?! t7 F$ l! K8 Z) m
        // 使能中断0 K; |3 v! n, A: K8 k8 }$ M6 l
        unsigned int intFlags = 0;  I3 l4 g- ^2 T
    intFlags |= (UART_INT_LINE_STAT  |  \
, j( ^1 K# _/ {. U* V                 UART_INT_TX_EMPTY |    \
  m/ S, ~1 D& Z8 `1 H6 R' E  f                 UART_INT_RXDATA_CTI);2 [1 o* W; D8 j$ h4 `  @
    UARTIntEnable(SOC_UART_0_REGS, intFlags);
: d1 N9 }3 z4 {}
9 |( y9 u0 H* Z
+ q5 h) @6 |8 k% j9 n/ W

, w' X" k/ e1 U" ]4 s- W0 }void UARTIsr()
. C$ W8 G: L- v# d' ]( l* [{" x/ M6 j, L& @$ h
    static unsigned int length = sizeof(txArray);
; X6 ?; o% w1 x2 b    static unsigned int count = 0;2 L) T1 [4 V- Z
    unsigned int int_id = 0;* t  Z) @( q2 }

7 F  o9 _, u1 w3 t' p
6 k$ A# {5 J6 Z3 I
  l3 d: }) q& }    // 确定中断源
, W# {0 S4 J  ]3 @    int_id = UARTIntStatus(SOC_UART_0_REGS);
$ s( F. g4 M3 a7 \( I9 ~  K) ]4 j7 f
( @( X: T, k$ ~8 O( }    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。2 g  \& V3 t6 m, x: G2 `
4 M6 P9 q- n  ]' ~
9 r# i9 ?- M  O: a% _# m$ L  _3 c
    // 清除 UART2 系统中断! w! P# f' g( U2 k9 a
    IntEventClear(SYS_INT_UART0_INT);
. l. v4 y' U6 N" Z: ?
; W) h* W8 O1 g( s- H' J7 s    // 发送中断
8 |# X* X) l) |% T1 w    if(UART_INTID_TX_EMPTY == int_id)6 v5 |* ]/ u, K& x9 V
    {. r4 `( d# B2 }! h/ w1 ~
        if(0 < length)
$ |' K' }; A6 K4 i        {4 l& I7 a" D3 R6 D8 Z# U- I; z
            // 写一个字节到 THR, u; b! d+ M* L" y. c, T0 N
            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);
/ E8 C" h: m; l5 j* `" j( o            length--;# D. y7 m! V3 k; A# G
            count++;
% ^( Z0 `- w* Q0 B8 R        }8 `7 R$ Y1 S) I7 M
        if(0 == length)
) p, a( _0 A$ z7 T        {( ~  G' b* a9 {" T8 i( x
            // 禁用发送中断" O: r2 i* q+ C
            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);
& d  B- T& m5 y        }5 m7 o2 G. R4 Z$ N  U2 c- F9 j9 @
     }
% [$ `* Y0 A; B- K+ m( ?" r; P4 r3 R3 D
    // 接收中断. r" G* C  R& O% u+ `  h/ Z. N
    if(UART_INTID_RX_DATA == int_id)! B3 ?$ A* u( C2 K
    {( p% ^' |3 t  Q% l
        if(status_a0==0)
6 f% B. T  M; N+ t& V. {        {
3 m& ]  ~. g2 z/ ~4 w                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
' Y6 m. T0 Y' @) g6 H0 J  ?$ T                if(a[0]=='#')
+ B1 w% K+ b3 I3 U. N5 n8 l7 d+ P# ]                {
& X$ i, _( P& R- w2 A3 m- E5 }. Q$ X                        status_a0=0x01;7 C: K) P1 E* V( R
                        status_a1=0x01;
9 f8 u, [  p8 |( [: Q& E" L                }
! M. p6 W7 a/ f+ x* x* @! K        }4 t- ?, f8 Y( ^' q2 n6 P# ^
        if(status_a1==0x01). L4 ^* g( ?3 o
        {
/ Q0 z! p7 T: d* t  `" Z/ ~2 H* q                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
' v) j+ |- D/ }- X0 i8 u+ }                if(a[1]=='R')6 w! u) R$ Y2 O
                {
1 O1 V2 C6 I4 w* T% V8 D                        status_a1=0;
2 |* n3 s' D, f. _7 \2 ^                        status_a2=0x01;
' X2 I% C4 m& @, L% D, u2 I, Z                }* s/ H  q6 _7 s- y( U3 d
        }
, w; i% ^( D3 w8 y        if(status_a2==0x01), G. ^8 W) O8 _3 ~; |7 ^
        {
+ b5 h$ Q* d% u& V+ I5 f( b                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
, w4 V- U0 B5 a( G8 x                if(a[2]=='A')
& s  x2 u; s* |' N                {
7 F' _& A4 [' R5 x: v7 X                        status_a2=0;4 p! X' ^# T! Z: w
                        status_a3=0x01;
3 H- |4 _" B. u. E0 }' u                }) {. P, C! q1 r" ~1 g
        }/ W1 [+ R, C( Y+ ]0 ?, T
        if(status_a3==0x01)
% p8 L0 ]# f9 ~% B( c* E) C        {
  d& \& N) a$ q7 e" Y                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
- k4 p( ?4 X' X  p% I                if(a[3]=='N')+ S( W3 k* x/ f, B7 [
                {
" l) _8 G3 u4 q5 w; m2 h9 `                        status_a3=0;
1 v  Z3 h+ d( T                        status_a4=0x01;: j6 b7 w& M( b2 }) r* u
                }
* |( a8 r3 R4 X% E1 x! p+ k* b        }& g' C/ y# |, F) p& m& c% |5 C
        if(status_a4==0x01)
, C, F- j. _: Q7 N2 W5 k        {
6 d. l. `7 \/ j0 d7 G* I                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);, [5 B4 k( r1 x* E, m
                if(a[4]=='G')
* U6 R8 @: R# a3 t$ ~  G2 A" M/ w4 p                {5 a# C7 t( O' g5 v! V
                        status_a4=0;" a* r5 v% g. |- a  P
                        status_a5=0x01;* I3 \+ \& g4 P8 k( Q" T% t
                }# h8 @% {" Y# v( a$ o
        }; \+ O. E$ v$ a& N
        if(status_a5==0x01)
8 A" }- L, f7 N% m# C        {
6 W" g" @" m0 T; o( b3 v* h                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
& l; \* e8 J4 R                if(a[5]=='E')
/ ^  d6 H) ^3 @1 u+ d5 ~                {" b! h5 J$ ]$ X4 h' @
                        status_a5=0;
. X. n4 B; f9 I  L8 D' Q                        status_OK=0x01;
8 C0 h9 g! k* N$ S) ?, M( f                }( y4 t# V8 n5 K! s3 j
        }4 K$ v9 q; N+ E5 R
            if(status_OK==0x01)1 \$ E2 W  z2 _; J
        {
: X3 Z: K8 G. }& K                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);0 s* [2 J2 T% f  |
                        lengthrx++;
. t* r* E$ x# X8 }" @4 p8 g; t                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值)# E4 m% z) U: R. W4 y
                        {
6 c( j; X% R: U6 o5 V( p: j                                RecState=0x01;
( N, O# `3 M7 @9 c2 F) c$ x                        }
2 `4 t  z- V. t5 Z! T6 W& q         }
5 I+ v8 I2 I0 U3 o& B. R& R8 A8 n2 ~# J
     }
# A) }! h( D; X8 O' i9 l- E
3 z3 l2 s  G  S& G6 s    // 接收错误) b6 i" @# S6 A  j# S1 t) b# a
    if(UART_INTID_RX_LINE_STAT == int_id)
% u9 w. m8 m! W" U    {
9 O+ J3 J# m! L3 ^9 P- j        while(UARTRxErrorGet(SOC_UART_0_REGS))
1 a5 l& y2 ^4 M) h        {6 Z! }" q$ @/ E( f
            // 从 RBR 读一个字节" C- N# R, r" R* K1 [+ h+ r5 }% i
            UARTCharGetNonBlocking(SOC_UART_0_REGS);+ n) u/ \) P8 l' v  C  M4 C4 D# b
        }/ K2 _) B6 s/ s$ @! o
    }% u2 X6 d6 q( \1 Q+ ~# x( a, Y& F
5 _- M" a) q$ t( s
    return;
* L3 V6 L% d, a}
& N& e: f$ n9 P5 m8 J. i
+ w2 P9 h. e, g' `  e3 S+ S  X6 l( v
0 _+ Y4 S  t8 y
8 s) M5 q4 N$ G' F$ _

作者: Jackindata    时间: 2016-8-17 11:13
hi,: S& ]# `- l  A! O
% s- {% z' @4 \$ R7 t6 x0 |* Z
UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。% M$ r  P; {  Y7 F, h) @8 |# f
& K1 @# T4 I1 L; J+ g1 u
要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:13+ @# r' C& @- w
hi,
8 b4 U( _- p6 x
4 \. S5 t5 n& \- ^* U# ?UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...
- T0 j2 j0 S! V
void main (void)1 Z  B( O+ n1 S. E2 K4 n9 R! E
{; B  j# V8 K) y, N
        int i,j;! Z( r1 [3 x# _  X: \# Z* F
    char *str_buf;
. ?' v, m$ M/ n0 G6 X8 u6 O9 W    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];
$ r1 r; l# L, J7 B! J7 B# ]7 ^        double est_L_b_=0;7 ~1 N" }: j2 I- I
        double est_lambda_b_=0;
4 Y" i. m% ~' F2 Z        double eul_[3][1]={0};
, h! Q" v* o0 P) @8 L1 B) o        double est_v_eb_e_[3][1]={0};
; }# |6 g+ E7 o3 \* l3 v        double est_C_b_e_[3][3]={0};1 Y" {+ N, g. J/ v9 Y
    char *qm;5 Z- X1 x3 B  c: Y. ?
    char rec[70];
* w. w- j3 p# X% s4 D. I: V1 v        double L_b=0;
/ \' m# o  t- w4 ^# r$ ?        double lambda_b=0;
; i( |2 o$ I2 f+ \5 j- B4 B+ i+ K7 K        double h_b=0;# ]5 C6 G6 F% z& R: K/ D
        double rate;
$ Q* m1 O+ [, ?/ X1 g& E" ~0 Z  g+ y2 @4 p3 L

8 `: g8 V4 M6 S        // 外设使能配置. k* M  p4 k3 k5 _) l
        PSCInit();
: Z5 L# }4 w* g" i1 O" i
* X# [* H: g- ?- Z& m- @        AppInit();7 @" [4 R: U, p! o# ~, F1 Z

5 F- K, b4 R; Q' J- X        // UART 初始化
- _  c$ z: t2 N) u9 L$ N        UARTInit();' h3 c+ O  E: ]3 V
3 @5 {; B6 J& h. h3 B' y& _
        // UART 中断初始化2 x  d1 r! j8 m2 u& q/ w) [9 [- a
        UARTInterruptInit();
+ ?$ \8 \- P$ t& q! H/ I- B3 m1 A' M/ `7 B- q, e
    evtRcvd = 0;
% ~# M( |9 l' X6 N+ {$ M+ e" q    RecState=0;: c4 m  [! ]% r0 q3 U1 K! }7 z2 p( u2 D% {
    /* Initialize */
' z% x$ Y& t! q8 g' g
# J! W) [5 a; T' e    printf("DSP subsystem ready\n");0 v$ k. P. l! M  T

1 q5 F( F$ m! {8 o6 h) d+ b7 W    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));+ J3 x0 R: O& Y+ e

6 J7 R, j+ _, Z/ @& J: B1 Tfor(;;)
) S0 L5 {6 o# P- [" ]! C{1 V. f. G) h" M; T2 P5 |
        if((RecState&0x01)!=0)
. e0 p) }0 c6 R3 l. w7 z        {
4 F' ?6 D; z8 p2 N: H/ v1 |$ [( s                printf("liuzhenxing\n");
. g5 \4 s6 L$ J/ L1 }! t        }
* t) i/ g9 Z, c( ]; Y# p& ?        else: q4 c& b2 ]; ~8 z7 k  E
        {
5 h5 N+ a- K/ x! }4 ~& G       wait_event();
, _% S% ]; K+ @6 U" q, o) t, w$ @# H: H8 c
           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针
' M/ g& |& q2 ~: u& N% Z( c. R9 ~7 C4 E" o5 v" I* `
           for(i=0;i<60;i++)
1 M( e. ~# p- D: o( m) W) R! ~) Z% o* H: s           {% [, ^4 }% q$ g0 E5 x3 W
                    rec=*qm;
+ e8 q' ?: t3 F1 f' ~) P                    qm++;
$ b1 F* `' Z8 b3 P5 c* f& f1 ~# j           }. \# c* T8 t) W2 D$ `' x
+ }$ G. ~; ~# V/ |  X
           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);
( f  r# V; V, u* O$ q
0 h. L. z( Y: ?4 L8 m7 x           L_b=L_b_receive_double;
5 h# _: n$ }( r1 d1 B  I           lambda_b=lambda_b_receive_double;) u$ ]8 I: s% D- T: E, t% g
           h_b=h_b_receive_double;
# _! G! i' D8 ?' n  n" V           for(i=0;i<3;i++)( c, A% r  z% K* b8 C& ]
                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];" p# ~5 L1 |4 C# n
           for(i=0;i<3;i++)  D6 n( i2 @# d4 Q( @6 k- l
                    for(j=0;j<3;j++)) s% @& X/ C0 ?& T5 P2 A1 P
                 est_C_b_e_[j]=est_C_b_e_receive_double[j];: i1 w' ^& q2 D  d  \

  k; y4 }9 j7 s' ?                printf("L=%lf\n",L_b);
) p$ D0 j9 f  d- ^5 Q+ M. U                printf("lambda=%lf\n",lambda_b);2 Q; Q+ k( Z- n
                printf("h=%lf\n",h_b);
4 N" }$ E: c  |" `# ^1 C
+ w$ W8 n; ?+ Q" U+ e* r                for (i=0;i<3;i++)7 f: q# M* C" y) v( Q
                        printf("%lf\n",est_v_eb_e_[0]);
/ q% a- ^. N) q; c$ O( m3 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]);
/ _  s* _0 _1 d3 g. @2 w* I6 ]                printf("rate=%lf\n",rate);& F' e/ e8 F. \

+ x" _- `% H' N9 t                CTM_to_Euler(est_C_b_e_,eul_);
, H  Z, V+ x9 _. \. I  K                for (i=0;i<3;i++)! O" w% F& V9 `' `
                        printf("%lf\n",eul_[0]);
, b4 \1 H* w6 L. Z$ r                printf("end************************\n\n\n");
" w4 |/ ~# Q) K6 k6 g  j
, T' Z* L5 p/ n, G3 b% S" j                /**********************************************************************/# O9 w1 m4 P0 f9 K- {3 T* f

0 b# |% y, m- Q4 i            char flag[4];1 x' @) V9 b, M) N9 e) ]
: V4 V; Q5 U* v
            flag[3]=0x00;
7 ?4 A( m7 H  i0 `1 @- W' d            flag[2]=0x00;
2 @6 W' P5 Y7 A/ n0 P5 E8 w$ z( G            flag[1]=0x00;
2 j- K, T; |- ^4 ^2 `            flag[0]=0x01;
+ A+ }' G7 e7 u' ^6 r6 Z! ~& w+ y+ j- f/ e
    /* Allocate I/O buffer and init with string */7 J; i3 |- [+ K1 r& Q
    str_buf = (char *) malloc(80);1 _& C0 x2 n8 t( m2 x
    str_buf =flag;0 \) P1 w9 {3 f. |* X
" m6 i  k  j2 h+ B1 S# f
    /* Send buffer to remote CPU */* ]( I/ @. N5 m; a; @
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));6 C8 ~# n3 J. o' W

) k- h9 v; Q0 l7 f1 ~2 ~    printf((char *) myPayload);4 {' u! h! |( z; d+ m/ J
        }" G& T' Z, B3 b9 \2 d: ?3 ]
}3 \% o& t5 D6 q
! n5 u* v1 t' ]; i) K. E) B. _! H* H
    WAIT_HERE;& o5 X: J9 o/ E  V- t
}
& `8 M! I* [- z1 P$ M
作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:
: H" r) Y' z' L! w# u! q我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。
; N1 {- z1 C0 O( u. x然后我把双核通信的初始化屏蔽掉,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
: b& c& ?. `7 F' h! Z. Jsyslink 的初始化是否成功,notify 通信是否正常了?

. d9 a; A3 S# T, Y) C& f: ?( e双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:542 x8 h* ^3 @$ e
syslink 的初始化是否成功,notify 通信是否正常了?
0 `+ C) _3 }( U7 g* f
我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:20! |$ ~( }& J0 _2 f3 o0 b
我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
: Q' R. t, l4 i3 `, T; O
建议查看 UART0 及 DSP 中断控制器中断相关寄存器值 是否正确
作者: star_niubi    时间: 2016-8-21 14:56
能否说的具体一点,就是双核通信的都修改了哪些寄存器的值,这边双核裸机通信的资料很少。




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