嵌入式开发者社区

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

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。; o% J, C& V. J9 O# o8 j
我是在DSP初始化这不太明白。
* N5 k* C, L- w& n9 ^. E初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。9 }$ }& A0 @- R

7 X5 o1 q8 u! o# `& W. k* s" R' `  L3 L
! v2 _7 R. w' _6 G. I; |首先        PSCInit();//UART0使能
8 D/ m$ _: O2 k2 k0 uvoid PSCInit(void)( D, D8 b2 e& ?9 [" `
{
' W5 J0 `1 e0 M+ T        // 对相应外设模块的使能也可以在 BootLoader 中完成6 \8 m$ |' C7 U4 P  V( T
    // 使能 UART0 模块
% k0 _2 C/ [0 C. j& f    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);# P) c* F, g$ Z+ p$ a- @
}
! G5 I6 r7 X' I6 R5 V& {1 P2 D
* F$ y3 J7 e; C+ V5 ^: L
2 ^& A- J5 s* I: n( L
然后是 双核通信的初始化           AppInit();
$ _( }& V% ?, Y# {9 p5 V: }void AppInit(void)5 O+ w* P7 Z3 U) M2 k) Z2 u' {
{
+ N* n: Z3 C' j# C    /* Structure to initialize IPC (see Ipc.h for definitions) */
+ F  Q- S" L5 s    struct IPC_cfg ipcCfg = {
  P3 O' G) T- N! S. v5 y  N            IPC_DSP0,             /* local processor Id */
  ?2 y$ f( H$ @, R# ?1 ?4 W            IPC_ARM_HOST,         /* remote processor Id */! e9 _" W" P+ ^9 m
            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */+ \* ?/ H  _; _) p; R
            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */
$ y8 L4 W: L  v- _7 Z, O$ M8 E- _$ ]3 k1 l            NUM_MAX_EVENT,        /* maximum number of events to be created */
$ [9 H6 B4 w# E) O6 }            &ipcPvMemDsp,         /* local side private IPC memory */
+ g' \' |# G$ d            &ipcPvMemArm          /* remote side private IPC memory */, {/ p- t* v, o! }4 J4 n
    };
3 W9 h' d! ^, R( E: V# k* Y    IntDSPINTCInit();
# P+ q3 j  f. o+ e    IPC_init(&ipcCfg);
; `9 F) E5 G  h  S    IPC_intRegister(C674X_MASK_INT5);
1 K3 _4 x, I, _! [" A5 p    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));
! ~) F4 o! L3 B7 N4 y- y
# G# ?/ ?% t8 \" v) M$ {# b. A8 y    /*  Enabling interrupts for DSP C674x CPU */
: P+ l7 ]; B' @& P- l( K    IntGlobalEnable();        /* Enable C674x global interrupt */5 r- a% Q8 m% q1 E: B2 x% q
    iAssert (Notify_start()); /* This will enable IPC interrupt */
% b  X  e( b1 e3 [% y# z" L$ S}  A$ j; E6 z5 ~3 w- T

% M# f. n; B) _" Z; }6 E+ M% ?然后是  
. Y$ N7 M" M" ?& k* i            // UART 初始化$ Z3 a6 P: d* l5 ?1 t
            UARTInit();
- z) ?5 i. ?9 O: D7 n
. e5 C+ F- ~- h9 Q5 b% I            // UART 中断初始化
$ u) S5 e* C3 `+ r" Z4 R8 `            UARTInterruptInit();1 P7 t* P. k5 g/ S; O. T3 m3 ~

  [0 a, w+ U4 ^8 z/ c, E9 Y2 ^, _) r+ D8 p
void UARTInit(void)0 t* F# l7 x2 a* w
{0 t! W! y2 B. G7 C7 ^5 X: h7 P, `
        // 配置 UART0 参数5 |$ L3 y8 U6 U0 F8 D5 a
        // 波特率 115200 数据位 8 停止位 1 无校验位
. x. k& v5 P, P' [: r    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,
! _  |+ `, ?+ `* q0 [2 A                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);
5 s' c1 {$ i% ?        // 使能 UART0# W9 y2 }6 Y9 ?/ w  ?
        UARTEnable(SOC_UART_0_REGS);. I  Y" e! g5 k  V6 }

# _- {/ j& ^6 {* F4 x' q    // 使能接收 / 发送 FIFO
5 x( y4 c/ E/ Y% t( J+ y//    UARTFIFOEnable(SOC_UART_0_REGS);
* j4 D8 a+ w' y* p
5 s$ F$ Y$ J' C0 _4 [1 _6 U        UARTFIFODisable(SOC_UART_0_REGS);
* L( F1 n. |  ^" Y$ L, w+ l) f$ f" L7 O0 k/ H+ r$ Q6 V2 o, I1 F
    // 设置 FIFO 级别     接收FIFO的级别
# ?2 C( ^6 m) U6 Y//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);
7 x+ ^# X5 M. u* b+ h}
! }8 \0 K  o1 K% c9 f" d

9 u  m  D. _' R3 V/ ^7 F2 z' P, ?# l& W
void UARTInterruptInit(void)
5 S: M( e! `. j& u$ ~6 V1 {{
; ~9 i. h" Z3 u  W* {+ c        IntRegister(C674X_MASK_INT4, UARTIsr);
# u- a$ ^/ {1 ?+ K7 [/ G2 P: V3 |. ?        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);1 b8 G. X' X/ f- d8 B$ ^: b
        IntEnable(C674X_MASK_INT4);
2 S2 `7 \' O' m2 I2 v* Y$ h! {' V( q# q, N8 u6 F! Z/ Y1 I
        // 使能中断( ?% c9 Y0 A* h$ [7 [) l0 S, a
        unsigned int intFlags = 0;
" }$ z5 `0 X7 ?1 ]6 q8 u+ s" e. [    intFlags |= (UART_INT_LINE_STAT  |  \
- [2 H( T3 W; y! M) J& o                 UART_INT_TX_EMPTY |    \
9 v! _) v2 K5 K( T$ r( P                 UART_INT_RXDATA_CTI);: e; V; x. P5 l3 S2 O0 M% a: C7 j
    UARTIntEnable(SOC_UART_0_REGS, intFlags);  j+ e+ C0 i+ f/ J
}& l0 Z# ^" k" A: q- _. z) z7 Y
# C1 h/ n% C! d2 S) f. O" h
: B( @, M! `0 j. a1 C5 k8 l
void UARTIsr()
( C9 E% E" n- X$ E8 ~9 i! `{/ s5 o7 m1 M& O2 q* G* i9 K
    static unsigned int length = sizeof(txArray);
& u, B4 l+ }6 q3 i/ c: {. e' k    static unsigned int count = 0;
. r7 J; r2 d" `3 u6 ]8 H    unsigned int int_id = 0;
* W: P* S+ E* L, ~1 k) k" e8 ?( P+ p7 }. w# X5 l

- u3 @+ J2 J- E: {! ^& K2 p! y$ L
    // 确定中断源
- |/ e* Q+ R  E  Y, B0 |    int_id = UARTIntStatus(SOC_UART_0_REGS);7 r! {2 J$ u4 Q' H4 F; R

# a; m4 D, o6 \9 x; b    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。7 w+ i8 f7 ~. f' p, i) {2 [5 u$ `

6 R3 x  B# a2 M9 I( b  M
" k1 {# J/ _: Z/ r) {7 R1 y    // 清除 UART2 系统中断
* l1 }$ U" f3 ]% @    IntEventClear(SYS_INT_UART0_INT);
" K1 r# n# ~* S# G" ~0 p% B+ m6 P- U/ m0 R% j
    // 发送中断
8 }+ G0 C1 A7 Q2 ^# B    if(UART_INTID_TX_EMPTY == int_id), ^4 f$ w3 X/ p2 z  }' u$ ]
    {) {! f( H! P9 a1 a, g3 t/ \/ ?6 ]
        if(0 < length)( i6 ]- S) P! U; [- e1 J% V
        {
% b8 z# A# [7 Z/ [4 k7 [" m            // 写一个字节到 THR
4 i: N* N, k1 `" N            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);" Q8 \+ N( q* G8 }' e" c
            length--;
8 k& c/ {- x: O9 \( h, z            count++;
# g* S4 S. B4 a* O  a        }- p4 d& k+ D$ `) G
        if(0 == length)
4 U& L  y! N% T! i        {
9 k: G3 C6 @- N+ \* N% j            // 禁用发送中断. C) C9 E8 J; e* d2 q: [6 p
            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);- j! p* p& C9 ?% d8 |# Y& Y
        }
3 H* H  ^% I4 N     }
1 B) P9 T/ X8 t# j  j8 K; v% ?. y, K! u5 y
    // 接收中断% q! t" J; P7 f$ ~" t! g/ K( W6 c
    if(UART_INTID_RX_DATA == int_id)0 `2 i' W, z. X1 s( K/ j
    {8 |7 @- o2 o; D$ a* h4 E
        if(status_a0==0)
4 x# \/ b% b/ ?9 z        {
! ~: I# V: `9 v                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);) I! `2 V. Y. s
                if(a[0]=='#')9 r$ ?$ k$ A# ]* i0 E' d1 j) v" h6 F. z, E
                {: ^1 g( z3 R: i+ `# v5 D4 ~
                        status_a0=0x01;) X$ }, i* l0 R" C! }1 i0 c+ t
                        status_a1=0x01;
