嵌入式开发者社区

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

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。0 x( v3 m+ W; M& I( o& h: Q+ K
我是在DSP初始化这不太明白。* ]4 G% w2 l8 N% b2 ~4 ?
初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。
+ ^* {+ y( l% M! V: n5 B* K
/ I% F; T' l% x7 h. z7 n8 e" H) X" B0 W+ P9 R7 q7 Q
首先        PSCInit();//UART0使能
6 z% t- ?9 y/ A. b; vvoid PSCInit(void)
; {6 w. X7 T( o, r- a2 q( b{8 a7 N" h" K3 F8 G9 D1 ?
        // 对相应外设模块的使能也可以在 BootLoader 中完成& K' d- K/ C9 J( y
    // 使能 UART0 模块
1 M4 H  i- y1 T' }4 _$ L    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);3 M) I8 [- K& q* g# i
}
% G# C7 B+ P0 A
/ N* v( x6 L' q  a
% P7 y2 C5 k- V% T& S- ]5 X
然后是 双核通信的初始化           AppInit();
& J! M' a) F( m6 K! S+ a: tvoid AppInit(void)
* e7 U: S0 h% A9 e{
+ `" q6 X# Z1 H* F/ ~' q3 b    /* Structure to initialize IPC (see Ipc.h for definitions) */- y6 Z, h& Y9 F& W0 x
    struct IPC_cfg ipcCfg = {
* J* A, Q# G8 w% j% R0 p# q/ C            IPC_DSP0,             /* local processor Id */7 C7 _' V4 A8 M
            IPC_ARM_HOST,         /* remote processor Id */7 V  k$ }0 }# o2 K) g9 \* N; k5 ]8 v; {& c
            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */) ?3 L' w- q  y0 s$ a0 c7 d
            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */
( R% \: S/ c8 T+ \  C$ M            NUM_MAX_EVENT,        /* maximum number of events to be created *// t/ P. t# ^3 J  p
            &ipcPvMemDsp,         /* local side private IPC memory */7 S) J7 d$ w3 i) `/ N
            &ipcPvMemArm          /* remote side private IPC memory */
$ s* v1 v6 F. z: Q    };5 Q1 @. X0 c0 B, \9 L
    IntDSPINTCInit();
) P. t# x  U* ~    IPC_init(&ipcCfg);& \4 G  a6 b! F6 l. x! [6 E
    IPC_intRegister(C674X_MASK_INT5);  ?$ W0 C& e  S' T4 [, I
    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));* X1 S2 C" `8 `- W! ?# A  r4 U; u

0 \% m  a6 O% {; @    /*  Enabling interrupts for DSP C674x CPU */
: W6 W2 a% X: t3 D5 Z    IntGlobalEnable();        /* Enable C674x global interrupt */3 s  p- t5 \5 V' l' Q
    iAssert (Notify_start()); /* This will enable IPC interrupt */
5 N" N1 h0 Y/ J, N" x. r& P) k}- M! k3 H6 F% |- k# m9 M

8 J' w& p  q) U/ F然后是  5 r& E9 b$ ^8 x- `3 S  l4 f
            // UART 初始化, F; k2 P" K, E/ w
            UARTInit();
* o4 l5 ^0 S. n) v4 v" {5 a3 _3 `$ e, `) h1 @/ m5 v
            // UART 中断初始化1 b9 E9 C) D1 v' H( y# q
            UARTInterruptInit();
, c  V1 z. j" T* u- V; A4 ^8 v

8 m. f, g* _9 Q% ~5 m9 S  d! {' i& g" i  w1 B* h! i
void UARTInit(void)
: a: K( p  S& W3 ?- V% B{
% x+ x/ U  G& a$ D0 d: b! s        // 配置 UART0 参数
' t8 F4 d& m& ], ?# s        // 波特率 115200 数据位 8 停止位 1 无校验位
( ], h, E! S' G8 ]; R  @$ A    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,( T# g( O; f# O  u' ^. P4 Y
                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);/ g. h2 e. o7 I* O6 m
        // 使能 UART0
6 ~! J) i5 ], w6 c        UARTEnable(SOC_UART_0_REGS);  @9 |/ g3 M  H9 w+ @3 ]

) N1 K0 L7 h6 m1 l  s9 q: T+ j    // 使能接收 / 发送 FIFO2 \$ L( o- U- m! K: h( v0 \
//    UARTFIFOEnable(SOC_UART_0_REGS);- N7 t( K% P6 O$ J7 W1 \. }9 ?
; h9 O3 j1 ]& {( b
        UARTFIFODisable(SOC_UART_0_REGS);; A4 d8 F8 X& p8 p) h9 t5 Z, n

' W4 ~1 a5 D7 G& x5 G. k    // 设置 FIFO 级别     接收FIFO的级别! C9 R' K+ A0 ^. |3 H6 Y- C
//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);2 d+ i' `2 h# s2 w+ T
}
: u* G/ M" T2 Q2 h0 z! [

