嵌入式开发者社区

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

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。/ o+ {" O& g6 {, [, B3 l
我是在DSP初始化这不太明白。: l; c, p  n; f3 _6 o0 H: j' ~+ e
初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。- _" G, Y- N* D3 o/ t: h
* \, U' E8 X! N+ [
9 O5 ]1 X5 l6 i$ a  U1 c
首先        PSCInit();//UART0使能( J4 \* F: f, }- @% V
void PSCInit(void)
' C  }: L: w* y7 R5 ^$ b{
8 P, c$ @/ {4 N. f6 C        // 对相应外设模块的使能也可以在 BootLoader 中完成' x5 d! c( O! ~* }7 y' p4 U; Y
    // 使能 UART0 模块
1 H! W; j. H; x6 F8 }. l    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);; _9 \% h0 t1 W( h# q3 c
}% [5 ~& `& [2 u; x$ M
" l6 }: a8 L) a4 e' w4 L

3 H# `* L7 ?9 c' I% I然后是 双核通信的初始化           AppInit();
3 u' A. x6 r: c& n8 H! \! }void AppInit(void)1 B' f4 [( o3 E
{
+ C& \4 r- ]! {! K    /* Structure to initialize IPC (see Ipc.h for definitions) */
: T+ D- \9 s2 \  J0 \" k; h    struct IPC_cfg ipcCfg = {0 w$ O. v1 X; b2 k- V
            IPC_DSP0,             /* local processor Id */
4 d) ]& N  R: A) j( a- l$ @            IPC_ARM_HOST,         /* remote processor Id */
% h  j8 E! A0 d. e4 d) \6 S            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */5 F2 ^$ h% k" s1 C8 L  K
            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */
) p/ Y/ q5 M* R& j' Y7 p+ Y& }            NUM_MAX_EVENT,        /* maximum number of events to be created */4 l4 F4 p' X  i- {4 X6 R4 d
            &ipcPvMemDsp,         /* local side private IPC memory */( A- |' ~2 }% [4 t$ x/ M! W7 K6 A
            &ipcPvMemArm          /* remote side private IPC memory */
8 f' x7 h; F) t    };5 E$ s: `0 z; `7 c: M+ k8 Z4 s2 y
    IntDSPINTCInit();( y; }+ V) }# O1 h1 o( a; z$ g) `
    IPC_init(&ipcCfg);
& M8 {  d; D; c6 @    IPC_intRegister(C674X_MASK_INT5);+ g" h& Y! t- [' \3 \
    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));0 H; z0 B3 U  g! ~- `8 W. D9 h8 b

9 }; p9 `* C: `4 s    /*  Enabling interrupts for DSP C674x CPU */
9 t. u9 v: Y6 i    IntGlobalEnable();        /* Enable C674x global interrupt */7 s# T6 q. z( Q
    iAssert (Notify_start()); /* This will enable IPC interrupt */
' W6 M4 k1 J$ k& j  p}+ ^. J) ~3 l) C0 \

$ \3 S+ w6 g4 @0 M5 j( i: I然后是  
' }  v" ~/ ]- Y  M& t            // UART 初始化* P' b( C) r" k: P" q' j
            UARTInit();
  c/ s+ m) G$ U8 M
