嵌入式开发者社区

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

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。9 D& P+ F5 ^9 B8 m1 }
我是在DSP初始化这不太明白。( O/ v3 O1 F5 K% Q9 ?3 l' F/ Q
初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。$ W; X" J7 y7 \/ u; C2 K

- S0 }. _# H, z
; k7 f. T( S1 t8 T* j首先        PSCInit();//UART0使能
5 n! B; E/ F8 [8 o; avoid PSCInit(void)
) f9 |; S+ e4 m" P  c6 D; `{% G3 n! w# B! Z
        // 对相应外设模块的使能也可以在 BootLoader 中完成
# i& V* I. i1 U    // 使能 UART0 模块' c0 z- e' M) p+ t
    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);
' D  {# a% B: l" [}
* i! D* q( D% b% d
5 w* J) c0 `5 s1 C

* g1 T: ^; {& z9 S然后是 双核通信的初始化           AppInit();8 s5 q% ~6 s: n/ m. ?8 X
void AppInit(void)( W, l- A3 s; p, t! J. H) _6 T# _$ J
{
$ y& j* j6 z+ M4 T8 {, k- D    /* Structure to initialize IPC (see Ipc.h for definitions) */
4 w) L+ A  a- }    struct IPC_cfg ipcCfg = {
4 p+ L1 m0 n/ B4 O            IPC_DSP0,             /* local processor Id */
" @. E7 j0 g+ J% d8 O2 f7 R  I            IPC_ARM_HOST,         /* remote processor Id */' A4 J3 d; @: g& L/ L  ]" H- e
            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */, E4 [! D) j: {; J
            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */3 R1 S# B  d& Z! Y& ^$ \3 K
            NUM_MAX_EVENT,        /* maximum number of events to be created */9 K- }  f: b! ^' _. q% M4 w
            &ipcPvMemDsp,         /* local side private IPC memory */, Y( C& M8 P4 l$ A
            &ipcPvMemArm          /* remote side private IPC memory */4 k, Y! ?5 R3 E
    };
3 k% m1 |! p; j! f9 o) Y    IntDSPINTCInit();. g+ E" t! N7 f9 J2 F, p' U
    IPC_init(&ipcCfg);
. R( s- J' F  s9 Y- s  K, l    IPC_intRegister(C674X_MASK_INT5);
- }- ]5 \" g* ]* j0 D    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));3 R; e3 c( l  r8 f7 Q0 a

" `1 [" d2 V# @7 {    /*  Enabling interrupts for DSP C674x CPU */
! i1 G0 C- M; ~7 _    IntGlobalEnable();        /* Enable C674x global interrupt */
. A4 E" K+ W/ \* k3 j% h) ?    iAssert (Notify_start()); /* This will enable IPC interrupt */
7 ~  E% H, t: c" F6 x5 w}
! x1 b2 C" _& t6 \6 U

- b' G  d+ b1 B3 e然后是  
3 E) k. C; f8 S) j' \- O: e) T            // UART 初始化9 ?# H) t- V( m5 e
            UARTInit();