- ]$ _4 `0 s0 ?2 F                }: Z( i# F% n  [# L8 M
        }8 u5 H. b, v0 `" E4 a/ {
        if(status_a1==0x01)
7 ?- ~8 N* l' z2 D        {% }& }& `" n5 v
                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);1 U6 w+ ^& ]) X& v
                if(a[1]=='R'); {0 W: V5 c# G& u. L% l
                {, U/ ?5 }1 S/ I
                        status_a1=0;
0 U3 L$ h4 y$ m; K' [# g7 w                        status_a2=0x01;
( R) I' s# f% }0 j                }
- q! `/ z3 z* l) h- U, l( U        }
/ q' j4 m# ~. y( Z) I1 T" {        if(status_a2==0x01); b) {% P% X% ^- t% m; m5 R
        {6 i  z9 w7 C( l( W5 U$ b, g
                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);. n! `% J0 n" Y1 J" _
                if(a[2]=='A'), h# q' v* x( q$ g
                {$ @$ C# S" \9 s# C" @& J* f% D& ^4 w
                        status_a2=0;
) U8 W; d3 ]1 ~+ \2 ]                        status_a3=0x01;" p6 k. @; q6 D9 {( Z( y$ i' A
                }
# {. d  p( i. V/ f% f$ Q3 U5 _        }1 t$ R& u; j; F- w/ [: l# G/ J
        if(status_a3==0x01)$ X9 M6 p: k: m2 ~6 w( u8 w
        {
, A( w+ f8 n0 v- y/ z4 E3 G                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);5 Q8 [$ _' _: ^
                if(a[3]=='N')% u7 B* v- D' d- d1 h& T, r6 o$ B
                {
! d2 }! q7 M, W2 l5 Q8 _                        status_a3=0;9 c7 O- _. M/ T0 D- k
                        status_a4=0x01;/ m  s$ g; }6 Y" w, w
                }+ l* Z9 C4 Y1 y
        }
