嵌入式开发者社区

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

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。% M+ w5 r! c  a" Y* `+ s, o
我是在DSP初始化这不太明白。
) Q# G; e* P2 E( P! j( [) z初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。
. s0 N/ v8 G! i$ k% F7 p/ a& q) u) `5 s

4 H3 k! o9 `5 [3 b- m8 o首先        PSCInit();//UART0使能
: z: e9 }: z- `1 H' L; N8 O4 hvoid PSCInit(void)
; e0 q5 u. D6 Y0 N8 G7 A{- \% B* B9 \! m* Z1 w; z/ ~
        // 对相应外设模块的使能也可以在 BootLoader 中完成2 q5 H0 J9 E: p  N- j5 @
    // 使能 UART0 模块. \# V9 k- _. @" z( f/ A
    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);2 I( p( E1 Y4 o0 |
}
* Z9 K9 d" q: h0 q: _
! ^9 v8 U+ X' I4 X) w

7 t7 `9 l. i: \& ]7 R4 F然后是 双核通信的初始化           AppInit();( ~) V% C) k% A. T
void AppInit(void)
  o) d3 X7 P5 I2 o* m& A{
7 Q& G: d* y6 f6 }6 v- q    /* Structure to initialize IPC (see Ipc.h for definitions) */
; {& c# c  O8 n# y  B6 l: Q. u    struct IPC_cfg ipcCfg = {
! Y1 i8 d. z! `* N            IPC_DSP0,             /* local processor Id */% D! H- e* Y" `, S3 V
            IPC_ARM_HOST,         /* remote processor Id */) _5 d4 K; P8 C5 Q5 R7 ]
            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */
& T2 }! q. e$ N4 T3 ^5 W) m            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */
# R; }1 a9 L. ^( ^            NUM_MAX_EVENT,        /* maximum number of events to be created */- J" F2 M( Q2 z( a2 e: }
            &ipcPvMemDsp,         /* local side private IPC memory */. C  `; O1 c2 M  b1 w
            &ipcPvMemArm          /* remote side private IPC memory */
6 y9 z* i2 V7 y    };
3 U% ?/ H3 e- f% }    IntDSPINTCInit();
" |, x( \4 a: p% C" G7 C! ^6 K    IPC_init(&ipcCfg);
" A2 `7 i( p' V# _9 k7 U. R$ v5 a2 z    IPC_intRegister(C674X_MASK_INT5);' ^) e& ~+ {7 N/ K
    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));