: r' H* e$ F% \0 b1 p: K$ Q1 P8 t0 R
            // UART 中断初始化- N" i# g$ j4 P2 Q
            UARTInterruptInit();2 V- ]2 s7 k- f! [- _
$ v, u" u6 I+ D( n$ V' g

  }& s; _8 F0 j, B$ v4 D; n  Svoid UARTInit(void)3 Q* J( V$ `: J( n) W" K( @
{+ H, _' n4 P' ]# w. o0 r5 r: S6 [
        // 配置 UART0 参数9 j. x1 j$ O, W* h# s( G2 W* v
        // 波特率 115200 数据位 8 停止位 1 无校验位
8 {9 T; Z/ ^( g7 @, G    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,
- t2 p1 \- T' z  v                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);" C! a, y' W- c! z3 {) g
        // 使能 UART0
0 }/ T, n# J) O0 f; L/ W" ^        UARTEnable(SOC_UART_0_REGS);/ P8 z0 ~$ C2 E; f3 g
+ ?: g; Y" n+ G/ s( ~
    // 使能接收 / 发送 FIFO1 V8 O2 s: W$ u8 t
//    UARTFIFOEnable(SOC_UART_0_REGS);
+ n' N( X1 A- P' M) p0 ~% m
+ P  k0 z$ C* I& O        UARTFIFODisable(SOC_UART_0_REGS);5 J( h$ L; G1 ^

* d% V- B, H' b9 y    // 设置 FIFO 级别     接收FIFO的级别6 K# g; U8 s9 q) s: v1 X  d' Y& R
//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);
5 q; z1 C$ o, q1 m1 r}0 m  t% _" [7 C

$ I3 d) [" V# G
2 D! F+ c  R8 j1 rvoid UARTInterruptInit(void)
# G, l6 @# [; b% v8 C. N+ d{* q& O) p3 O/ K+ S0 t- r) p
        IntRegister(C674X_MASK_INT4, UARTIsr);" R+ m' O) q; E0 S$ A
        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);4 r- A" [2 e  w  p
        IntEnable(C674X_MASK_INT4);0 k0 b8 Z0 h2 [

% o6 e9 |, M  D+ O( t# B  h: k: r        // 使能中断
0 y' g8 Q, u; P' |' v        unsigned int intFlags = 0;
2 w' ^$ E( P0 O& ?$ y' r+ T    intFlags |= (UART_INT_LINE_STAT  |  \
& L& \) z2 b' j( ]                 UART_INT_TX_EMPTY |    \
: ^6 K3 J4 a8 F  ~! q                 UART_INT_RXDATA_CTI);  H$ h  E4 ?3 \
    UARTIntEnable(SOC_UART_0_REGS, intFlags);, a8 }" a9 ~( E& A
}7 h" F9 d  E1 P( h7 w* a3 Q2 i

: y( e% p3 Q' ~- p
- |  E" ^- f* [2 g" {void UARTIsr()) E. i  m3 ]: \( o
{
. r! e/ e+ K5 h( O, m    static unsigned int length = sizeof(txArray);
( o( n) v$ F) f5 L    static unsigned int count = 0;
8 u! G) h( ~$ j    unsigned int int_id = 0;: d6 E. `2 _% T. e

/ |% l. S7 T- b- h
6 h: s% Q, p4 D
' o$ ?- j# X9 n: w& [  i8 I    // 确定中断源
# O' o8 o4 `, I% _) m    int_id = UARTIntStatus(SOC_UART_0_REGS);' y* H1 Z3 ]! i
. e( A( ~0 ~6 W8 \( C; a3 z
    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。
  }" S, x: b. y
; ~" Z7 ]9 f  s7 n9 V7 m4 F: E8 z5 i, F
    // 清除 UART2 系统中断
, j# k9 c, w4 d& J6 W$ e    IntEventClear(SYS_INT_UART0_INT);: M, h" m6 P) U$ y9 l% ?6 C  v
. p+ U- ?( ?) z- k3 s5 e
    // 发送中断
; P: S% z  x+ m( V# m) E3 |    if(UART_INTID_TX_EMPTY == int_id)
8 n, v8 s# s5 P6 D1 d1 S  o    {3 O, l$ d; g# d$ g$ A' m/ M0 A# X
        if(0 < length); a- a# ~6 h& `% ]
        {  ?/ h, t, p6 m3 u9 H; c* l
            // 写一个字节到 THR( }* e9 u  b+ s9 f' g& c3 \
            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);
! l2 V( N) }/ Q1 |& Z0 }. `! M            length--;: o) D! t/ M. o3 m0 T: W; W1 f
            count++;) x( j( t9 l, s# {) }
        }
# L0 f1 x) I6 V' C" j! R; ?( |% w        if(0 == length)
0 A) \% Q: G& b! ^0 A# L        {
* N2 Y* P( w4 g) Y            // 禁用发送中断
) J  P* i* T2 X            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);
# g: t2 ^. e3 F3 @* d' @% y        }
  K; t% h+ Q9 E8 t( e9 K     }
, l7 v+ Z6 }% a% ], w, K& @$ ~: k, v. O4 C/ K. U$ `$ E1 K! x
    // 接收中断1 `5 D. @0 K; w' D5 y/ _0 G; P
    if(UART_INTID_RX_DATA == int_id)  z8 H) i+ p+ i. R+ i" [
    {
5 P6 G: t1 ?" S+ \$ J        if(status_a0==0)' w+ K% \% k& f
        {1 e: k5 A/ u, X
                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
8 T+ ]' Q; s7 O/ a# [# J8 _" X                if(a[0]=='#')
* J3 `. q3 [$ e                {
1 ]! x* R* a' g1 w$ {; Y# S- }                        status_a0=0x01;
1 g6 D0 h) L& H5 E) N/ n" @                        status_a1=0x01;
0 D$ J5 U* E+ Z: _- j0 t2 ~, @                }  D# V3 y; T  e' O, O$ m
        }* Z3 d( {$ q! F* x$ Y% ?
        if(status_a1==0x01)
/ A3 P- _0 j( l7 M# h; Z* V        {0 }! l: l1 a9 b" }. R" \- B2 l
                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
+ c8 |) Z* ?! z" K8 x. ^                if(a[1]=='R')
1 o! i& w) }) `5 t. g                {6 ^9 d$ I; A" w& Q: Y
                        status_a1=0;4 f7 I% d0 m8 Y- L& G2 ]
                        status_a2=0x01;
9 ?5 Y2 E$ d5 O                }
+ E8 g* r% [  E+ e' u3 M) @        }0 N6 C' g. a0 u# _
        if(status_a2==0x01): p, O. h5 D1 {
        {
( v- [/ V6 k0 T% u) P) P6 o                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);/ u% c5 ^( e/ Q' m# \6 I
                if(a[2]=='A')) e/ z! g; j7 i' D* {& T4 ]8 w
                {
! O( p7 s2 a0 S# u9 W+ W                        status_a2=0;# C% c. x: q. \: Q6 ~/ L
                        status_a3=0x01;8 _/ `3 h! `! D. P/ Y
                }
% b7 Z7 d% ]) i6 g) k5 M        }
' G) F& k; A9 e) G9 v! R) I        if(status_a3==0x01): w7 h  I) T& I0 M1 _
        {8 \+ E' D; G3 y% b, u' |2 h5 x
                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);9 P, m% m4 z+ a, v! l
                if(a[3]=='N')