/ V4 g% ]9 k5 y/ t. a% b        if(status_a4==0x01)( l- X  }0 D$ c
        {
4 G% `8 X  a  S2 r# f6 S# c7 I# v                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
' a3 M1 B8 P% f2 Y1 K+ K                if(a[4]=='G')
+ N' V9 u8 @3 |) X2 _                {$ Q. w0 s; ^$ T1 S* t+ J
                        status_a4=0;; D7 ~5 V0 g0 J
                        status_a5=0x01;- s' p+ P  H' j
                }; C  h) f+ x" G) z5 [8 J
        }
) N# t  v4 B% a4 ?7 g/ g        if(status_a5==0x01)
6 ?0 d3 J6 Z/ o4 a! U        {
. a* b9 S1 ]8 S( y                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);3 h( N" E/ w  t, d
                if(a[5]=='E')
% T% a5 ~9 y0 |                {
' e% R$ N5 M" P, w6 o1 C9 s                        status_a5=0;
* O  W  A1 H! h                        status_OK=0x01;2 R9 u; S' E6 a- E
                }) L& z* r1 X' \$ ?3 G
        }: i' m  _" \3 G
            if(status_OK==0x01)
# |( W) ?- y$ v* y        {
% S3 i! n0 ^6 w( q, u2 Y                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
5 E( R9 i2 `* n. h. f                        lengthrx++;  @( G9 G4 N# F* B+ t1 Y% D
                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值); `* x; D, W  d
                        {
- M) p2 O4 S( U  [8 i. k                                RecState=0x01;
& u( E/ S  P& _1 {% X                        }  e) V; `! d: p! }8 \
         }
  `6 d7 Q( ^% {$ A$ A  `- M2 `$ z) |
9 B0 B+ o( H/ C: O# g: m2 C     }
$ ?9 Q( r$ b6 q( k( q
# y" E8 q1 S# e# O4 d    // 接收错误
$ ~' z1 {8 z: K3 X! }7 l1 n    if(UART_INTID_RX_LINE_STAT == int_id)
9 C' ?0 k7 l. H    {9 D8 y( ~! c3 w! A
        while(UARTRxErrorGet(SOC_UART_0_REGS))& I8 Z+ E; F: O, l4 r1 |" v2 V5 E
        {- `/ K0 t! u7 Q; c  |( o0 F
            // 从 RBR 读一个字节( S8 Y# V3 H/ Q3 ^/ y5 B
            UARTCharGetNonBlocking(SOC_UART_0_REGS);5 Y! l3 s! b* _2 C. a
        }