$ s4 J  m8 I  d: A5 P/ g, L" h% ^% `2 P
    /*  Enabling interrupts for DSP C674x CPU */: V( {0 E6 R7 \, |* f
    IntGlobalEnable();        /* Enable C674x global interrupt */
5 H$ Y+ i7 w4 o: W    iAssert (Notify_start()); /* This will enable IPC interrupt */
$ p+ o4 m- A- y8 K# ]( i}
* w% z( |, i. D6 e0 B
/ [0 n$ B8 N3 m( ?9 U
然后是  
8 g- `4 b) C* C9 P            // UART 初始化
' A: E& ?9 d2 p( w3 p8 ?% |            UARTInit();
4 W0 `0 H5 g, q5 L1 Q* [7 A% X9 c9 w( n) v2 l4 ^- l, B; K
            // UART 中断初始化  [6 ]: j; Q9 Q7 I% S3 a" K
            UARTInterruptInit();- h# X; x) x- y

2 i  `! R; e; V$ J" K& C
7 ^% _/ K0 e* E. u: @) m1 o! H2 T! e3 tvoid UARTInit(void)
7 z/ M) p2 s/ [9 \# {+ W1 v- f{: f3 ^/ }" ]3 V! F' d% R! v* i) |
        // 配置 UART0 参数2 h7 }* U0 O9 g) x' }5 z0 W& w' g* Y
        // 波特率 115200 数据位 8 停止位 1 无校验位
9 m5 a) i7 V2 {    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,
; U5 f- L# {+ O, _2 e                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);* Y% V8 s7 G  s2 ~% m: F( f2 \
        // 使能 UART0# A4 y9 V. V  w6 {% |
        UARTEnable(SOC_UART_0_REGS);
9 z2 h& G5 Q, N6 x
( ?* L# y3 j4 c& a( a* @    // 使能接收 / 发送 FIFO
: ^1 H7 q+ x) L//    UARTFIFOEnable(SOC_UART_0_REGS);
( I( d5 U* D0 j4 V. G' O- d9 t% F& h8 g' G. R* l. B; X! y
        UARTFIFODisable(SOC_UART_0_REGS);
3 {7 O) R/ g, h9 V! N$ }4 c
( b; F% ?9 ?" @    // 设置 FIFO 级别     接收FIFO的级别
4 N; v$ p1 X( n" u//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);) m/ R% h+ w6 w* C! ^
}
, c4 W0 n$ K% i6 s
4 N" j# O( f$ F* n5 p

9 W9 ]& V  p- m( Q" j  y) gvoid UARTInterruptInit(void)# c4 C' n( C; m  ~5 t- \/ U
{) P( D7 j; j! m. M$ z# I% T
        IntRegister(C674X_MASK_INT4, UARTIsr);0 k# L0 Q9 R6 S& C( s+ V
        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);: d. `5 @- z7 g# F3 ]$ g* S
        IntEnable(C674X_MASK_INT4);
3 j1 G& ^: P) ^. v$ N; c. ?* W: F) @1 ?7 g" u  J, e
        // 使能中断
  D2 }- ?$ |( W+ w$ ]0 S' C, v        unsigned int intFlags = 0;
( s. ~1 E% E( S$ |- K, ]! c    intFlags |= (UART_INT_LINE_STAT  |  \
' [' v# t7 a6 }                 UART_INT_TX_EMPTY |    \1 s9 C  l. y0 L% T; e6 i" i$ b: ~
                 UART_INT_RXDATA_CTI);, ]0 C6 ~4 k5 g0 z
    UARTIntEnable(SOC_UART_0_REGS, intFlags);
! A) r% t7 {6 ^* r! p' I}
1 Y& J/ W; ~. `. t
  H; `3 F: X0 F& D

# _+ L' F/ G  [. v& c( Pvoid UARTIsr()5 y5 J) u/ R$ W8 z& h" a
{
$ E1 o  i0 R4 u7 c. e7 N- O9 i    static unsigned int length = sizeof(txArray);# V3 G* c) r0 R/ ]5 ]6 `. q
    static unsigned int count = 0;
9 y4 j, I. R2 o! K3 r& _    unsigned int int_id = 0;
2 H& z/ z0 p8 o0 I/ B* P" _2 t! Y3 |8 g3 P" i+ P! z

& G3 g0 D) H1 S5 {
8 J) A4 N9 |( a) r- E% E/ M8 b    // 确定中断源3 r* i- ]) M6 t1 n( m2 W
    int_id = UARTIntStatus(SOC_UART_0_REGS);
% S4 b6 a- q/ c, e+ Y. ?  m
6 w  k! K9 ?% B. A    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。7 _& ]/ f* I3 j5 v8 S% {
: q/ L2 O- w! X

& Z* d- j; ~- V: }; C$ K% u    // 清除 UART2 系统中断
* W% L, o% R) q$ i    IntEventClear(SYS_INT_UART0_INT);
; K0 m" L$ M3 s% g1 r- R
! U3 Q; M% S- o* |    // 发送中断. j! ]9 ~: I7 j
    if(UART_INTID_TX_EMPTY == int_id)
" |, {8 Z2 m5 M$ y    {$ m9 E, r$ }7 y% @  y3 p6 F) e
        if(0 < length)% \" a/ g: W) n1 z" @  _0 J* q9 Q
        {
$ d8 t+ R% K( u# M' ?            // 写一个字节到 THR/ B2 D7 b+ Q& D7 I6 s' z$ t( a
            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);
% ~' d8 h$ {' |: G$ J9 Q. S6 o            length--;; C8 v, F: J& L# d
            count++;  M" C' M/ z% ]- {4 B5 l& x
        }
4 }# m: K; B7 r/ _        if(0 == length)
$ L  K: n- ~. c7 ?: L        {+ {* {- d: T* S; g7 V7 g/ q
            // 禁用发送中断
. _0 H% ?1 I9 v) v! U1 V            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);
, T3 |# F0 g; f        }
/ r! \1 i) a' R+ v5 r     }
& N' g  Y& K7 s' g2 f- v8 v0 y2 O7 _% T/ {$ b+ B
    // 接收中断
# P8 A3 O2 }/ c# P( x    if(UART_INTID_RX_DATA == int_id)/ p. X  B% W$ n, u9 z+ f
    {- p: W! C/ }' {3 ~. ~% w3 H& M
        if(status_a0==0)
8 [# C) U9 s6 v4 ?! t* Q, T# S        {5 U. A; a+ z/ V2 t: `  Z" P
                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
8 }6 A: t9 n" A                if(a[0]=='#')
. j. A1 ^5 A+ v                {+ y$ k! A( e) s+ f7 N
                        status_a0=0x01;2 z& M% f8 `0 o2 v' K
                        status_a1=0x01;
( i0 b+ u' y: d                }
9 [+ [8 l9 B. z* I+ r# V, J/ f5 v. Y        }
( W6 E( f- W0 X% I+ Y        if(status_a1==0x01)5 m, b" X# ]0 t6 }+ C) k7 m8 C
        {
" j- K; f* e: o9 u5 Q5 N) w" j                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);/ h+ e* |! H& I1 M. k& Q
                if(a[1]=='R')
! d" S- M+ I' ^, i; b0 h                {! Y0 \8 u4 P- J, [& {. a* C
                        status_a1=0;
; P* S5 \: C/ _1 Y                        status_a2=0x01;& V' ?( W- m% P6 J* v; T
                }
9 |& @( Y" w& ]  U+ t! n        }
. B( N4 p. ^9 X+ \- X6 ~        if(status_a2==0x01)! z6 s3 ?" X3 T& ?% L
        {; ]2 L" Q: y+ _) B4 v0 s
                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
9 v8 ?' Y* C2 `( B9 d  J; `! O# h/ L                if(a[2]=='A')
7 S" _. F: G, N0 _                {
& i( s: n8 g% ?9 Y- L( p                        status_a2=0;
/ P5 c1 `5 L$ n' s3 d                        status_a3=0x01;
  H; R" H/ f8 z7 [) h3 m0 e" N                }
3 E7 e7 T( W+ ^  W) t( {        }) N' X3 o8 }: }! Q' o; ~: l
        if(status_a3==0x01)
4 {8 }" u- `9 c: @' w1 ]5 A        {6 R4 w! k, J0 {. c$ c
                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);& c9 _; {5 T. s9 I$ M' ~: D0 h
                if(a[3]=='N')5 S+ b$ L0 L; P: z, ~8 q, R* U
                {( M" {- g4 W/ O. d  f
                        status_a3=0;
8 l6 p6 v  O3 A                        status_a4=0x01;
; y( T! v5 P" T6 Y: I6 o                }
8 C& r" H. N% Q/ G        }
  D) z, m; A3 t% X4 u: a        if(status_a4==0x01)
8 J) I" F9 k+ Y5 s4 _6 A        {
* B8 x7 F& Y* Z! x                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);- e# U& l3 W3 W1 [" u
                if(a[4]=='G')
1 o# ]! g" j1 |* F, V! `' F/ J% {# l                {, M2 ~, l' }) A
                        status_a4=0;
: Y) w  e. q" y' ]1 I                        status_a5=0x01;
; v# Q8 F1 P8 q! O: z                }
* x' N' w" g" y        }
, h# [2 S* V. k: E$ S" h/ T        if(status_a5==0x01)
: d  }& |, d$ p* A, Y        {$ A( J' G: C$ z' ?& K2 u
                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
, b" [4 o( g' ~" ]8 E# g                if(a[5]=='E')
1 [+ ?9 b2 t3 ^9 ^/ i; Z                {0 N; f2 x0 f/ v2 X  @
                        status_a5=0;% }* C" q: ]8 n1 g* ?& E' f
                        status_OK=0x01;& S0 D8 @4 ]8 {2 n9 j) i# E
                }5 b5 v! O3 r% f- Z, ~. G# B& s
        }