: }; S- }3 N' @. R            // UART 中断初始化
' p: V: i4 h  n' J8 O            UARTInterruptInit();: w1 R" o7 h  Q" @( J0 L
; `' T0 x7 n9 R, t& _4 U) M

! E2 ]% {5 W- b" w" i  Avoid UARTInit(void)
  m  W! K+ T1 P' W9 H8 t6 }{
/ d3 r( y" ]4 H: `# U5 K        // 配置 UART0 参数7 \* |5 f3 q2 L8 d
        // 波特率 115200 数据位 8 停止位 1 无校验位
" V( c) P! I1 ]* U6 x1 m% s    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,
# ~6 Q1 G" C2 B) `                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);
6 {; H$ _4 ]: @  n! I1 I* o7 h( S( a        // 使能 UART0
6 d4 W% M5 }6 w) Q        UARTEnable(SOC_UART_0_REGS);. |$ }5 I( m+ y- @0 C- j" Y

' Z% i) j' e: S' Q' x    // 使能接收 / 发送 FIFO
4 t' f, o( F" l3 F+ s0 e3 c//    UARTFIFOEnable(SOC_UART_0_REGS);
0 O. Y4 V+ g% |5 j5 N" x9 f- M
& p3 q* ~1 R: F- ]3 _* r        UARTFIFODisable(SOC_UART_0_REGS);
5 @. ^+ T0 w2 N. a  g  j) n5 v1 s& R7 j0 C
    // 设置 FIFO 级别     接收FIFO的级别
" F2 l( a6 ]7 E$ l  N" `//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);. X7 W  Y) Z2 t5 i$ q2 ^9 k
}* b: b/ h! q: R  c( ^3 F% l

* |" c: Z9 ^- M& }- r" _5 q# ~' q) @$ B/ B; |- O* j1 ?5 D
void UARTInterruptInit(void)/ Y( q+ E& t2 l3 E3 r
{% e3 G2 `5 I+ X, h" ~6 B7 K
        IntRegister(C674X_MASK_INT4, UARTIsr);
6 N3 s: J; s9 o- p0 Z        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);5 d  C0 x3 g' Z0 w+ j% w% L: S$ M
        IntEnable(C674X_MASK_INT4);3 U7 @7 X# Z; ~: U  C