7 a8 c) G, T& Y, S3 V- S    }6 G* h! _0 H- O# F) z1 J
* c! I6 Z% n+ Q" w
    return;$ J, T) |# ~# ~( Z& y
}
9 X; i/ j% ?. J& u/ X% F: B6 y/ [+ @
1 W, [; S2 v3 q! T/ i+ Q- M* u
/ f% }2 H0 X& Q" f) Q' q) L  {# v

作者: Jackindata    时间: 2016-8-17 11:13
hi,; B+ ]7 j$ ^# y9 V; T1 `: A+ ?0 m9 ?
$ M  Z% F: J. e& S0 i4 s* o& O
UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。
# A2 c. @6 I5 g: z1 D1 u  q8 R- l
/ Z: X4 p& n! E1 y9 w" _要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:13) O# W1 ~4 {7 y9 L
hi,- p6 [+ R9 R0 {& r) S2 o6 D2 B

# b7 p5 k9 d% n. l* RUART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...

- c& u) l1 ]" f% L+ kvoid main (void)
1 k6 O6 F) r9 b; x  f5 c% l& f* z. O{" ?) T$ S/ U5 i' V5 i1 j
        int i,j;/ U2 ~8 k8 i! X
    char *str_buf;5 y5 E7 ]4 k8 k7 f  r5 l  R
    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];2 H6 g" Z* I% W  c7 S" ~8 M. \$ n6 i
        double est_L_b_=0;6 S; e8 V7 T3 U
        double est_lambda_b_=0;