! t3 P* `* }$ y6 `/ N8 p            if(status_OK==0x01)+ n4 `1 M. r: S4 z4 N
        {% B/ j# D* b7 x# R/ o0 ~! H
                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);- r( D" B5 o& ?3 T: U
                        lengthrx++;
: A% {2 Z, S; Y( V                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值)
. k" b$ Z& \( f% y+ {% u                        {) |: F' w0 T4 k5 G, E) H
                                RecState=0x01;
' f4 e$ t2 Q# C* ]9 ~, D) o$ m                        }
2 ?8 }  Y9 B3 v9 v2 k# A! t         }
2 [) ]1 [% [5 M* s1 m& K9 N
$ o$ M4 m8 u, I4 K0 w     }
% f4 r  b5 O8 f% c
! F: ?9 ?3 E2 E$ v+ L. |    // 接收错误
9 [, x  I" O0 z! g3 }: q    if(UART_INTID_RX_LINE_STAT == int_id), l$ B6 I- {6 k" c7 [6 L7 _# C0 x
    {7 c6 e4 E9 w* w2 w$ i
        while(UARTRxErrorGet(SOC_UART_0_REGS)); S( Y5 _( l* w
        {
. K: P; s/ }# S            // 从 RBR 读一个字节
2 L* l" T8 W3 ]; K            UARTCharGetNonBlocking(SOC_UART_0_REGS);( ^* _* S* k6 W
        }) X6 b# x) x( D6 O% x
    }4 k# x7 H: c% w

9 d0 w7 N4 k3 X: B+ j/ n1 s    return;
  P3 v0 V, a' m: k* n# ]5 G, d}& Y5 e$ W: \) A4 P* E

# D8 O. B0 n8 S  W. h3 c; x  ^: l2 y

0 \; V3 q  w- s# R0 B  N1 H0 d% N9 t. \3 F+ b3 V9 q/ k

作者: Jackindata    时间: 2016-8-17 11:13
hi,
% M( K$ F( c+ u9 H" a" p
( ]2 c, P5 z: j6 ~3 |6 u8 JUART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。
" T# |/ ^8 c# Y& W8 o0 j: @
1 s$ B# B9 W2 v4 n$ P要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:13! T, _( B; d  g) h3 ^
hi,( F  ?9 m' D% g1 p& d: Y
( J7 ]5 T! d- V7 M  s+ f0 }7 S
UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...

# f% h8 T5 N3 j6 gvoid main (void)7 n. i' w4 R9 w3 h+ M1 C
{6 [) f8 d8 J2 R$ J/ c( h
        int i,j;
9 ~+ [% z) r' t7 X& ^' K    char *str_buf;: [, k5 }9 W+ s
    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];3 J7 ?+ \$ R# w  D7 W& x9 T
        double est_L_b_=0;2 K  y+ P4 t, G
        double est_lambda_b_=0;
! g0 V0 I' [2 z# A, f! r        double eul_[3][1]={0};8 {6 @7 W3 ~$ p6 i3 W+ G
        double est_v_eb_e_[3][1]={0};) j3 d8 T4 I" A( [5 L
        double est_C_b_e_[3][3]={0};1 K; [, c; I. n/ C+ v+ H4 @0 F- ^
    char *qm;# F4 A# M% H( A  \* z) K6 f3 r0 r
    char rec[70];; D# O* n! l% c" v9 ^
        double L_b=0;
* M& d- b2 f2 \: I' n' F5 b" W        double lambda_b=0;
% P+ k* O  M8 J5 V        double h_b=0;% _# q' J+ t" C( i3 X5 {
        double rate;
, r3 g( o. A$ E$ n: Y) c: b% {9 Y  N( f

3 b. i& w5 {) F- x3 ^8 u        // 外设使能配置
5 d% h2 Q# L' W% P* C5 i        PSCInit();
. O/ x+ P2 U) q' v; r! m2 P
  ]0 F! S& u+ A& n2 \        AppInit();
4 v1 \# _# i1 V9 X+ m  ]% O4 o6 m, v1 I1 ~/ r8 N6 L: g
        // UART 初始化
: D  j- p* Z5 t$ A1 b) Q1 p        UARTInit();! P- A  G. [. I
7 @. ^% z+ S  ?7 m9 ]9 f5 d0 G5 b
        // UART 中断初始化% {$ v+ m' d( m+ A5 p. W3 S9 V6 }1 h
        UARTInterruptInit();5 Z9 x/ o+ q6 T9 U  m
6 F# M* @) ?# S
    evtRcvd = 0;
# X& @& F& q6 i0 {' U: y5 F    RecState=0;9 z" f& r2 F$ _3 O7 A8 F
    /* Initialize */0 g  Y( S( x+ D4 u0 X
/ |& E2 T' O9 K2 c
    printf("DSP subsystem ready\n");1 I" o( F" {$ i
; H9 J) w' l% T8 w* p- o
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));
  h- l9 u; w5 `8 {
$ ]5 j6 s- |0 f2 T4 |for(;;)9 E# q# J+ o& C6 }
{5 j& T! U7 t% L/ W" ]" T5 O4 N
        if((RecState&0x01)!=0)
4 _1 g  C* A. Q0 x2 n& C        {
/ Y+ H: E; ]1 ~+ x$ d) r) S                printf("liuzhenxing\n");
& C- d4 W3 H# C% Y) {" g        }/ O5 l" q) v0 ~+ v/ k, `
        else
