嵌入式开发者社区

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

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。7 D- r$ @; v: s+ c  F' s8 e) L
我是在DSP初始化这不太明白。; _2 ~  L( A: ]5 c' m, u
初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。
3 F) y) B8 n; c6 W( L
3 `; ]8 z1 g, M3 e6 z5 }
8 ~! Q0 ^7 ^$ ]) N! _% `首先        PSCInit();//UART0使能
( v. Q% a- {/ u  J; C5 ]2 H/ @void PSCInit(void)
+ \5 w! K3 M  @9 q# o{
  n, Z  u2 |, f  ~$ F, s        // 对相应外设模块的使能也可以在 BootLoader 中完成
6 ]( s3 W; W; T; I3 `% V9 J    // 使能 UART0 模块
1 y1 R- h% T; d( P/ u0 I) E$ T    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);6 T1 i$ m/ _9 u1 O6 ^2 N
}7 `) F- W" {: {/ O0 M& f
. z1 _  U0 ^8 B! {# Q% L

! c* j1 U8 `# s' j, }: \  u然后是 双核通信的初始化           AppInit();! M' t5 D3 u# B9 F: N
void AppInit(void)4 V3 \2 s! ?* G; v& t  S( v* E
{
, q( T7 |6 h, T, f/ N" t. I    /* Structure to initialize IPC (see Ipc.h for definitions) */
4 G& j: Y6 N5 @- D3 J1 g5 V: H$ x1 u    struct IPC_cfg ipcCfg = {2 L9 c& _7 s3 ?7 J0 u* t. R
            IPC_DSP0,             /* local processor Id */5 _4 c6 ^, A! C0 y$ D
            IPC_ARM_HOST,         /* remote processor Id */8 N% |7 a( o- M2 \: r; S/ t- Y& F
            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */
; t1 i6 O" V4 k: J, J            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */
* [8 b- M8 [) l" X) O% ~/ L            NUM_MAX_EVENT,        /* maximum number of events to be created */
; I. [- ^# R# Q5 D& w7 W9 V- Y+ B            &ipcPvMemDsp,         /* local side private IPC memory */
' h+ s, n8 @  A; _+ `            &ipcPvMemArm          /* remote side private IPC memory */
/ W4 d. ?* H( n- {3 ^1 [7 r    };
; x; q- K1 h' z1 s: x4 e    IntDSPINTCInit();
) j& J. C; h% z9 @' l    IPC_init(&ipcCfg);
! g' e1 g# h+ }9 q    IPC_intRegister(C674X_MASK_INT5);
1 ?# K" a+ `1 c- ?    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));7 Y+ S6 g7 H* m( Q

& |$ `* J3 a8 _  _5 m$ d/ O; T    /*  Enabling interrupts for DSP C674x CPU */% d! V; f5 R! H$ ^/ `: n2 }
    IntGlobalEnable();        /* Enable C674x global interrupt */* g+ u% _* W7 O- f7 a2 L' P
    iAssert (Notify_start()); /* This will enable IPC interrupt */
2 h6 W! O8 a( S) |% |( ~# e}2 j. s0 g" Y) K) I! w4 C
0 l# ?/ ]2 \6 {" @% P
然后是  % T0 }5 d# }+ F: i- J+ f
            // UART 初始化
+ y+ W0 I5 @6 j2 W- M: m            UARTInit();4 N: x0 ~7 A% l

, r  T7 ]# z+ ?; B; G: D, ~3 J+ p            // UART 中断初始化
& S/ K3 L$ V  s& Z3 B7 ^            UARTInterruptInit();3 \+ i( y; v! C# G8 \

; ]4 y+ c" F- ^) b; G8 `
4 ~' h% |7 O) a6 Dvoid UARTInit(void)
9 ]) `( Z; X! \5 d{0 R' K9 v+ H# L& a( ^3 ?
        // 配置 UART0 参数
5 K! m& H1 E+ W9 i5 L! |        // 波特率 115200 数据位 8 停止位 1 无校验位% h! A7 F) G, H, T
    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,
! a' O& e4 I0 o9 G4 Q8 |                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);; R8 q. Z5 R6 j# o2 X
        // 使能 UART0
% _! ?6 w* Z! T. u, H        UARTEnable(SOC_UART_0_REGS);7 h( c& n! c; E2 N. a( Q8 s# L4 u
4 C& Z$ B3 g& }* ]' G  T& i
    // 使能接收 / 发送 FIFO' B3 c+ a6 c2 a* I
//    UARTFIFOEnable(SOC_UART_0_REGS);
  `. ^: q; y( x3 p6 M. g9 h& [, E' a& a+ e+ ?
        UARTFIFODisable(SOC_UART_0_REGS);
0 C7 ]9 F6 k* \7 {
! O2 Y- i  D  b1 O" @    // 设置 FIFO 级别     接收FIFO的级别
  W7 |* @' n+ X1 @4 A: h//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);- u' F' k: M3 [4 @6 I: e- l
}
7 l  @" I& ^4 n3 G0 x
* ]. X8 X6 O1 @( J% W
4 \9 D& d! Z2 ?* U2 |& T1 M
void UARTInterruptInit(void)
8 T* p& I, V3 z* _2 H: Z{9 b6 P# H( r( s% m3 h% g, f* R
        IntRegister(C674X_MASK_INT4, UARTIsr);
' ^% y  ]$ f, U( m! z+ g        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);
. _. \# s* c" g$ M/ O        IntEnable(C674X_MASK_INT4);0 x% U7 \8 D5 l9 _, v
* t) {$ I; P/ L0 @/ e
        // 使能中断
3 R& `8 C4 A  s) C# n6 }; k. Y        unsigned int intFlags = 0;
9 T; `& f) R0 a1 N/ {, O* }    intFlags |= (UART_INT_LINE_STAT  |  \4 v; ~. E5 D, p! m: h3 A
                 UART_INT_TX_EMPTY |    \# v3 s3 e9 q2 W+ E
                 UART_INT_RXDATA_CTI);
) _/ H+ C' k3 e  k    UARTIntEnable(SOC_UART_0_REGS, intFlags);8 _! l$ a3 p& U2 _& N
}$ i1 I+ B. E* ^