, z! b  z/ o$ ]! ]2 W1 z6 u* R9 H2 x                {3 a( U- ^4 b1 F4 j, c
                        status_a3=0;8 X2 R; w- b0 Y  U2 v% E4 t# \3 d$ A) V
                        status_a4=0x01;
, W5 x4 l; ^" j4 a                }
& ?) {7 C/ `+ }8 q4 z- e9 L        }; t4 u2 w) e) l# {0 M5 @
        if(status_a4==0x01)5 Y- ?2 U* o* m
        {
: O* f+ y; f* z* s; G8 X                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
6 g" ^% R3 Z1 Q                if(a[4]=='G')9 D$ A4 {4 p) v8 w. H& O: r! h
                {
9 O% l% E2 U4 F% Q$ Z- k6 N1 _' G                        status_a4=0;7 ~% K% Q2 W2 ]* x
                        status_a5=0x01;" w2 h. R* O4 s9 N& E9 ^
                }
$ a. h  s! c: ~        }
! Q7 o) x: Y: V$ x8 \8 p, t, \  l+ `        if(status_a5==0x01)
. L6 Q) E" }* ~) w        {- M$ S7 ^# H$ C  E/ f6 D
                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);/ C- M# ^) R2 D5 ?1 D
                if(a[5]=='E')7 {7 j: @6 W: D7 Z% [' H
                {( W5 f+ n7 `$ ]  }* q
                        status_a5=0;
: d0 v) k7 a. p- v, _6 y                        status_OK=0x01;
; T* w( ?- o  c! ]                }, `6 w# g# \) J" d
        }4 m" H1 y; @0 r; ^+ f
            if(status_OK==0x01)% f; j  s, _  B
        {
" `. |4 c" D" l" T5 Q                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);0 P/ {, {; [. X; P/ A
                        lengthrx++;
$ ^8 S$ Q: L' m: Q0 |" N9 v  j                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值): g4 g; f2 w* j2 B6 w2 G
                        {# b; f/ g* @' n' T6 U. L3 Y
                                RecState=0x01;
; A3 a: s- X8 K7 R& I9 L4 q8 E2 Y5 X                        }5 L; {6 N. T' F* o( b6 D
         }; a6 D, O+ c. E! f6 r, I5 E
3 N. }" K; P' D* ^* D) Q
     }1 X$ x0 }+ J, s/ [5 s

! e5 B/ X* W( p- j& {' O2 m5 u3 |    // 接收错误4 p5 \7 `/ P6 Y/ v' Q) Y
    if(UART_INTID_RX_LINE_STAT == int_id)& G! o& X% t& H. p9 b$ G! c; Q
    {. ^  N3 K) `. A) O
        while(UARTRxErrorGet(SOC_UART_0_REGS))
: P4 q7 C3 S, X  j        {
5 x: Q1 {! E7 X8 P4 Q. m4 M            // 从 RBR 读一个字节
" n  b9 c5 d: s% M2 g            UARTCharGetNonBlocking(SOC_UART_0_REGS);5 {, |6 o9 K3 o/ H  g% g2 C
        }
6 N+ ?) I/ O8 s. e2 r, E1 m% G5 E6 b    }
" f7 s! m2 |( n6 Y' q/ Q' u: L; p. U/ B
    return;' y* C# h4 I3 _- K/ {, t3 I) t0 W
}+ g+ Q' n" ~, V; c
8 a; x' f% Q( e0 p0 P' m$ ~
/ J7 h  M; Z: h9 t/ r# [

: F/ \- k! E+ M- D3 k7 `9 T
作者: Jackindata    时间: 2016-8-17 11:13
hi,9 b- y: q4 d9 v
3 K4 Q# l- M) r) K
UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。
% l1 x$ Q; [% y+ {) u: Y
. C& c9 B6 K0 l5 A: _要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:13
& S' ~& p( ~0 ]! {( b- jhi,
% \" R% v5 x; q( B" D8 T1 p6 }8 h/ Z. a/ h: a: S3 c
UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...

" C8 }- r" r1 G& fvoid main (void)
9 S- H+ H! V  A+ e- ]{
2 n- g' A: A- W- `        int i,j;
& B' e2 {0 H0 P/ l( {! M    char *str_buf;/ q1 e' S! J& k
    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];% ?3 m' z3 V0 L. n% G2 r
        double est_L_b_=0;! Z" H2 o' L$ r' K  E
        double est_lambda_b_=0;' U( x  p6 w8 R+ S8 f& a2 G/ R
        double eul_[3][1]={0};
0 k& m. \9 C. k8 }2 r3 }        double est_v_eb_e_[3][1]={0};: \. b( w0 E; j
        double est_C_b_e_[3][3]={0};
/ ]! r0 h) k8 O& ^2 E% E! Y" Q3 {    char *qm;
* t/ i# b/ H% A/ A# R. _    char rec[70];, J0 Y5 o9 l! [* b' x0 ^. [
        double L_b=0;
9 V% ^+ x! s+ U: E        double lambda_b=0;# q* g: j% A8 I- a
        double h_b=0;  @9 L- m; t! s
        double rate;
  O& X3 d9 s7 [& F" L0 j8 A# ^9 m+ X" M2 \" P, m$ @2 ^/ \; ?! V* j1 U
3 A' l' _# N9 K7 m  ]' ~* U# e
        // 外设使能配置  O& ^1 J) a& @$ O' P' Z' }$ P5 Z
        PSCInit();: G! X: q3 J8 ?5 D0 I& D
0 V# c/ E0 L2 A7 q3 L
        AppInit();
+ E$ |! S$ r8 Q- H
6 w, C3 J1 l% g! y        // UART 初始化
) ]/ t- I8 I7 C, t        UARTInit();
# C; F4 {, T8 s. l4 B- o% @
$ v+ G) g" s- z; o        // UART 中断初始化
$ R# y3 P) u" Q  e7 F1 U        UARTInterruptInit();% ]1 @& U+ U2 ^  d  Y