0 j1 A1 j  t" @) |3 Y! Y6 n9 h4 d9 `7 o7 N
void UARTInterruptInit(void)1 w+ n7 L, ?6 e7 g; |
{: q, |4 {% O: ?2 w) I
        IntRegister(C674X_MASK_INT4, UARTIsr);; o' Y/ }/ j$ H' i2 N7 u2 Y
        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);
0 f2 E. X: \# [8 E! L* G% j        IntEnable(C674X_MASK_INT4);
- _( H  j6 c9 ]2 {, ~& m, n' Y7 I( H) [+ d' Z% z
        // 使能中断( G5 r- q8 v$ w  O! |% d% x# z: I
        unsigned int intFlags = 0;
; ~6 L( M1 U9 u( A: h' I1 U    intFlags |= (UART_INT_LINE_STAT  |  \
5 V, a# d& x) x2 |) `                 UART_INT_TX_EMPTY |    \
! O9 o) u  C) F3 P* r( ^- A2 e                 UART_INT_RXDATA_CTI);
& k$ Z  |- @+ \# N: J    UARTIntEnable(SOC_UART_0_REGS, intFlags);" o# w3 B: i1 |: ^1 I
}
  T) [/ e" u5 p

2 s) v$ g; k+ e+ X
* c: W1 x. n5 M- {4 V2 ~: Mvoid UARTIsr()) n( U0 b  F* L
{
4 z% Q! r/ J; ~9 y& v" }    static unsigned int length = sizeof(txArray);
8 T5 q# x5 _# _, [4 H' i9 ?5 x    static unsigned int count = 0;
* s3 s$ F" w% K# T( v/ e    unsigned int int_id = 0;
8 L# m. z$ |; r/ R5 ~2 \5 V& \  F5 A! u) l0 b8 L6 x# d

; w* R$ v) R8 }6 f1 Z, u) ~' V" g2 o0 D
    // 确定中断源
1 B: y6 s4 |, y. g0 b  Q/ g0 r+ M- t# i, [    int_id = UARTIntStatus(SOC_UART_0_REGS);
1 \4 b  M. A9 W, h. u. S; f4 K, F) q$ Q5 q1 D8 A; H
    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。
; [7 C- p9 R9 }6 S& H, r4 l# c. X: X7 Z  h9 T$ C7 b