/ j; m& d' `3 x3 G9 H! ]# f        {
5 e3 I; h5 T" Z; n* i7 M1 w! [       wait_event();
8 E; \7 ^: l# Y& }5 U# H/ F4 ^  l+ ^: E1 H. {$ ?+ o
           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针+ }6 x/ t2 C. O- o3 W& F4 J* [! r
  n, L$ H- }: m5 }& @- }* H0 |
           for(i=0;i<60;i++)+ P7 H- F4 S- T$ J6 d
           {+ R( ^# B* `8 p* J7 ]3 U
                    rec=*qm;% s" f/ [* c4 R2 z* A
                    qm++;; x! d1 f% O$ U, m+ x8 b2 p
           }
. ~' p; d. X8 }% U1 r2 w, X; ^, j4 |  r5 N$ i3 U
           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);9 Y) w- `  M  _8 ?* O9 K* S
4 ^& p- y/ o* Z( ?
           L_b=L_b_receive_double;6 Z0 a# m3 h- s  t( F9 z. t0 i
           lambda_b=lambda_b_receive_double;* M: T5 h: U) Y- h. v+ @- S$ P
           h_b=h_b_receive_double;
% i, s( `* `# {# N0 _3 I           for(i=0;i<3;i++)
' {! T" k* o' F6 ]; F                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];; f- L0 ~+ ^6 r9 N- t+ g
           for(i=0;i<3;i++)
( K, {. y. c3 S/ l6 A3 @                    for(j=0;j<3;j++)4 G1 Z2 A5 j5 u  R- k: [5 g# t+ `
                 est_C_b_e_[j]=est_C_b_e_receive_double[j];+ }3 d8 K) W2 E  L