7 T, K, |  n) s! {3 y6 b! }        double eul_[3][1]={0};
: [" ~0 ]7 g0 M+ m        double est_v_eb_e_[3][1]={0};$ W' D, D. U) T' F* K+ S( l7 H
        double est_C_b_e_[3][3]={0};+ [- A; v. z5 i9 ]8 {
    char *qm;+ o3 Y3 [: ~4 R% s8 n
    char rec[70];) b- l- w( ]; W! R4 X' O& t8 }
        double L_b=0;9 n- S% m1 o5 U1 x
        double lambda_b=0;
& X+ j% c5 W! Z; r' J1 Q$ P        double h_b=0;- A7 r, s& l' b8 K* A
        double rate;" t- n$ L; n# n- x

  Y& I9 X. S$ T1 |# j  k  a5 Y+ x
        // 外设使能配置
% B4 X- q/ @6 a& N8 F, J        PSCInit();
; H: r9 R8 P2 k$ E  a- R" A8 t* D  ?: G, u
        AppInit();, D0 d" g, h% v3 M, d1 N5 ^. ]$ c
) }1 \  m" [: j! l
        // UART 初始化! t" y3 i8 M# j
        UARTInit();; m( t# e' y7 }. S3 \

& A& u9 w4 V2 J) Y+ P        // UART 中断初始化1 S  h6 y( U6 z
        UARTInterruptInit();
8 s" e' W( U+ ~& s" B# }2 q
/ ^$ T% L) o  F) Q    evtRcvd = 0;. i, G$ U- S$ \4 g1 q3 ~
    RecState=0;
2 B2 v4 ?; A& w) b6 M3 S    /* Initialize */
9 U, u/ f; o. U
: C! N" R4 \  _5 j* p4 N    printf("DSP subsystem ready\n");
5 ]5 ]2 ]* s2 U! g6 C/ b) B# W
  D. `. z' x4 G* e, \8 C    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));1 `, d+ z, A. ]

+ v/ i% E7 T+ D0 j  I7 \for(;;)1 [. n! N4 T5 V% K# E
{
! b- z% b# b. r) \: z        if((RecState&0x01)!=0)4 }* g% @& H' [" {) [) Q4 c. g# a
        {
) d6 A: a1 i) u& |9 D) U' i8 u3 A$ p                printf("liuzhenxing\n");
% w0 W& i5 y/ v! h0 O, v        }4 [! b5 o: @6 I/ h* r- N; V
        else
/ F2 x) N' T5 s        {+ o7 @* w5 t& z! j4 @6 R
       wait_event();
; `; w, T: h+ |9 ]4 c) J3 s: R1 L* I6 B% v2 N" T1 t3 x
           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针
- t3 L% d% e" z. D! {! B: X# r- J7 o3 c) R
           for(i=0;i<60;i++)9 o. J2 v* {- H: h7 {# l. n
           {
7 N% V, Z, a( S2 B. R                    rec=*qm;7 F( P$ Q: S  {+ |2 b8 A% s
                    qm++;
6 Y* C  ], T. i5 H# c, [- h/ e           }
$ B7 Q* p+ Q7 t+ N+ H1 a8 w( V
' ^3 b% B0 O5 j# C1 _           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);
) T- U$ Q& \! \, ?+ J2 F7 k) q: N" Q2 |" a
           L_b=L_b_receive_double;; G0 w, e) d/ V! ?4 _. S
           lambda_b=lambda_b_receive_double;0 R' Z8 U# f$ _1 d& l
           h_b=h_b_receive_double;
% k* |4 k6 w8 e  U# ~/ @3 X" a           for(i=0;i<3;i++)  y* T- {$ Q( X5 y3 T! g1 w) S0 [, r
                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];
  o( p( |6 I9 R3 S4 T5 o: M: Y7 }           for(i=0;i<3;i++)
* W, q& {) v4 L8 ~2 g, R$ G2 `% p                    for(j=0;j<3;j++)
6 @5 q. p9 v8 f% ?; f6 n7 U5 R                 est_C_b_e_[j]=est_C_b_e_receive_double[j];5 b: r) f% k+ r4 w4 L( x& [2 T" N- U

) z) o2 n* q/ ^" {% W% I( T                printf("L=%lf\n",L_b);9 ?4 j+ ]* n* R- z; {' m, [
                printf("lambda=%lf\n",lambda_b);
  r; p% X/ t4 z, a3 H) N                printf("h=%lf\n",h_b);  Y- K) g# M8 T' X! M% B0 y