+ i6 }% H8 ~+ [- e    // 清除 UART2 系统中断
1 n9 _8 D% y: b, Z/ u    IntEventClear(SYS_INT_UART0_INT);
; k) _( P. Q! M( ^4 p! @. f0 ^* w* v: l  i3 F! ^
    // 发送中断8 G. k5 O  @3 d' a9 X$ }. Y
    if(UART_INTID_TX_EMPTY == int_id)
6 f+ j; M6 {4 v0 [$ k    {5 X# }  b" L0 r7 n' ^. \, W
        if(0 < length)
8 V5 E9 P1 {9 e        {
* Z: J' ?9 g7 R, c            // 写一个字节到 THR$ |) H" i2 ~- W: b# c5 @
            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);
0 L9 G3 O) U, W" T) e            length--;
' @$ B& \  B$ U" `* m# T/ {, k            count++;( c; w  `$ ~2 D$ G& O
        }
+ {4 i* E  R0 `        if(0 == length)
" Y, ~$ i' f6 J5 N1 P; d; p        {1 f3 D0 w- y6 E2 P9 D1 ^
            // 禁用发送中断; y, E5 u  D: L4 Z
            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);: F/ A  Q) \; a- s" V) x, z' `4 p
        }# x8 t8 }$ u/ G9 a
     }* g% _, G# [& W" P: a: F: j/ Z, ?

. A& W7 n: k0 k; l4 L+ o. o3 e9 K    // 接收中断
- w( g) K( p  ~' c1 F  A8 Q3 G    if(UART_INTID_RX_DATA == int_id)' f: ?. n9 }7 I
    {
6 }: |( l5 u& ^: l& Y# D        if(status_a0==0)1 P% d% T* C" c4 U- L/ K5 E
        {1 {( ]6 E% v( ^. F8 D6 P
                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
2 _% L" l. m2 T& |- S/ P                if(a[0]=='#')
, p" r2 L9 B2 S4 J3 n# s                {
0 g0 p8 ^" p9 H& ?                        status_a0=0x01;. ~  Y4 L/ ^/ w& C  ^
                        status_a1=0x01;
- l9 Q7 ?% T( U( H                }
3 ?7 _, x/ Z- c  o        }4 i( L, V9 T2 |: x) n; J) R
        if(status_a1==0x01), A3 r0 J& Z# E" Q7 ~7 T
        {
/ T3 V& n7 z% [" ^. i                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
$ t1 D  A5 k" A+ Y                if(a[1]=='R')( A8 v* k5 w- @# a" |  J6 m1 h
                {7 Y. c9 F+ c% {# c4 h8 M9 j0 J
                        status_a1=0;
* `' s% ?) E' h: O9 n' [                        status_a2=0x01;
: k1 q0 k5 Z1 c+ ~7 K4 t" M$ _                }5 e2 i% Z, m: a" C$ \1 B
        }
3 h1 C7 E( P! \& ~) o        if(status_a2==0x01)' F7 U( A- [3 A
        {
7 v. f! S2 @, O7 R3 c: B                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
6 K* g* t; ]4 C: C! x                if(a[2]=='A')
* l; g' }$ p! T- j                {
' K- j0 r! i0 M0 a0 Z/ G                        status_a2=0;
% F! n0 ?5 w- ?9 A; \3 l                        status_a3=0x01;
, @/ p# |0 a$ d2 ?                }" G- S8 I+ e( {
        }5 U: o- l8 g  p9 Q4 a
        if(status_a3==0x01)
6 m4 n  X% R- R7 T2 |        {
, Q8 S, M4 I/ N; l- [7 W; q& ^  S                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
/ a) P( a3 l" E) f2 p1 `( S  H! k                if(a[3]=='N')
, @/ Z+ x1 n7 v                {+ Z* d1 c7 T; Q
                        status_a3=0;
5 ~( @; T/ B2 d: N# _                        status_a4=0x01;- ~: `  d' r4 m6 g3 w. c
                }1 u' h8 ]! q6 M/ V8 F2 G
        }
9 ]9 I5 B4 S; w" [7 y3 y' A9 o        if(status_a4==0x01)
  i6 J, h2 t6 ^) D( L2 R        {/ h3 t5 Y& R% _6 B6 B
                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
9 y9 Q. f' [9 b9 s6 h6 o* J                if(a[4]=='G')# E: v1 F! \- `# D4 k- N* d
                {$ N& H: {2 s/ n  C
                        status_a4=0;
) n9 l/ h+ r0 S" `& U" k$ O  U                        status_a5=0x01;
( ~5 U9 e7 k* p- g. h                }0 S7 z1 q! v6 @8 W$ f( `
        }" @5 i3 {7 \! q* ~! }' y. J8 b
        if(status_a5==0x01)7 U6 @7 |$ w9 ?- U8 t
        {
+ k1 Z- v( Z+ u                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
' v: x! H9 l# U0 `. W" t/ f0 T# h4 R" r                if(a[5]=='E')
5 X* j( J) e& l                {9 V" z$ x. S, m# ~
                        status_a5=0;
! m0 A7 B1 N; U6 a& ]4 d                        status_OK=0x01;' h% G" q' \* _1 c" B9 k0 q. [
                }
4 U/ x; U( [+ v) M/ o8 s        }
/ z# B8 h) ?6 Y  R8 N. Y5 e            if(status_OK==0x01)
6 W3 d$ j: n2 p6 C5 b: A0 ?# w        {6 Q5 C% V. d7 C3 Y5 |5 F
                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);; `0 t3 T$ w* [/ \1 a  S' [3 D
                        lengthrx++;' A' T. G# @! O$ j. u
                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值)( M. J' _: A# d, y5 G% g7 m
                        {0 D+ X& C% h) y' e9 f2 s5 b- Z6 P' |+ h
                                RecState=0x01;
2 G- C( l5 m& s                        }8 [$ K& c  |) @% ~8 z
         }
* h& z) {. @4 g: E+ N
5 L/ m5 {' I# U7 _     }
) c& H% j7 y0 W4 R) K
; B8 _+ d, C3 B    // 接收错误, ~- Z/ R  q' W4 E
    if(UART_INTID_RX_LINE_STAT == int_id)
. Z3 {9 A/ E& G. K    {
0 e5 m+ T+ x" `2 |' |# k        while(UARTRxErrorGet(SOC_UART_0_REGS))
9 Q; y% @' J2 N1 ?/ x8 h- {2 \        {$ O. x* d" m6 I
            // 从 RBR 读一个字节1 x  g6 M1 Y* h; j: o& A
            UARTCharGetNonBlocking(SOC_UART_0_REGS);
0 F4 }' R. N) T! D4 J        }2 a7 }/ C* q2 I, W* r) Z
    }% R0 s  E) q$ i* u/ U  ]6 W

, \5 H. B; S* q    return;3 i5 x5 d. `4 a% b0 \4 S
}
* O; S, C+ D: t' C# R+ H* q  a, o/ y3 g  ?" X) K+ q; l: W, |
& _8 H5 ?+ T: q9 D  Z5 C
6 e  K. q# k' r1 r- e

作者: Jackindata    时间: 2016-8-17 11:13
hi,
/ C  F  p7 r) t$ Y6 u/ [
# m2 R, U- a: e2 L) fUART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。% v, X& ^8 y0 o$ W" |8 l/ `2 G
' K- D* Y2 \$ i: p2 I! \0 v" K
要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:132 ]0 `3 u9 B( P: g
hi,# f4 V* s7 b3 b$ r/ D* `6 s

1 I' R( Y0 D. q. j& ZUART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...

# \" y- N. }$ Zvoid main (void)! }2 I$ J$ B% I, `0 C
{
* K3 g2 }/ ?7 Z4 ?2 I        int i,j;
7 I0 S. L' m8 Y" W  [! M    char *str_buf;
% x, N0 S8 y% T6 D5 c    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];% D+ ^" D# G$ e8 H: G. ~& k' k  v: R
        double est_L_b_=0;
  L$ ~$ a/ V% x( C4 }1 |        double est_lambda_b_=0;; M( d8 d& b; M& k6 e9 p7 ~
        double eul_[3][1]={0};
6 W8 ?- M) k0 H/ j        double est_v_eb_e_[3][1]={0};' D2 B1 c0 ~, T: V
        double est_C_b_e_[3][3]={0};
6 J4 M- u0 w. t, x- d0 n% d7 {    char *qm;
" e! \- @0 R3 T    char rec[70];# O6 f& B! S% a! z
        double L_b=0;
# E& Y$ v" e" ^        double lambda_b=0;; h( |( K, r! k" e9 _
        double h_b=0;
* N8 O, N. L7 v/ H/ ?; X        double rate;
4 M& q0 T6 Y: d) w
3 C! u( D6 H) G% s* |' m$ n, {7 w9 i4 x( g6 j" f# P! y+ U
        // 外设使能配置3 P. H" o/ J. c6 ?
        PSCInit();/ x; A( W, }( S  E8 B
4 b# G3 G: W  R# d, Y% C4 }8 G: f0 J
        AppInit();" J( r6 A0 j4 q. U1 s- N

& _" b5 F8 l  G+ f; i        // UART 初始化
' N/ `' ~; x5 D        UARTInit();: p% G# r6 ?4 C3 z
# @5 B) k0 h6 U
        // UART 中断初始化* t" V; l7 `" S& v% ^" U0 o
        UARTInterruptInit();
8 t% @" k% [# M& e8 |" i6 R$ C$ }: M0 ~1 e' F
    evtRcvd = 0;
+ J) K: g  t3 S. p; [9 ~6 j' l    RecState=0;9 `0 W4 ]* S+ u* e. U; S9 V
    /* Initialize */5 B: F! b4 F  V
& H5 m% e! F3 d' l7 R3 v
    printf("DSP subsystem ready\n");
5 i, \0 J( a: F7 K5 H7 ]  ?' `) [* Z
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));
8 S/ E* j- n' q' o$ P0 d  E1 _" [
for(;;), D& }% k4 N. q4 r  T
{: y5 R% V" v5 m2 i% B
        if((RecState&0x01)!=0)  A+ h: I) @( }1 O, T; y* u; b
        {8 w; o- t0 }% n% V, O3 Z' Q
                printf("liuzhenxing\n");2 V' l7 x8 v" R+ O& c' S
        }* P$ y* K- n/ C2 W# U6 m
        else
$ C- f5 k' _. ~        {
  w  _  q* u# ~       wait_event();" q: i" [2 g: K. `; d

8 ]* Q  A0 [  l- D$ C  i/ O           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针5 Z+ e# {- l: N/ k& Y
4 A/ m0 Y" l7 X0 e2 l3 t3 F! c8 A
           for(i=0;i<60;i++)
" p* j4 y. d  v4 n6 s           {
% N, n% c' q! ?9 |  {3 H. I                    rec=*qm;2 i1 b9 a2 w: F
                    qm++;
! V" _* J. B( ^8 b           }$ p$ Y$ t! j9 R) C. g8 j, g
. G: a# y; a: u8 j* v5 b1 m7 f
           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);
