嵌入式开发者社区

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

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。, ?  u( U  {( t1 Y6 y  J7 N
我是在DSP初始化这不太明白。8 m+ V) |  \' s) h+ F. b) ]' a9 ^
初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。, z; |5 s9 T% o8 w

( s5 q2 }4 l8 K) h1 V& b4 q6 n; q- V& V# w. w* q& G) _$ e
首先        PSCInit();//UART0使能
9 e8 \# c" A3 y$ Kvoid PSCInit(void)& R) h# l! h; @$ o3 S3 k- W. ^
{
3 w2 C6 E- p& B. A. V$ D        // 对相应外设模块的使能也可以在 BootLoader 中完成
; @7 X9 s5 k; R8 K# T% T4 L% T! ^2 j    // 使能 UART0 模块
) p, W6 J( D; d1 M, c1 D+ y    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);/ z5 m6 \  V$ \6 [! r2 [2 O3 c$ h
}) I. a+ [. `; O; X
" {; \+ c4 ]" [/ }1 @5 i
( Y9 j6 L  L2 U* W$ y
然后是 双核通信的初始化           AppInit();
( E* }4 Q4 y& E8 n" }: Bvoid AppInit(void)3 ?4 M# H4 M" ]- O: [: x
{
0 x) m. y9 A( ]- f& u    /* Structure to initialize IPC (see Ipc.h for definitions) */9 {& o& j2 g3 P/ V4 v6 N
    struct IPC_cfg ipcCfg = {
2 q; e' l) ]3 o            IPC_DSP0,             /* local processor Id */9 ^# Z! H* ~" `3 g0 h( e
            IPC_ARM_HOST,         /* remote processor Id */: u) A" O- @  n% W/ }# X3 K& M
            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */
/ ~0 j% j! \/ B5 v- z            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */
% \  t5 V7 A5 @- z2 O8 J            NUM_MAX_EVENT,        /* maximum number of events to be created */4 o" g1 |  G0 r& s% b, F5 B
            &ipcPvMemDsp,         /* local side private IPC memory *// o# O' D6 i& }3 x
            &ipcPvMemArm          /* remote side private IPC memory */, j0 I: r4 |) m. g, s, H
    };: D  L4 t: u) V/ O9 z' m
    IntDSPINTCInit();
( D9 R8 K0 M6 T1 p1 d    IPC_init(&ipcCfg);! U# ?( g8 e6 E5 I* D7 A7 C
    IPC_intRegister(C674X_MASK_INT5);
) i1 m- N1 z  ~, F! ?- Y    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));
5 _4 `( ^- e) S" ~1 @2 S% w* u# Z# x3 J( e* [9 G5 [% a) T* r, F
    /*  Enabling interrupts for DSP C674x CPU */$ U# ^0 d% F& k
    IntGlobalEnable();        /* Enable C674x global interrupt */
9 O( z- W1 p8 L# p% m$ x    iAssert (Notify_start()); /* This will enable IPC interrupt */' ?* u9 f# J' m4 w8 `
}! `1 I7 k$ w! }2 r3 Y
; @! S+ A( Z0 b; B! ]
然后是  
( _' ]. h/ Z- `0 K/ u1 U            // UART 初始化( O' [& g2 n4 h. A4 z
            UARTInit();2 E# f. x' `, Q) w- k  J* J+ q* l