0 Y$ T4 ?+ M; N' H7 ]( x+ y
                for (i=0;i<3;i++)
/ J# j1 f" c/ p; ?# t. @: P                        printf("%lf\n",est_v_eb_e_[0]);$ u2 r7 I9 P5 h4 i* a' F5 e5 P/ G
                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]);
$ a' W9 ?8 y3 t+ `                printf("rate=%lf\n",rate);. |' s- {2 c+ w! _

: b" o) S* d- I) Q  R9 x                CTM_to_Euler(est_C_b_e_,eul_);% v" g9 c. N& m4 P
                for (i=0;i<3;i++)
" z1 t3 b5 M! T                        printf("%lf\n",eul_[0]);
2 I2 w1 ~& f  {& e; m: m$ f                printf("end************************\n\n\n");2 b7 V: ~* O/ G5 [( z  L" K
+ `( g. K% A- C! f# i
                /**********************************************************************/
6 b+ z+ B$ j' G$ O9 {; g/ [  S+ A0 Y, Q) R
            char flag[4];
$ ]1 P* [7 l* }6 j% x
! X% {- ^9 n# c( m1 _, Y            flag[3]=0x00;/ ?+ t, W1 M. ?4 P
            flag[2]=0x00;& J  K  H# Z4 e& V
            flag[1]=0x00;
0 q+ L# }! _* x4 I% g4 b            flag[0]=0x01;1 C* q* s0 H' X! P* X" G* b/ H  g

5 s/ }/ k: o" k; S    /* Allocate I/O buffer and init with string */
: g6 J) e& s* O& D  {! l" Z    str_buf = (char *) malloc(80);
* n. Q: R9 ~% F( R. E    str_buf =flag;: N; Q; V% W6 N
1 A- w1 D- m( j9 x4 k5 w% P) `
    /* Send buffer to remote CPU */# m" v, O  P3 M' Y
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));
  ^. X, l7 S' ~2 _3 s1 T1 x: g+ C5 {2 H# f$ \
    printf((char *) myPayload);; A" i  n% a4 ~7 h* n6 ]" A) O0 X
        }
0 M6 d8 N+ T; v* O  n; y* \}4 N% p6 g* G9 V) @/ p  d0 c6 R

; n) c8 _: K& ?    WAIT_HERE;8 g! }! C5 g$ u- s, d
}& |" a# w3 _3 u: m

作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:7 f% I# K$ U7 ~& B6 M* H
我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。) f! L5 F! B3 P3 [# n
然后我把双核通信的初始化屏蔽掉,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( u% g+ l8 B6 ]
syslink 的初始化是否成功,notify 通信是否正常了?

- {* r4 ~% B7 _. x& R% P双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:54
4 o* h6 p% q8 I) D0 n; j" ~syslink 的初始化是否成功,notify 通信是否正常了?

2 X1 X$ j. d8 x: b! N0 k! G# u8 E我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:20
$ x! T# U, Z2 h- |我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
! c& K* ^6 f# @
建议查看 UART0 及 DSP 中断控制器中断相关寄存器值 是否正确
作者: star_niubi    时间: 2016-8-21 14:56
能否说的具体一点,就是双核通信的都修改了哪些寄存器的值,这边双核裸机通信的资料很少。




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