8 M  o; v% l, T) ~. i( k2 b  V
! y, R& D. M/ ]" i# d/ z' e+ J+ l           L_b=L_b_receive_double;+ s/ `1 b8 s9 z0 {2 _: e% @
           lambda_b=lambda_b_receive_double;$ E6 S1 P& a# F4 o/ o& }
           h_b=h_b_receive_double;% W: L2 u8 I( Q
           for(i=0;i<3;i++)
0 i& G6 r" S! C8 h/ @. W                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];+ g0 [5 Q$ M; E% R6 C
           for(i=0;i<3;i++)
; d1 D4 y+ |0 q) {1 n$ a9 l. b6 o                    for(j=0;j<3;j++)+ |5 _3 h3 s  B; F0 ^1 }+ m
                 est_C_b_e_[j]=est_C_b_e_receive_double[j];3 d, U. U5 I4 {8 d* w$ F; ]: F
5 x* `; c0 C2 d: F( O; L! l
                printf("L=%lf\n",L_b);
& Z3 k/ Z" I$ X                printf("lambda=%lf\n",lambda_b);' m, \- p& t( t4 N
                printf("h=%lf\n",h_b);9 f2 I6 x1 b1 P, f# Y7 b
% U3 O8 G; `5 G" {
                for (i=0;i<3;i++)
  {& }) E  m) i2 f                        printf("%lf\n",est_v_eb_e_[0]);. p+ G; o* H. z2 N5 E, I
                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]);