' ~4 ]0 K! A  Y: q) ^
                printf("L=%lf\n",L_b);0 @- f0 M, R$ {# w+ W2 F& V
                printf("lambda=%lf\n",lambda_b);
* A/ ^7 C7 `# n' v- E* L                printf("h=%lf\n",h_b);
: h5 n- r7 p. @" D7 V# v8 O  a5 `! [
                for (i=0;i<3;i++)% e: p% Y" r& P$ f
                        printf("%lf\n",est_v_eb_e_[0]);
2 z8 f, o; O# }% A                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]);' Z) Z$ K# H: t" j1 W/ M4 ~
                printf("rate=%lf\n",rate);5 ~7 g' Z6 e; A( \! h3 i* m8 p+ w' K5 ^  }
" S3 ]+ L& E% i* l
                CTM_to_Euler(est_C_b_e_,eul_);
. I4 o7 J6 p+ o7 [4 {6 n( U                for (i=0;i<3;i++)
5 }, r0 \& q# G- [                        printf("%lf\n",eul_[0]);+ o# A3 z7 o9 r# W( v( T3 ^1 g
                printf("end************************\n\n\n");! V, B% P7 p: W' U: ?' U
  [, {, H- v. f: Q
                /**********************************************************************/0 a! U- Q% w9 P: B' e7 N

3 r+ f! X; L# n; o& m( ~            char flag[4];) K3 A' ]* W. t: ^
3 G( V8 g) c5 h9 ~
            flag[3]=0x00;
9 E- k+ L3 L( Y' n* ~" m            flag[2]=0x00;  m5 H3 _$ K4 R7 ]
            flag[1]=0x00;
/ I+ @: t" ~; r  n- ^9 j            flag[0]=0x01;' A  Z" V9 W$ o3 v

( P) o; `) m5 _; L% i& L    /* Allocate I/O buffer and init with string */* f) k$ y2 ^: p8 B# Z2 ]  `
    str_buf = (char *) malloc(80);
0 C- r- Z: Z" e% i    str_buf =flag;8 l% v' \  k. M! l
. C* {7 T4 p) S( l! N+ o
    /* Send buffer to remote CPU */
2 E4 x1 D' C2 ]; ~0 @    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));# E% J& w$ |- i) q1 y

1 [; b4 B  |( w; z    printf((char *) myPayload);9 V5 g+ J9 W; P8 n( x
        }
( t6 d' r$ c# i2 z}
- k; e0 g8 m- @/ F4 M) G4 L- q) d! `2 e3 z- X; i& J
    WAIT_HERE;
. m( L) @6 o+ C7 V5 ~1 H# z}
9 l2 ^! {  x/ l) K
作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:
  B) t2 E& x; I我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。
' c- d0 G3 _* b0 y( y. P然后我把双核通信的初始化屏蔽掉,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
! ~4 @; c" k7 q( Lsyslink 的初始化是否成功,notify 通信是否正常了?
  T* n: d* S3 R6 J7 p
双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:54
# e  r% K, ~# x3 W: Xsyslink 的初始化是否成功,notify 通信是否正常了?
  F) N( L/ f2 _% f
我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:20
1 z, k. s5 M7 E% S我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
# o3 @" J& E+ J
建议查看 UART0 及 DSP 中断控制器中断相关寄存器值 是否正确
作者: star_niubi    时间: 2016-8-21 14:56
能否说的具体一点,就是双核通信的都修改了哪些寄存器的值,这边双核裸机通信的资料很少。




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