' z+ {& W" J# `( Z# f! |/ ^# [        // 使能中断
( Y7 E3 u3 `' D7 ~        unsigned int intFlags = 0;+ R' C, M! g* r6 U( C: k# j
    intFlags |= (UART_INT_LINE_STAT  |  \" q1 _( G& Z0 V4 F
                 UART_INT_TX_EMPTY |    \
: _; }- U! D% F$ x) u0 b                 UART_INT_RXDATA_CTI);* V) a! }7 z0 D9 J
    UARTIntEnable(SOC_UART_0_REGS, intFlags);
* \. E! m  t% R9 z- C+ U* g}
8 W+ N: U9 Z( {, b+ p# L

6 R8 h% B& V3 V& _+ i3 g; J7 C1 D. W
void UARTIsr()8 X1 t  G' E* @6 T
{
- ~* C- s! u0 c  |    static unsigned int length = sizeof(txArray);& P2 g# e# j; d, z9 `5 Y7 D: J
    static unsigned int count = 0;
, [- u* f  t  d7 v+ X6 \6 I    unsigned int int_id = 0;
( b  L! I2 A8 X/ K, }( P
* X  f# V& @/ z1 B; X3 X- Z0 }3 F8 [" E) Z! W# I+ D; i# s, U) T

# d7 G" I7 e6 p- C! i    // 确定中断源3 J( k( ^% |) N% l7 E
    int_id = UARTIntStatus(SOC_UART_0_REGS);
8 K" W# f8 [) i2 w, \
- _' V. B- ?0 @/ [1 F! a8 n4 O& k    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。
9 a! A; l3 H  s8 l3 H' j: G2 x0 @
8 |2 w, F' r9 ^7 u+ O( S: |! w) ~/ p2 M/ w9 \
    // 清除 UART2 系统中断
! x+ T) X, W# g    IntEventClear(SYS_INT_UART0_INT);
& f6 V& D/ W* ~4 H$ i; j$ _8 V( n
5 U7 X+ ?4 `! d: ?6 }0 i    // 发送中断  ]7 f* ~0 j1 F7 L! o& u. I, V
    if(UART_INTID_TX_EMPTY == int_id)
( _. ^: ]/ D$ ?% u, t* i/ u, i& `    {
# v6 i0 d" ?4 S        if(0 < length)
- d- w1 Q2 [2 m5 T( y- `        {% R( I+ N6 E& k- Y6 S  k/ h
            // 写一个字节到 THR& |2 D; E% H$ B# G  c1 l3 I- n
            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);' m, S! z; v1 [$ m0 G% `) F$ a
            length--;* k& L, n0 B) J* i
            count++;
4 T- {8 A% V" D+ T        }" t8 \& C! P5 I
        if(0 == length)
  i. M0 z/ |- a4 m1 @( c7 u( G        {' Z1 o* H' D# D' F0 O  z
            // 禁用发送中断
: D  O" g3 G* ?/ P6 R" D            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);
0 h: ~" p0 k3 z        }. _  s7 V' z- B& M
     }
* j3 k' b# y1 p" E% u6 Q
9 E' o+ p6 L: ^1 e* [5 N! k    // 接收中断
% `4 @; E( k: G3 W9 V" Y    if(UART_INTID_RX_DATA == int_id)- N" W2 n+ j$ S( w1 E0 ^: K7 r; f
    {
; b8 k$ P& S1 A3 F5 p! @* z: k$ P        if(status_a0==0)3 G# j+ V: H$ {# ]& e: J/ ~9 X9 n
        {% I- {- B9 g4 x( B
                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);8 e" M0 Y- n% I2 g0 d7 i1 O
                if(a[0]=='#')! h) Y7 d, K% g$ u/ [
                {1 O0 f% X* r: I
                        status_a0=0x01;: g9 |* Z2 l/ Y/ p# ?: i
                        status_a1=0x01;$ f4 G2 P/ ?  n3 w, ]# \2 S
                }
1 [* l& {* S4 D9 o. m8 Y9 {% I- `        }1 o% R7 ], h% n. E! R8 C  y
        if(status_a1==0x01), `* K+ h2 ]6 i3 ]  }% t
        {
' K4 f3 r  E) e2 w                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
' O1 F2 m/ `7 u( H                if(a[1]=='R')6 z; g0 y( {, m' s
                {8 a" _; Z0 d) U7 l! Y* z
                        status_a1=0;' o. W/ l3 t! ]9 s# T' K0 L9 q
                        status_a2=0x01;4 x( w  a8 x- ]6 N6 Y0 h: r' ^
                }' l; `+ S' _$ |# h7 G; h
        }
, K8 h+ `/ v: }4 a/ w2 K, h        if(status_a2==0x01)% ~" w" ^7 a4 q
        {0 _  _9 \1 V3 F& I. J
                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);* R0 N) ?7 v, {' J
                if(a[2]=='A')1 p  j! v! r4 r" ~
                {* f4 f; z+ @1 W( N1 M3 J) O
                        status_a2=0;% j- I! y$ Y$ _
                        status_a3=0x01;
( N" ]$ Y% V( Z: }- ~) k9 \                }5 U$ i" ?' y& l4 \7 _4 c
        }& Y5 P4 n; ~: s2 J9 y" I, A
        if(status_a3==0x01)
9 w  v4 N% _; G5 v/ D" ]+ f1 `        {
9 B- w4 m  b, w+ |. ~1 J( p6 x# A6 r                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);* ^/ r( [, \$ `$ ]* I0 M
                if(a[3]=='N')+ j" O7 j- b4 ?% f4 Y3 |( Y+ z" L7 j
                {
# ~. h4 ~2 O, O9 z9 r6 ~                        status_a3=0;; j6 S0 h1 D' N1 p1 w) ]% j
                        status_a4=0x01;2 l6 J' I* k, T/ M' f
                }
  f( U* {, ]7 F  x        }* c) R; ?  C1 J8 K9 A& j+ v! M; \  A
        if(status_a4==0x01)$ h) f! |1 R6 e' D" J
        {
* P/ F, S6 ^  i% i! U9 F$ A6 K                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
* ~' b* G( V9 F$ D                if(a[4]=='G')4 i/ @" g% G0 q, \# B( r
                {7 w( J+ h& r5 V, g* T' F
                        status_a4=0;  F. l. S3 }1 j  W7 |! R
                        status_a5=0x01;
4 i1 h: x, G. k/ O1 E3 P                }
0 g8 O4 b. {6 y# b7 o2 ^        }
5 z8 u8 C9 @/ `. J4 n' `        if(status_a5==0x01)0 r2 S/ q; s7 ]
        {
+ B* O3 Y2 h0 E! \                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);2 i+ z! p# Q* C; \& o7 @
                if(a[5]=='E')$ \$ J& R0 s: q* _
                {# c( w; V$ }& S6 I& D4 E* @
                        status_a5=0;1 F, [/ j; T5 ?1 I
                        status_OK=0x01;
$ w! a; U) I+ G( m/ Q, c! O! [                }$ ?4 ]8 ?  ~: C. p2 [
        }
: W6 R2 u7 |" u6 b+ C% r* \            if(status_OK==0x01)% P# j, B4 u- p) E
        {
/ V& a3 e6 r- S' ]* T+ v                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);9 g- u6 g; c* c/ Z
                        lengthrx++;
0 Z% T! n" ~  R5 `0 H. ?- @8 t+ C                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值)& g8 |. Y7 h+ J) i' Q4 u
                        {# y3 A* o/ S4 N6 A
                                RecState=0x01;) g' C" d9 d2 |* @
                        }
* A, }5 E, B; P! {: A8 M         }
& J: t: J6 h6 T9 L4 R- ]
) ^8 Q2 g; r2 Y     }0 T$ n+ [$ x) D  E# o! k& U$ e# \! f
# v, b3 u# |' y' S
    // 接收错误2 C0 \/ d4 P  H: {) F/ @
    if(UART_INTID_RX_LINE_STAT == int_id)' f) Q, S; Y+ x# q& R% E+ Y) D, N
    {
3 S* {6 Y+ k0 u, b/ n5 d* F0 m8 @        while(UARTRxErrorGet(SOC_UART_0_REGS))
4 V$ g# h6 L2 k3 h# h        {" j$ I- t/ _" ]! H8 D/ x3 l
            // 从 RBR 读一个字节
) g. T4 E6 H' V; m% q: ~. G( Y            UARTCharGetNonBlocking(SOC_UART_0_REGS);& Q% s7 a5 B- h. Q- f- ]; P
        }( d* N! [7 D1 s" B% ?
    }4 V8 W& \7 z+ k- [2 W5 d
" A, |' R5 Z* C7 [
    return;
5 L' q: r6 @! g& {! R9 [: f}/ }$ J* m; x: o5 k

- G# Y: D: P$ L$ z

9 A% V1 A/ V9 G5 ?, h1 l  O; k" f- w  G: N9 s

作者: Jackindata    时间: 2016-8-17 11:13
hi,
2 ]$ k+ I6 q! S: D8 p
) s6 l% u5 R+ X' c8 V4 z6 p* TUART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。+ E) O, j$ r( {& f9 o( A
0 C  s; l7 B" B& M' H. m: b9 |5 a* p3 I9 W
要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:134 G2 n4 _! K: P
hi,
2 a) Q/ Z5 o: m0 }& u5 Q) x, {) W7 O/ c3 R1 F; N
UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...

3 ]1 o+ p& O* R) mvoid main (void)! S; @+ V2 y6 ?" U7 x
{
$ o1 D( }' ]* K7 y( z/ e1 {) D        int i,j;9 T: J' f  e6 n0 K& Y4 q
    char *str_buf;" T3 X* d' z% x3 t3 e) z1 I
    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];$ @) |+ x# _5 ?( ]; K3 i8 q3 c
        double est_L_b_=0;- R. ?! L% w3 [; v
        double est_lambda_b_=0;
4 y  d! ^- w0 K1 Z# l( A0 y        double eul_[3][1]={0};) a/ f% J" h  |! w' H! t7 j0 C
        double est_v_eb_e_[3][1]={0};" b0 Z! t& x2 M4 h1 t! j
        double est_C_b_e_[3][3]={0};% s! P! T5 Q( v* J3 {, K3 U
    char *qm;5 r6 j+ v! g3 z3 `5 Y( B
    char rec[70];0 ^" T4 F8 x* [5 @& s
        double L_b=0;4 I0 U! ^0 x' z% W7 y
        double lambda_b=0;
! @- }; C& X# e% J        double h_b=0;
+ I+ K/ }- S9 t% @( \5 s! R' |5 y        double rate;
+ g8 j4 U7 z; [: i$ o+ _. x  h$ {

* D, |; C5 S  l0 z' o' H        // 外设使能配置: ~7 {2 p+ v! I; \' H/ \2 }& u
        PSCInit();0 A5 x  c1 [4 R! p$ R2 o9 V

$ `$ O  S/ x( Q6 ~: z# ]        AppInit();8 n2 l7 L: P; ^" s
$ m. u( |- w! ^% u; z  }# o, p
        // UART 初始化; U# q% @- s* V" L, b
        UARTInit();/ ~9 p# O/ {5 K' O
6 I. V. t" Z9 s9 h1 Q* T) k; j
        // UART 中断初始化
: I5 ~* g6 _0 o9 Q  d        UARTInterruptInit();
8 [% E) l' N" s9 S: T! t5 p* _6 _, b
    evtRcvd = 0;5 k0 f, j, A% A8 f# x
    RecState=0;
8 E  S$ E& Q% {# N- M% T  r    /* Initialize */$ T  d& y/ h8 h
& i: n2 t) _+ I6 t. h2 ]
    printf("DSP subsystem ready\n");
: a& X; r* [! S4 v- v- ^4 x, v
4 ^( {& a1 F- F2 k4 ?    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));& ^. Z- m) W# ~' k/ i" U
9 x- a$ N& ^8 c+ }8 M/ q4 e: F
for(;;)- g1 ^# \6 Z7 }4 C) K
{
. k5 ~- w. ]2 ]% Y& D% J) c8 P        if((RecState&0x01)!=0)
- M4 P, [) a/ h        {  T% B1 ~$ D6 `7 u2 R
                printf("liuzhenxing\n");
7 s; v  U5 ~/ ?3 ?. v$ l        }! ?* G8 I6 `1 Q: s. ]+ m
        else