$ Q: H  n- q5 S# J2 e3 J. c2 d8 @            // UART 中断初始化
; r. b' ~+ i' X8 M2 U( E, t; a" G5 n6 Z            UARTInterruptInit();
+ M8 ^- p# C& }: z$ T0 T5 b

. @4 \0 \8 ]" M, S; R
3 V* D% l& }4 r- Gvoid UARTInit(void)2 A- z  r/ j; j+ c! M
{, K" p: K' S. M4 W/ c
        // 配置 UART0 参数
. T: L( ~  |; W- G6 {        // 波特率 115200 数据位 8 停止位 1 无校验位
& N* U- B7 E8 n3 a' G4 G& p' x9 o7 X    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,
+ O  q( P# _; U" F+ p) q                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);
6 ?; W5 o$ x" W7 n& `: v" V0 ?* }        // 使能 UART01 \/ j' P" V- e/ i1 b# Z& e
        UARTEnable(SOC_UART_0_REGS);
& ?/ F* V7 E2 m5 u
9 H! U6 V  w1 E    // 使能接收 / 发送 FIFO
6 Q0 S5 N/ M0 k$ f1 {3 D//    UARTFIFOEnable(SOC_UART_0_REGS);
9 D4 d2 f: D* V( S/ M3 `. S2 G. ]7 W7 ?4 f
        UARTFIFODisable(SOC_UART_0_REGS);& b; E* d; t9 B; f
. K1 R: j2 {" N6 {3 M% c/ c5 V1 H
    // 设置 FIFO 级别     接收FIFO的级别
" a. O9 e7 B  }# R! z% v0 r/ M  v( L//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);
, ?5 \; H5 S& D% P. g}- D  t# M+ x) A7 {; [

8 s, c: u+ z' G( b/ g- M: ~; d8 r( Z5 \& h6 d- _
void UARTInterruptInit(void)
6 j% y1 R: X0 R8 t{% f" ^: b/ P, o1 y; l
        IntRegister(C674X_MASK_INT4, UARTIsr);* A7 g+ J8 P& g/ Y# {
        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);
: S' |7 A$ V( N8 L        IntEnable(C674X_MASK_INT4);% v  g. Q) g0 c

8 m. S: d9 d- K0 l: I& z( Q        // 使能中断
7 S0 \3 ]+ w& A1 a9 Y5 Y3 R/ E) v6 _8 N        unsigned int intFlags = 0;9 }0 P1 A$ M0 Q1 k) ?9 }" Y# m
    intFlags |= (UART_INT_LINE_STAT  |  \; Y. |. ~6 F* W
                 UART_INT_TX_EMPTY |    \& U+ T7 H2 j2 {6 ~' X6 p5 L
                 UART_INT_RXDATA_CTI);
# S. Z/ M& e6 u' Z    UARTIntEnable(SOC_UART_0_REGS, intFlags);
1 `7 P5 T- _/ f) M}+ ]6 M/ @7 J- Y% w7 w

3 a9 M/ Z/ S/ T$ G5 [8 R7 R  ?- Y# U
1 V0 _2 c# F" W/ Pvoid UARTIsr()/ j- [5 W# L2 \7 D. w" T
{
. H! m: U5 J8 I1 \+ }9 Q4 C; S    static unsigned int length = sizeof(txArray);! j& G0 A0 _7 A, [" G& N' L. r/ D
    static unsigned int count = 0;7 K+ ~8 P+ O" Y/ K; g4 h
    unsigned int int_id = 0;8 q4 J4 r& k6 {2 M& {4 L
9 y! h1 p+ J: S1 t
) j! q+ b1 @3 k1 A
1 R- X7 f; c2 `
    // 确定中断源
+ E. X- ?2 w& F+ x    int_id = UARTIntStatus(SOC_UART_0_REGS);6 a+ h3 b+ ?; z

. [9 m# h7 Q/ O. c5 F; P" E5 O    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。
* i( e& k( Y0 z# G5 Y; {# d+ i! c- V. X- w# r

% y9 m: r. R, K6 t$ y' v) n8 e3 ]( `    // 清除 UART2 系统中断
& C9 B) g6 E* _; j) Y    IntEventClear(SYS_INT_UART0_INT);( [/ @* L( l9 w% r7 F! y* Z# ]
# F" J8 J) o5 W- V1 e- p
    // 发送中断9 C# f& `% l$ g3 K
    if(UART_INTID_TX_EMPTY == int_id); V7 G" E/ m/ R* g1 V7 Y9 b
    {5 z6 r4 `% C. _
        if(0 < length)& M/ I% `& m3 `: }3 U
        {
- c$ k. j! i; ]) C1 o( S            // 写一个字节到 THR
$ d% B. {+ o: C+ X" [- n+ @            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);6 o+ c3 ]( {4 ~0 k+ H' U& {
            length--;
, d# }' d7 N1 C) _- a            count++;
* t6 r6 ~: R: [: K% `        }
) ?3 [5 B' v* D6 @$ ~. T        if(0 == length)
- F2 i6 a9 {5 L        {' [/ d8 j5 \; ]3 ]8 [! M9 _* u
            // 禁用发送中断. i* T% N  `8 U; M- M( w
            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);
3 S9 K  \. L! S' c9 M2 H7 t        }2 N3 {% k8 g4 a
     }
1 G- N$ S  I" J! H( |5 T
  k% ~, c& f) Q  M+ G" ?    // 接收中断
" @) y/ U- ~8 ?6 h  v' r; J    if(UART_INTID_RX_DATA == int_id)
1 P6 p! r1 a# |3 f    {
, M5 s& r4 {4 O; n% S        if(status_a0==0)
! Z4 c- s7 |( c        {; T8 z; w* w% p: D& l  ?
                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);5 L: u7 U) U$ E' O
                if(a[0]=='#')3 H, ~4 P% k+ M  b( J( j3 b
                {
- Z: N  C, ^: u: z: r3 r                        status_a0=0x01;; ^' n  z; H% |3 H) k
                        status_a1=0x01;
& h% S+ a6 y8 q, ~                }
# `3 ?% Y2 I% j        }9 n8 D: |( y0 F
        if(status_a1==0x01)
( Z$ G  L4 i; H8 l0 q- P7 X        {) h8 v+ {! d$ ]
                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
8 s- G2 X' @8 U' b. d- S% G                if(a[1]=='R')
: R, ^: p9 K& e6 {( w                {
/ y0 w2 {8 L% |$ E9 f                        status_a1=0;# X$ M) N1 ?( ^2 L0 ]9 X
                        status_a2=0x01;
& f) L5 _6 d) P' N, e                }
- X* h. G, L2 e; W* ?3 B! ~! n        }, @+ @. g: _$ q" l, S6 \* _
        if(status_a2==0x01)4 e1 h* X: Z, X1 ]6 G7 B9 s+ q2 ~
        {+ F. T; Y! g) \' M$ @
                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);6 d6 _) o) y- f7 C* g  u
                if(a[2]=='A')8 p" U% f* ]; R7 V
                {
# q4 P' u7 ?: ]0 E; t; P6 v                        status_a2=0;5 B- Z! h/ g0 V" W& q! ^
                        status_a3=0x01;2 S9 ]3 y3 e9 f, g
                }" c7 Z* C5 j- \! L5 l! f
        }
  E) Y: ~# s8 e5 P" C! V; |- L        if(status_a3==0x01)2 L* b7 n, t6 H; ?. w- m  S# ^
        {
! \! d3 W; @1 o: |                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
1 h9 @# j" p% e                if(a[3]=='N')8 m! W7 e" |! U5 G% \# c, R
                {1 ^; Z9 y# X0 @' F5 V5 R' ?/ R
                        status_a3=0;
* C& y1 V) r4 n, x" `3 R0 X: e                        status_a4=0x01;: \( n2 x9 Y$ A, K1 G) K5 Y9 [5 p7 }/ t
                }
1 R1 ?% R) s( s4 y7 {        }! d  |4 o! v( v) t0 S3 ~0 {
        if(status_a4==0x01)" Q4 r' C8 Z: x
        {
2 E, t% }/ p4 \% R! s                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
( l1 \2 c5 t. a4 G% `                if(a[4]=='G')
# s0 `$ s0 h, u0 |" h2 K                {
2 L: h2 r$ w! F. ]                        status_a4=0;0 }+ y# ^% r% X
                        status_a5=0x01;: V3 z5 d5 b- F9 B: B
                }5 t2 m/ l8 p$ Y7 N5 i% `, n  i
        }* D' c4 a. c0 h! D3 a( d
        if(status_a5==0x01). I) {: B$ s8 |  O- V9 P  l4 }! U
        {
& a4 x/ N& ]8 J. d# g6 e- t                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);% D0 ]: p& z7 }# `3 X* B" J& p
                if(a[5]=='E')
7 s$ A2 F/ P2 x' {' m  l0 n                {
/ Y% ^* V2 N6 I4 }5 b: R                        status_a5=0;
  y8 U* o( J- u8 d1 N5 W; r                        status_OK=0x01;" E+ \- [7 {+ Y
                }. M( V8 C8 Z( H, R+ L2 n
        }
: Z% g  c  Y1 r3 j- r2 u8 T            if(status_OK==0x01)
* A  X- c! V5 Q: e& d        {  `4 l% I& i& a9 ~3 k- K' p. Y
                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
4 |. ]+ ^4 H! q5 o- ?% {. i, q                        lengthrx++;
$ w/ R. S' [3 o5 O6 _& b3 }0 ~' t                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值)
% u( F" k& ]  D) i                        {
! o5 I& Y8 a" i" ~' m4 H                                RecState=0x01;+ g0 I+ [( Y. E
                        }/ ~5 v5 `# F. Q+ v: E3 S
         }7 {. T" E7 o/ [3 b, t. u

6 E- y: D. c. P+ P' N, i     }! x$ r  Y( L9 E5 `

' U) R% ?( H& D4 m; I: N0 S+ f    // 接收错误
4 m, H8 F0 f7 |; ]( E- c1 l    if(UART_INTID_RX_LINE_STAT == int_id)
+ s+ J. O: o7 U+ y    {2 y$ T% X4 J+ M5 `1 u2 Q. @
        while(UARTRxErrorGet(SOC_UART_0_REGS))
* ], q/ `  d4 ?        {( x' J/ I  m* R) y$ ~9 X
            // 从 RBR 读一个字节
4 K/ C( b2 g2 p$ g- L1 J7 I' z            UARTCharGetNonBlocking(SOC_UART_0_REGS);' ~2 I& t2 S: N/ g- G
        }
& O7 k1 ]8 X/ L( {% a5 g3 f    }: M' j, J: [5 e/ ~

! P: }* {+ x8 P. `6 P% P6 P! K    return;
& h1 X- C9 C' I3 B/ h}
0 C% o' a" B3 X% B; ^
8 y2 X( M- E" R
2 ~. n3 H9 ?6 q  k2 X5 }

; p+ a' K9 r, Y4 d6 ]  k1 ^0 C; U
作者: Jackindata    时间: 2016-8-17 11:13
hi,
+ F7 h! _! X  F2 |7 H
9 \. L$ q" z7 L( B4 h) w$ j! ]UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。
! K" l& X; `5 x2 W- e1 L
$ i# n9 J- g0 b+ h# P6 ^要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:130 X/ ]4 M9 J) ?4 e+ {; s
hi,
0 v0 d* W- ?! p( }6 `" ^
  }* S' \0 _+ M! _. @UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...

  _7 a( t. o# p7 {2 ^& N- l" nvoid main (void)2 S6 q- [  G3 }( w9 r
{6 F! g, h' E3 f0 h& w( [* [/ o
        int i,j;
9 f) ^' m9 U- W! G% U    char *str_buf;
  Z# v. N8 h& [1 j    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];
  S+ z% i# Y+ @. d9 `        double est_L_b_=0;
  E, Y8 r7 f7 R  Z* ?) ~6 n        double est_lambda_b_=0;
" J0 H" x: }& ^        double eul_[3][1]={0};, t/ X, P. X# u, g& X8 X
        double est_v_eb_e_[3][1]={0};
! d9 e- p9 F: {/ T- V2 \$ j        double est_C_b_e_[3][3]={0};
4 B$ b7 W- Z6 E) q    char *qm;
  z; S( g" C8 L, C    char rec[70];2 j" \6 t/ W6 j" ]- a
        double L_b=0;/ Q& X% v4 i8 |) q
        double lambda_b=0;
  {: m, n: m# S        double h_b=0;
. X1 b3 r- C; \  s6 Z        double rate;* Q* [) n! V  a" M

" @, b' P8 W! I' s+ ^# H4 \5 X6 N$ ?" P4 x& [
        // 外设使能配置
# A) g  E6 d% f        PSCInit();
! g0 _4 r- l$ A& ?* k0 J( g: S
6 T/ p, J" B3 K% {        AppInit();
- q3 J% i1 d8 ~/ y; v
3 i4 W  @5 f; t7 L9 c        // UART 初始化; m5 G* T$ [+ i* ~) u" O- o. d
        UARTInit();+ B1 b7 j, G9 p: @
4 L/ r6 \% O! u/ P
        // UART 中断初始化( w+ k- s2 A; W  n7 q# g
        UARTInterruptInit();; `1 _* W2 L( ?: r" M( i" |
. z- \  [3 o: p" |& C
    evtRcvd = 0;: ~6 `+ e9 n+ `0 i
    RecState=0;
8 w- I! m; K, {( j4 O    /* Initialize */) y: X: L6 C4 j( ^

: d0 e) x7 P. \    printf("DSP subsystem ready\n");
6 A- s1 T' e2 s' f
9 V& D% _1 ^0 j+ e    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));
; p( ^9 E, ~' v: L4 {- r( W3 W7 [& [$ Z. D8 f9 i! V
for(;;)% e2 q7 y9 w# y; O6 m
{  n+ F' b4 a4 Q6 ]1 k9 W
        if((RecState&0x01)!=0)0 O5 V1 _" ]2 q* t0 T$ y
        {' K7 o- O7 G" g+ \+ p7 U) U
                printf("liuzhenxing\n");% J% B0 f9 n0 _- [6 U2 [+ [& E" ^1 Y
        }
9 B; y' p( L$ o$ b2 [7 h/ {        else& y$ p2 k, ^1 I7 l# v4 e2 j3 F
        {
! ~) n0 _5 c) G* S       wait_event();
, m* Z: D3 j* b8 v* [' W' |; k9 z' k7 l& w" \
           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针( z3 I+ s9 @! ~7 z* s. T+ M2 D
' \; X  H0 E: H" X1 [0 m
           for(i=0;i<60;i++)
( }  r- ^# P; D           {
$ b- u. O0 q3 i$ |3 f7 u5 X6 J                    rec=*qm;+ K2 h% K# I8 o7 v8 T& w2 D2 o
                    qm++;
9 V3 \  t4 x. ?5 `$ C- I* h           }
" n; _+ @7 p. F$ K
" o6 `9 k2 H0 {: w( t  d4 H           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);
0 ~  ?' U$ p& v+ I; W! i  T( @1 b; o
           L_b=L_b_receive_double;
' I# y( `9 X/ k' Y5 c           lambda_b=lambda_b_receive_double;; h: K; D3 N& p
           h_b=h_b_receive_double;
8 X8 ]+ J) p5 [8 {# e           for(i=0;i<3;i++)
& ^" X) M3 p# T. b6 X( F: I                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];9 o* v' T' z. r* @
           for(i=0;i<3;i++)
2 G& _. w& b4 I* F' J                    for(j=0;j<3;j++); @, K9 [8 q9 w) A2 b
                 est_C_b_e_[j]=est_C_b_e_receive_double[j];( Y: N: ^/ f5 ^; R, B
& C/ P% o+ |4 F. ^
                printf("L=%lf\n",L_b);* {) z' |6 _* [' G: D2 c) m6 A% K
                printf("lambda=%lf\n",lambda_b);6 b, B2 j3 [7 U! Q. S9 L* P
                printf("h=%lf\n",h_b);
4 f5 M3 ^/ u+ ~+ I4 n& X* e' J& @! U9 A- O: Z; O/ l% |
                for (i=0;i<3;i++)
2 ]: Z) O4 b) s. D, @1 T: V                        printf("%lf\n",est_v_eb_e_[0]);% B1 G3 I1 \' k6 w' a8 Z- ~3 `
                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 M: V+ w6 K$ A2 S0 e
                printf("rate=%lf\n",rate);
% v6 N+ p- z6 P8 a7 f7 }, y
8 t, O+ w5 z0 P. V$ G0 n                CTM_to_Euler(est_C_b_e_,eul_);0 U2 [+ d7 k, y! g* ]6 P0 q3 D
                for (i=0;i<3;i++)
$ L4 f! g0 L- t3 \, a  @/ R7 ~                        printf("%lf\n",eul_[0]);
% k; @4 C2 ~5 ?: A- k                printf("end************************\n\n\n");
+ J/ Q  c& v' V' K* O) d% L3 l1 W3 p& w0 }! h0 R  p
                /**********************************************************************/
: X9 Q" Y: [+ a/ P+ M
) |; i9 i+ {: }. N3 m# L! ?            char flag[4];
: l" Z& i. ~' W2 X1 a
" m) B5 n# A  x7 l1 H- t9 Z1 T            flag[3]=0x00;
! i3 }# g1 n6 I. s1 Z% u; _- Z  v            flag[2]=0x00;3 A. W6 n8 W5 u% F3 e) q
            flag[1]=0x00;
3 e6 n0 G5 Z7 E" C2 ^8 Z5 `8 X            flag[0]=0x01;
' s, F3 K6 b! ^3 ~( d6 d8 n+ ?* }- E
    /* Allocate I/O buffer and init with string */; D) @- e! z& q9 n6 ]
    str_buf = (char *) malloc(80);
3 q& R6 x4 n7 X& E* v( L    str_buf =flag;6 g) ]4 E) x8 n; M

; F* h) ^/ k/ C/ o. d2 k9 C5 H. N    /* Send buffer to remote CPU */6 ~+ i& o6 A  X1 |
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));
8 D# w% [* h* G3 z, ^$ ?) M; m- d+ R, M& @2 F
    printf((char *) myPayload);5 `1 [% L  t1 S  Z- b( ~4 P' U, B
        }
+ Q6 U) b& H; I}& }/ a3 ]' ~! o* K. L' `4 J
' T- B4 N3 }6 K7 b
    WAIT_HERE;; }0 Q6 r. E( i
}0 Q% Z* K  B0 s3 E+ @/ Q

作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:2 F% C" E# q( ^! a! m  W1 ^4 m# z3 W5 x
我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。
7 N: y. w. W1 O+ p* e6 Q然后我把双核通信的初始化屏蔽掉,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% w) s( p8 X1 R/ N. |
syslink 的初始化是否成功,notify 通信是否正常了?
6 [& i2 [2 n' n6 a
双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:54
8 |3 f7 S& a/ A0 R' c8 zsyslink 的初始化是否成功,notify 通信是否正常了?
8 J. l: [. R, `9 Q0 C" w  R
我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:20; o% l6 t& w1 |
我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
: ^$ F* b; ]! G; p* [6 ]
建议查看 UART0 及 DSP 中断控制器中断相关寄存器值 是否正确
作者: star_niubi    时间: 2016-8-21 14:56
能否说的具体一点,就是双核通信的都修改了哪些寄存器的值,这边双核裸机通信的资料很少。




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