1 d3 W- M0 y1 W! m% y3 I                printf("rate=%lf\n",rate);
. h5 Z8 K. ]: k1 k+ ]: w
( K8 k  t+ X1 L$ y0 P                CTM_to_Euler(est_C_b_e_,eul_);1 _. ^$ G8 ^+ x, u
                for (i=0;i<3;i++)' H: l' S; @' l
                        printf("%lf\n",eul_[0]);  B+ O% z: o/ E& m3 Y; s
                printf("end************************\n\n\n");
8 A& y8 x) \' O3 W7 [4 z* B, M* R7 m; `0 \/ o
                /**********************************************************************/5 H) y, U4 ?+ Z; D4 s- Q
: K0 E/ q: B+ T8 Y
            char flag[4];/ @  r- Y. U3 j/ ?  I

0 }7 w5 j6 b. M8 s7 C! x7 m2 [            flag[3]=0x00;8 H7 l$ o, C. [1 l& _# \
            flag[2]=0x00;9 y: Z$ k$ F/ ?" ]: B% Y- A7 `" n: ~
            flag[1]=0x00;' K, F1 U4 }9 b( n1 N
            flag[0]=0x01;
1 z; C9 C" Q' Y7 ~. N/ Y, H+ T2 K0 a, \8 d
    /* Allocate I/O buffer and init with string */) H% D3 f9 }8 K- J+ Z. |
    str_buf = (char *) malloc(80);
; C; `" _0 ~& W- E& X7 f5 X* F7 k    str_buf =flag;( O; L( T$ p6 p* j* G

; O- J: Y, S( T$ i5 Y$ |    /* Send buffer to remote CPU */
; ]- F" t  A8 b: l( j    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));
, _( t2 V$ v" U6 Z" e; D
3 U' E: ^- I3 A7 D3 \  u# w    printf((char *) myPayload);
2 e3 r( e5 x% L& e6 W5 E2 u& }        }
, P9 J% n- j% \+ F}' L; g7 @+ e4 g9 {) i7 o( V: a+ \; m' Z" U

& S( [* z( \" K& p; ?  U4 {( e    WAIT_HERE;
8 d9 |2 _4 M! ]1 ^2 o! ^0 q2 R}, Q, I! V( u/ g

作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:8 y2 o+ u2 \. F1 D
我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。
. d# I+ v4 z, I然后我把双核通信的初始化屏蔽掉,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! d' a" U- t6 |5 asyslink 的初始化是否成功,notify 通信是否正常了?

, L# q/ [% g5 g. R% k双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:543 e2 t1 K* r) g1 f" H# A
syslink 的初始化是否成功,notify 通信是否正常了?

3 ^! a' [5 x9 U% [& Y我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:20
7 C0 R. ?" g' b) ]我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
; V$ I# @5 r4 p8 s3 A; D5 g
建议查看 UART0 及 DSP 中断控制器中断相关寄存器值 是否正确
作者: star_niubi    时间: 2016-8-21 14:56
能否说的具体一点,就是双核通信的都修改了哪些寄存器的值,这边双核裸机通信的资料很少。




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