. m) U9 D" `9 o  u( O$ q        {. K2 Y$ {+ _  S7 @5 ^. W& ]6 A
       wait_event();- k3 o! l& X' W! o" [( K3 H
+ E' n( [  D5 w
           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针  F* R% D3 P& q* r' {
2 l8 r7 Q1 n+ {' h, x+ m  L/ g; r
           for(i=0;i<60;i++)
0 e. P; O8 T6 {0 b' S           {0 T- b1 W6 n: G0 @8 V, k
                    rec=*qm;
1 C8 |4 b6 x4 R9 K                    qm++;) f! `2 w4 m; d( ~/ P' c
           }
$ V( _/ d; K; d) z, g
9 M1 e: X* C' k9 z7 o' c           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);
- w4 y. A* B+ Q+ G& F1 K
" D$ n% B+ S! w- E3 r5 W$ z- a# m/ D           L_b=L_b_receive_double;" v4 y! I& S0 \5 J
           lambda_b=lambda_b_receive_double;
$ t# ~. m4 C( o3 r; k5 d4 k           h_b=h_b_receive_double;. o2 y5 h- \# ~9 |8 p  @. {
           for(i=0;i<3;i++)
( l0 [8 m& B+ t7 A, b                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];2 S3 k% y* U7 o  d! u# ?/ L0 u. ^1 U
           for(i=0;i<3;i++)1 V2 \! V0 b8 h; K
                    for(j=0;j<3;j++)) n$ |6 O9 n5 ^% s6 i# u# B6 p
                 est_C_b_e_[j]=est_C_b_e_receive_double[j];
7 s  L' a* K) ~3 V1 w' n- K& I! E7 q
                printf("L=%lf\n",L_b);
2 [" n" D7 s8 F2 M) d' q                printf("lambda=%lf\n",lambda_b);
( t  u6 K  N5 ]6 \1 G                printf("h=%lf\n",h_b);) z* t: H9 q3 r: F

4 q6 c2 P- p* \& P                for (i=0;i<3;i++)
+ @; z" Z2 `' J- e4 m                        printf("%lf\n",est_v_eb_e_[0]);
( l. Q. }- Z+ d3 E) w                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]);
- l+ [' h% w+ d( H4 D' O" d                printf("rate=%lf\n",rate);: ?: l% w8 o* g

$ i2 ?( K9 `' H# W( d  j, Z                CTM_to_Euler(est_C_b_e_,eul_);# ?  @5 `$ L' }- s0 }+ v
                for (i=0;i<3;i++)
( h; t! F1 u( {                        printf("%lf\n",eul_[0]);! ~7 p( X/ w' X/ @7 v7 a
                printf("end************************\n\n\n");
4 R# y0 W5 f8 Y  p
. A, f6 q9 B6 u" a% F                /**********************************************************************/
. ~1 W, f' h$ [' a& v) l$ Z; T0 a! u* A) r) h+ X* |# r# X
            char flag[4];& d1 ~: L% E1 a+ A
# V7 Y+ V+ x% b( W1 N
            flag[3]=0x00;
, N' Q8 B# |/ v! H7 }' w            flag[2]=0x00;+ E5 }! [% L2 `' I4 Q: Y
            flag[1]=0x00;, a; q6 t! R* d1 t& P% k4 D: }
            flag[0]=0x01;
- ^2 \" @4 m. x9 r
& V) p; H! ~5 t9 Y( l! I; O    /* Allocate I/O buffer and init with string */6 |" P+ r& B1 ^+ }5 g  X! d& c
    str_buf = (char *) malloc(80);
; a( a3 x; {2 _( \" y    str_buf =flag;
6 K; g- N' i" W' N) |1 [5 S1 g- b& K) ~! I' {0 y! B: B' C
    /* Send buffer to remote CPU */
$ u1 y* g2 Q1 ~* R- j, e: Z    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));7 e2 z! ~. ?$ w* T( S2 r) h
; Z; F; \0 ^7 B. E
    printf((char *) myPayload);4 g7 r1 J( v! \6 L" k) y
        }+ E6 x3 }* p6 K. ^
}8 N# n) t5 I- Q* S6 S' _

; K: F  K+ F% L1 k" a( w! u6 U    WAIT_HERE;4 ~( y' S" _+ w# \
}
- o7 {2 x  b) J4 }
作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:
# v4 P" k! q3 P我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。! L- d1 H+ a3 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:540 J0 ?/ R5 w1 h4 x
syslink 的初始化是否成功,notify 通信是否正常了?
, ^* t3 K* T5 U& }
双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:54
9 k. M5 Q# p4 x( e, l0 o0 B  \2 D* I' Msyslink 的初始化是否成功,notify 通信是否正常了?
5 a1 z* s! V$ ^" W
我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:206 u* H; {! U4 ^1 S1 T
我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
! Z' O  x2 Q6 A$ B; `
建议查看 UART0 及 DSP 中断控制器中断相关寄存器值 是否正确
作者: star_niubi    时间: 2016-8-21 14:56
能否说的具体一点,就是双核通信的都修改了哪些寄存器的值,这边双核裸机通信的资料很少。




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