2 F2 A6 Z7 s3 z/ A) @    evtRcvd = 0;5 g/ M, l- R% R3 t  C
    RecState=0;
+ c2 ]+ i4 ^7 U6 B+ X    /* Initialize */
) Q- s! m& @6 S$ z3 d7 S
: O3 t0 m; A3 h4 F( p, Z    printf("DSP subsystem ready\n");& Z  p  W- p9 V: o# A* c/ z
$ ^# u( @' t2 a0 ?" b
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));
: K% j# J# e; [# ]+ L
3 d5 k5 g7 b+ y8 j( B( q( o% @4 ]for(;;)
: U$ L, A/ A0 r{9 i0 m. G& X! t! d
        if((RecState&0x01)!=0)
, k( r4 B( _: @! n$ R+ T" H2 w        {
4 e: f! ^- n. g; p9 Y* z+ {                printf("liuzhenxing\n");& p+ ?# y. t+ `4 R: d2 |
        }  J' a3 T$ H# ^( p; R- m
        else
% N( h0 P. u4 J. G9 C/ r% I        {
/ U* E' a2 C( I4 J9 u       wait_event();
2 r8 Z3 q, ]+ n
' B. G" }6 ~  b           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针
( A* X$ X+ l/ I, \% _  i
8 T  [0 ]$ z: u! [( p           for(i=0;i<60;i++)
) W% d: R0 X$ n6 z           {
4 l+ o( c9 L0 A8 D; p                    rec=*qm;
8 t( U& R6 n6 m1 x1 C' a. W                    qm++;
$ l6 U- r9 O3 I' o7 k: y           }
8 h, f7 f+ T! i- z: w  `! F! b
' N& B# q* M4 H" G           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);
4 F5 H) z  P# t9 Z% ^' C
8 D9 O6 j, t+ T6 q4 s0 }           L_b=L_b_receive_double;$ g6 g" y, j# b2 @3 L% ]! ~
           lambda_b=lambda_b_receive_double;
- X- D, [0 H- j% a/ O           h_b=h_b_receive_double;
: |6 q. u  Y8 e* s1 T$ r/ s           for(i=0;i<3;i++)% @, m5 z6 l: I  T6 W# Y2 R
                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];7 N# u- ~' Z+ ]5 Z8 x3 v
           for(i=0;i<3;i++)
# X: l4 G$ {/ \) ^( l                    for(j=0;j<3;j++)
, ~0 V  U% J+ N! E3 J                 est_C_b_e_[j]=est_C_b_e_receive_double[j];; {0 I( I1 L) o9 {2 W3 i

5 W) {9 t" c5 W& ?# ~" z# c- m                printf("L=%lf\n",L_b);$ B7 l+ b" @8 G- s" y
                printf("lambda=%lf\n",lambda_b);0 L; D* p. H9 x. q. V: p& f
                printf("h=%lf\n",h_b);
5 i. c  _4 D9 m
  a( T( A/ q! J4 N: }4 t                for (i=0;i<3;i++)
) s/ p% \$ q& `/ \6 x                        printf("%lf\n",est_v_eb_e_[0]);* v8 w9 Q- g5 [$ k9 B, E+ ~! k+ {
                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]);+ o& R& f+ G8 u7 W' `2 N! Q; U
                printf("rate=%lf\n",rate);
8 h$ A5 m% n* ]" l. ]6 q, i. W2 h7 R8 P. x
                CTM_to_Euler(est_C_b_e_,eul_);4 K1 s3 p% O* u  [
                for (i=0;i<3;i++)
5 `9 W  w$ B& X! {2 ~; ]                        printf("%lf\n",eul_[0]);6 |7 U; ]% D3 t
                printf("end************************\n\n\n");- W1 k+ e/ I0 B
6 P# [$ r# {) p/ n" H4 L  u' f+ O6 V! S: N
                /**********************************************************************/
" M  L3 a+ I: U" \% e- [2 Y/ c
3 K" y7 j6 u# m7 s            char flag[4];
$ c/ `" k9 V+ [5 E+ g$ F! _( F5 I# n1 T) n4 V, A. u( ^( V/ a& ]( ?9 A
            flag[3]=0x00;) q3 K. \2 U, w* I+ q
            flag[2]=0x00;7 b( ?2 V- u  g7 P# U
            flag[1]=0x00;
" c' }* \7 I- d, E% x. r& G            flag[0]=0x01;
7 z* @' I/ {% S' _
3 n8 B2 x1 u( c1 T# @    /* Allocate I/O buffer and init with string */
1 d6 M3 s: U2 Q    str_buf = (char *) malloc(80);
1 U- [0 y5 R8 A% R7 W1 K    str_buf =flag;
: r) W7 ~) B( s! I7 Z% {3 u
; U: @- s5 M5 c, ^9 Z* p    /* Send buffer to remote CPU */( y3 f1 U7 v" p9 g
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));! _; ~; |4 o2 A: H
8 b: I* ^  c# S, O: F6 ~1 A( P3 _
    printf((char *) myPayload);
$ h' P  f# ^4 X. X& K/ j  L# n        }$ |" z  e, Q1 `4 F
}
4 }; [; x  Q1 }) {0 I- {1 N7 L6 Z' p+ ^% t7 r1 }3 ^+ A4 E
    WAIT_HERE;
$ m; K( p( R9 p! B/ P}
; b% [: x' }, `# q6 W! j5 ]
作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:
" u( a" ]+ h+ D1 O" Z我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。
  N$ _9 U6 s, M5 N& B然后我把双核通信的初始化屏蔽掉,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:543 U2 ]4 G3 T' H' r8 \' D2 M
syslink 的初始化是否成功,notify 通信是否正常了?

; P# `: A4 a1 L+ D& q0 o双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:54
& j3 o2 N0 R6 U4 ?& \syslink 的初始化是否成功,notify 通信是否正常了?

$ a& E) ~5 }3 n! S( e* @我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:20: O+ L8 K' V" v/ V3 j7 t( T
我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程

- \' r) a; t' `建议查看 UART0 及 DSP 中断控制器中断相关寄存器值 是否正确
作者: star_niubi    时间: 2016-8-21 14:56
能否说的具体一点,就是双核通信的都修改了哪些寄存器的值,这边双核裸机通信的资料很少。




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