. d( t: _" f4 p$ u
0 s6 t  B0 j" O, N! hvoid UARTIsr()1 g& G' V1 R% l- b) F; |
{
" M# k# K- {3 I" t$ P  [3 C    static unsigned int length = sizeof(txArray);
' {* D3 p* o$ l/ ?0 N8 R7 O    static unsigned int count = 0;
4 S! M' P4 P2 u8 d    unsigned int int_id = 0;& y9 F* D# q, x2 N

/ o  I: M3 s# G4 D# F/ a/ R' U& p, B: m- ]* b. ]- H
- O9 |& g. ?: s. ?# H: z1 V+ O$ s# L
    // 确定中断源
% D2 k$ J$ I5 U* J& M% k/ u    int_id = UARTIntStatus(SOC_UART_0_REGS);! j1 T/ Z$ B& N) L) S* {& X. T

. w: O  R+ U1 T; L: ~0 s    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。, T6 K1 u) s' C/ s, B) ^  M' i
- D$ c/ K6 e9 t2 Q" k
% s* P; {' v% ]9 z# A9 b' @
    // 清除 UART2 系统中断
+ v. ^) @& g1 G9 Q9 s( W: w4 G    IntEventClear(SYS_INT_UART0_INT);% \% v9 P+ V  d! _& _5 O

3 i0 V5 t" _! F2 e    // 发送中断+ _2 Y. E0 M: e" s: o# K2 i
    if(UART_INTID_TX_EMPTY == int_id)
& F& ~/ h' T, H- u  v  f    {- g3 }+ V5 G/ Z# W
        if(0 < length)2 ^2 f0 q3 ^$ t  w! m
        {
3 C7 t. `7 w+ z( T            // 写一个字节到 THR$ w& T3 f9 m+ L. W8 }; V
            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);: R' R. L( u! {" f' {
            length--;9 f' B& P$ z6 m( C
            count++;
: j' x. F' ~/ f" S        }
0 Z2 ?; s7 X% f( }        if(0 == length)
& l: v7 s0 I- g1 m  w6 e8 n3 h1 i        {, Y" Z0 R9 k9 c+ R& Q
            // 禁用发送中断
/ t( Y3 f, h" u' l            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);
( O! C' @: h% m        }8 T0 i$ P$ \+ D1 }4 P4 x/ K0 E) ]
     }' U% ?/ C( x9 ~  n0 [4 N5 `

9 t9 u& ~3 w! v* R1 a* I, U7 m- {0 U% v    // 接收中断
2 p! D; z- b7 f4 C/ k) Q    if(UART_INTID_RX_DATA == int_id): `+ F6 K3 p) T. l& P
    {4 n( z  {) ~1 a+ g
        if(status_a0==0)$ M5 l7 o  D/ O3 o# W
        {
, x4 W* E0 f+ }                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
4 U/ Q0 e; K; O5 V3 G( w8 s' D                if(a[0]=='#')
" x' _) D! R2 V/ _% F" y$ L                {: V1 p5 M- G! h' {; f; l
                        status_a0=0x01;
- z1 z5 c( \' o3 H& L                        status_a1=0x01;4 v" p. u3 V3 m% |
                }- t& N+ X$ o) ^( I& G
        }6 N3 @8 S  ~8 ?7 R8 H- X# _5 L& J
        if(status_a1==0x01); _, ?+ B6 S+ K, Q4 R+ D
        {. U% d3 s& Y8 ~7 k$ X$ e. h! p
                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
) T# G! r0 Y& g( K. L                if(a[1]=='R')) B% W0 ^0 y3 d+ T4 _- v
                {9 B8 s* S$ c" I! O
                        status_a1=0;
( @+ x* J' L+ f, E8 N: l                        status_a2=0x01;0 k2 g$ N- |. X& r& n6 \! m
                }7 x, z' X9 A& `# |1 J; @
        }7 x9 h7 b7 y3 H! A, D6 T
        if(status_a2==0x01)9 K8 T  U; U0 h; e
        {, B, N% m. N+ j# V# H$ D( W# ]& H
                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
5 \5 @+ z3 n$ {- J) `/ L/ J1 {  l6 q                if(a[2]=='A')
0 E1 P/ c* O& s; i; E2 R* e+ U                {/ Z! ?: x: f, r" Y6 A3 c
                        status_a2=0;& z0 C5 v# V% `
                        status_a3=0x01;
+ v; z7 `5 D( N                }8 {" \4 C0 |, v; Q2 T
        }
7 h, {' U4 e% _! X6 u# L; y4 O/ X        if(status_a3==0x01)
7 i# @1 O' M" c        {
; Y7 w# j$ J5 O8 L, m  z                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);* {! e4 ?: F- n- e5 y
                if(a[3]=='N')
) J( {8 L( N; t9 B% w% y                {8 K4 s- V: o$ t
                        status_a3=0;9 V" p/ p7 d* I  c5 s3 Q
                        status_a4=0x01;
. A& ]! o, o( s                }
& h4 H6 S0 L0 E  A* I        }
5 @( c6 ^+ V7 B) @! B: g# b' k% G        if(status_a4==0x01)
; Y6 G) @$ h6 D* m% C6 U        {
2 P2 f2 T2 `4 r$ W# f, N                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);$ T5 O- G% f( W
                if(a[4]=='G')
& `/ @- i, o: d% Y9 i                {
1 W1 t6 ]( j, Q. J6 c                        status_a4=0;2 W$ x; Z0 m' v5 [% j
                        status_a5=0x01;
8 G( ^8 J$ @5 F0 n, o                }
. v  h1 J! M/ v+ O        }, O+ l% u9 ~: m2 o
        if(status_a5==0x01)
& I( S- d! J) ?% d5 h        {
9 f: S; w! q$ Z9 `! V                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
3 W* G, I8 V1 O' A! P                if(a[5]=='E')
9 t4 c' ]3 _1 t3 Z8 ~# K6 B8 L                {$ h" T6 W- c1 N8 B7 R1 u" G; g! f
                        status_a5=0;
& V& U& S0 a+ z3 L9 [; P! X3 E7 E                        status_OK=0x01;6 g" Q9 D2 ^6 x9 P
                }
/ @" H  I" M! c9 J        }
' X5 S- b* N2 C            if(status_OK==0x01)
1 `, ~4 d4 @& S+ V1 _        {, L) O, z. ~+ ]! @3 K
                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
: d! W) f5 x5 U8 o/ ]                        lengthrx++;5 F$ x( C0 k  N; ?3 e: B
                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值)8 o* |; \9 W0 H' C: o' Y) c/ K
                        {* W7 \+ c7 Y) P' u. y" N
                                RecState=0x01;0 [3 y) _: ^, Z  p8 c
                        }
% x- F- C3 N  Z# S         }) S% }; F/ i! F" k
4 H: d' i. L- c7 j; P
     }9 W# F3 N% e: Y! c3 |; l

0 i* a( Q1 }) y) O& d7 s    // 接收错误6 n! ^5 R5 X8 ~# U$ V! R
    if(UART_INTID_RX_LINE_STAT == int_id). v7 E1 d$ F3 J3 j. \
    {& w+ ~# M0 M+ h3 d7 C6 j4 S3 k
        while(UARTRxErrorGet(SOC_UART_0_REGS))4 v6 F2 z0 i4 j% h8 {
        {0 Z7 x/ c# X) \2 p, h8 Q
            // 从 RBR 读一个字节
4 E- q* O$ g: K7 k' g: h0 \6 U# E            UARTCharGetNonBlocking(SOC_UART_0_REGS);
, t6 L; Q' d2 B6 l0 x; n* a2 u        }( c' v- S: W9 F1 _$ h4 x
    }. k3 U- Z: P- z; c

% ?6 z7 s5 y$ Y; N6 c9 @! q5 P    return;7 P1 s( ~4 c8 |+ n; W% @
}
' F0 Z* [9 i8 j: W& t0 F4 |& C# ]
5 b0 Y$ a3 V+ s2 \7 V, T

# _, L! ~) z! O. X7 N
. h8 [9 V5 W+ H) o5 t8 l8 s
作者: Jackindata    时间: 2016-8-17 11:13
hi,
& w+ w3 w  z( @# g. v
+ q  q9 ^# y# ~8 f3 N  t4 [; lUART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。
! R' q6 b, C5 ?1 @3 m& u$ S8 P
9 K  |5 K/ `3 A: `) h' Q* j/ h要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:13
$ m1 b) O& A9 T$ z: ehi,
+ w# _. q' V& O% T6 C
) Y5 K0 r$ c* j1 `; L2 \/ V& M% l+ XUART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...
: P+ i2 F9 e, u% A
void main (void)2 V+ S+ V5 u4 L
{4 b2 `: F6 W! S* F: G- Z0 G
        int i,j;  b& K+ j+ A. h0 v+ y4 F
    char *str_buf;) B& Y: E! F" C; t& h" ^
    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];5 ?% r, Y3 C" O9 L) x+ n. c4 v8 G
        double est_L_b_=0;& p, g: O) ^6 Y6 ]# C1 Q
        double est_lambda_b_=0;: a, e2 c1 u- K) J9 x& i7 O/ G3 o1 Z# {1 T
        double eul_[3][1]={0};
2 a% t: [1 a7 ~% x  I        double est_v_eb_e_[3][1]={0};
- _3 I6 c, d4 z1 F        double est_C_b_e_[3][3]={0};5 P2 _/ v6 W9 M* _4 d, x; W8 Z
    char *qm;
/ S$ n* l  U  |8 \    char rec[70];
. O2 \7 w  {, Z+ l& h7 z% f        double L_b=0;
9 }2 Q' i4 o4 h        double lambda_b=0;1 p9 L3 u# [+ U- g/ k+ |
        double h_b=0;- V; J. t1 S! z; Y4 \5 o
        double rate;1 `2 T% Y9 u' E5 Q$ M. V

% x7 Q" ~. n3 Z) U9 M! }, T; \0 S4 S  K" `/ i
        // 外设使能配置
1 e$ A7 M% \# q8 [8 _& T5 x0 w        PSCInit();9 L! P" f4 @9 @  a- `* u
* f1 b7 `! M0 B- I7 v: x
        AppInit();
. g; X: j- ^1 \0 Q( X8 v! l2 C, h* x' M/ Y. S8 c- {/ h
        // UART 初始化
/ u! |# N5 y) v  `  w' @        UARTInit();( V. j" `& f9 t5 W% h

( L& r' a$ n7 m) U! U1 P        // UART 中断初始化
5 S% h  ?4 @$ D. Q$ G; H        UARTInterruptInit();
% G% g' U) \. \% Z* u% z# J1 |7 ~. t3 {" m( n, g
    evtRcvd = 0;
* @7 N3 G2 y# T! t3 p! q    RecState=0;
1 N1 i4 y. S  D8 L6 a6 G1 U    /* Initialize */3 M0 ]* [$ h- P, w+ G( t

8 X. \) N+ f) n$ V    printf("DSP subsystem ready\n");8 w/ Z7 o, S+ q0 t$ [, U1 F3 e8 i" S
0 s( P1 q0 ?% \7 }. u1 ~5 e
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));* F& L. K5 R5 f# s
. |: K4 ~) S; w: }( h# c) A
for(;;)* [  K6 ^" N, H& _. H
{. U/ A9 K4 m% {
        if((RecState&0x01)!=0)# o% ^, y$ l3 F5 z) G) T
        {
; Y: L( C  E! X! }0 [! }* r                printf("liuzhenxing\n");( V! T# H0 c; T- N4 Y/ q
        }. s3 }  Q  P6 @( D" _
        else
7 V' |" p. \0 J& {: j, P% L# l& Q* J        {* V* K  ~, d* P. c
       wait_event();# p& M2 h, I) L( H) e0 j9 E1 d

/ x0 R3 p  F% _           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针
) v5 X+ Y: O) D5 i$ Y0 ~4 c. i& O' S, u! k- K! Z: b3 ~
           for(i=0;i<60;i++)+ a/ a6 G# D7 X0 w" V9 h
           {, O* r* M* _* b! U7 s# w' X
                    rec=*qm;
8 Y8 q8 T+ A8 e9 h6 ^. h                    qm++;8 }. N( u1 Q$ }, [" K/ h
           }* \" ~8 W- @( G$ J9 _4 R% x- B

, q/ D5 I3 ~9 X* _' p% U           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);
$ ~4 \. Z" Y) K. }3 A& v+ T; T/ V
6 A/ L; X! {) Z5 I* d           L_b=L_b_receive_double;
4 |& A$ p, g. C8 y5 i; T9 |           lambda_b=lambda_b_receive_double;0 b2 E0 O: r1 o
           h_b=h_b_receive_double;
9 p8 J$ @; e& J           for(i=0;i<3;i++)5 Y% d% h$ |7 L1 k& q
                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];$ d3 N5 [# [% ?0 x  Y* E
           for(i=0;i<3;i++)$ O. `: m3 T1 B
                    for(j=0;j<3;j++)
0 a* \  d; z8 e' J1 K: t                 est_C_b_e_[j]=est_C_b_e_receive_double[j];
: |" |. D  R' N) g4 J, i' Z+ Y8 v/ N$ X. O
                printf("L=%lf\n",L_b);
1 n2 ?6 w+ j9 A7 n3 i3 ~: }0 c                printf("lambda=%lf\n",lambda_b);( q7 H1 P- L) R) t4 Q2 p% Y* ~
                printf("h=%lf\n",h_b);  P) h  ?) [( M! R
/ I4 Z( n5 m+ K8 n: r9 f5 [
                for (i=0;i<3;i++)' S% `- h/ U& z% V$ N
                        printf("%lf\n",est_v_eb_e_[0]);
4 ?* x: `! e2 O& a( {4 Z6 o                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]);
" m7 C/ y7 n, ]' ?9 A5 E                printf("rate=%lf\n",rate);
7 A) C/ c1 `$ F+ j7 P$ [2 O& }! s% a( |, `: x: b' Q  B
                CTM_to_Euler(est_C_b_e_,eul_);
1 U# s2 \( p, }8 M                for (i=0;i<3;i++), E& O0 l1 a. X. V- D  w6 y
                        printf("%lf\n",eul_[0]);8 I% G5 |' Y* K9 n% x, B
                printf("end************************\n\n\n");  J* X  z0 d6 Y+ Z' T+ F# m
/ A! W! i3 s( T! {
                /**********************************************************************/
) O" [3 x/ K: S# P* L1 G+ s: Y* c8 P2 {: d" j/ _
            char flag[4];" ^: u7 h- |9 I- A

2 Z  V. b" D' t            flag[3]=0x00;
( o& c5 I  C5 @+ y* h$ h            flag[2]=0x00;1 b' _0 I# |( V
            flag[1]=0x00;; G4 c/ l) ^% y! t
            flag[0]=0x01;
( |4 R3 ^+ Z% F- p7 F/ w0 H+ J* p. T8 {0 c) W& g8 Y: Q- H1 F
    /* Allocate I/O buffer and init with string */
0 M6 X; `% l9 i3 n7 q1 i) s# C    str_buf = (char *) malloc(80);
) d6 ^; O; q% R9 d: ?    str_buf =flag;1 l+ r4 g0 f1 M  J! I7 ?; ]8 d
2 b/ u1 j! N2 u$ I
    /* Send buffer to remote CPU */
) n) G2 n! F, j* i0 o( y    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));& K* I3 _$ o, ?4 P$ {

# @+ k. v8 W8 ~1 a5 R4 q4 m+ D' a    printf((char *) myPayload);. Q( R( K/ U& k5 w: t' \
        }' ]4 D4 h+ e9 J) L; \; ^2 N4 j7 e; A
}: q( ?5 K2 d# v9 l! C5 @
# R% z* Q' I* k* X7 r! o# j  L
    WAIT_HERE;9 z- w) }  ], c% C* t- v/ O) U6 a
}4 ~$ p1 Y: A! D: p! u

作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:
$ O) ~; N. i1 y3 l我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。
/ P( o/ j& B' y: 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
: M# X4 q# w5 y+ t" Isyslink 的初始化是否成功,notify 通信是否正常了?
0 E) _- O: [5 Q# M) _  `
双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:54' \" {  X1 r1 A; V: D. o9 J3 Q: z8 o
syslink 的初始化是否成功,notify 通信是否正常了?
- ]( R" i0 F2 W: Z) M5 e
我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:20
& g( c) t/ s; u3 @0 q2 C4 K6 \, T- ^我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
; L( [2 R: J% n6 }
建议查看 UART0 及 DSP 中断控制器中断相关寄存器值 是否正确
作者: star_niubi    时间: 2016-8-21 14:56
能否说的具体一点,就是双核通信的都修改了哪些寄存器的值,这边双核裸机通信的资料很少。




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