嵌入式开发者社区

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

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。2 P4 b. y8 h7 N6 |% Y
我是在DSP初始化这不太明白。4 c& Y1 o+ p3 K5 [0 _; w0 s0 B% Q
初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。9 E1 K& W$ U" D+ [4 `9 F& K6 s- s
* C4 ]$ C4 [6 ~# l) `0 h+ J
. ~) h' K: k; z. _; A, Q% E+ J
首先        PSCInit();//UART0使能
! u! s4 _$ C1 z7 d' ?void PSCInit(void)
6 B' E, e$ N; c9 k9 [2 K4 i{1 J$ o; K+ s' f9 [' _
        // 对相应外设模块的使能也可以在 BootLoader 中完成% r: }# q# m; l% @4 ~
    // 使能 UART0 模块5 A" m& P1 O7 h
    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);/ r7 ~5 D& n& F" Z( O
}3 f$ O3 c$ D1 `. w& s5 h  q; B8 {
7 Z1 O7 Q3 X) z2 v2 w6 T( R
# X# ?0 [2 K, w2 k" X# ^
然后是 双核通信的初始化           AppInit();
" |! S' ^: u% x! Gvoid AppInit(void)( K0 M1 b$ e. l, d; l
{+ s4 t4 R  u* o/ }" Q0 S# h
    /* Structure to initialize IPC (see Ipc.h for definitions) */; v- N2 R6 |' m
    struct IPC_cfg ipcCfg = {) p* X; ^+ O; E: p# G8 E
            IPC_DSP0,             /* local processor Id */9 R5 L5 p& @' w! R. ]6 f3 n& s
            IPC_ARM_HOST,         /* remote processor Id */$ I+ h6 l+ I) k) G7 h5 ~- U
            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */
; ]8 f6 c4 t9 H            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */, k* u  C% Z, q, g5 _$ W+ E9 x! X
            NUM_MAX_EVENT,        /* maximum number of events to be created */
: Q- y$ y- ^0 X3 F) G3 t; W            &ipcPvMemDsp,         /* local side private IPC memory */
  G6 R; w% ?! Z8 a/ W            &ipcPvMemArm          /* remote side private IPC memory */
' Q/ D( P# x' `% ?. {$ |    };
- @  {* s, H0 C! M    IntDSPINTCInit();0 [  S: A+ z8 v1 B
    IPC_init(&ipcCfg);* ?& B  @; ~. y4 G7 D- E
    IPC_intRegister(C674X_MASK_INT5);
: w2 d1 ]# X0 w+ H+ e$ i6 R    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));
2 z! v9 V* u( l+ }0 m: {6 h+ h8 w& K5 ]" J. a
    /*  Enabling interrupts for DSP C674x CPU */" E& S  E1 h9 L, O3 n
    IntGlobalEnable();        /* Enable C674x global interrupt */
+ v, v! p5 N: C    iAssert (Notify_start()); /* This will enable IPC interrupt */
" J" }% l/ z2 `8 b}: p. `- W4 [1 A* o! e8 _9 W

, H3 R9 E0 O, L  T6 m然后是  
3 d. x" w# I  E+ ?; {8 i            // UART 初始化$ U" P# t$ o* R% D
            UARTInit();
  K4 x7 ~  y1 \9 a% e! q! n' r2 C
+ b! \+ K' D$ [; C- }            // UART 中断初始化
# D) D) x- D3 j+ u! i5 a% C; i! L            UARTInterruptInit();
1 ^$ z3 t! @: V# q9 `' e

8 p  ]* c. v0 k  g
8 ~: t! D$ f, ^- H3 q. ^void UARTInit(void)
8 q; w: A5 U- M2 u- w+ H{
: x, J- A' b* L* C5 S4 u$ u        // 配置 UART0 参数
, g8 ^. Q& o# y        // 波特率 115200 数据位 8 停止位 1 无校验位
' f. ~5 \: K$ T/ k) i' C    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,$ |: m. }" i% J! O4 t# _5 {4 @
                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);, u; d$ }. f0 c* d9 `
        // 使能 UART0$ v8 R1 _, U5 p2 ~
        UARTEnable(SOC_UART_0_REGS);" q( f4 E5 b( x) W- u* t8 o( q) K
& [; f3 h% `7 R  z' a" b+ l
    // 使能接收 / 发送 FIFO
- H8 }$ m/ q  e5 c  p//    UARTFIFOEnable(SOC_UART_0_REGS);
8 a) [' K, E# z, s! f* f3 ?8 Y9 Z( Z) S
        UARTFIFODisable(SOC_UART_0_REGS);
- Y2 Z3 D" K; P. r" e
, O6 `  \4 t# @6 D: n7 Y9 m    // 设置 FIFO 级别     接收FIFO的级别* p0 [/ X. U1 d4 r  J' K' M
//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);
; v, E( L' ], y8 b7 h8 a! T}9 B" e2 F% o3 D: j% d; u" ~1 A5 c

1 r6 O& @0 z! Y" c% B. A9 |) l( K+ i
void UARTInterruptInit(void)- m" I4 c8 e* c( v. |3 s6 K. }
{9 Z  M& D% Q( x- @: r% d
        IntRegister(C674X_MASK_INT4, UARTIsr);
% n* M+ \6 t; ?+ _" @        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);
- H" k2 U5 b0 K+ ?        IntEnable(C674X_MASK_INT4);) g0 V/ e- v' T. h2 A$ S: _

/ ~. `8 ?* y* i$ U, a2 r        // 使能中断. H5 b  ]0 _; n$ c# e
        unsigned int intFlags = 0;$ X' l, w# A, V5 M' Z) k9 ]! X& N3 T
    intFlags |= (UART_INT_LINE_STAT  |  \2 P& \* s6 `- z
                 UART_INT_TX_EMPTY |    \
  N+ E$ O$ I' e1 [# D9 ]                 UART_INT_RXDATA_CTI);: @9 J8 [  l: F$ A! V
    UARTIntEnable(SOC_UART_0_REGS, intFlags);
0 f( g- T( d- Q3 u" x' N% G}% U* Q4 O: `& t7 S7 N3 n
( f8 j4 c* _$ z" a$ L) B2 @% t5 G# b
1 e; k8 z& p8 I; U5 L. r
void UARTIsr()" b; e! ?! t( H+ y
{& L# h: A$ o* j. _
    static unsigned int length = sizeof(txArray);
, T$ v" q# ^! M    static unsigned int count = 0;4 l) ], G, S5 i. G& D
    unsigned int int_id = 0;
! ~7 e0 {% q7 b
' _( R6 V( l) r" Q$ s3 K* y8 i4 G/ W  @& }

" r- {" D" v4 l- D    // 确定中断源
5 x! K8 E, x7 [* M* Z) E8 ^6 z: Y    int_id = UARTIntStatus(SOC_UART_0_REGS);) ]' U  v* A' R" k: w& ~8 W

0 W# r/ l+ L* h) a1 Z. v) z) @! H3 e    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。4 w. m  b! U5 O6 w- |

8 N- m% a! T: C7 ~9 k3 T, o" |. }  F+ X& `. q1 @
    // 清除 UART2 系统中断" |9 K( b1 w/ [$ w  }  ^* G% z
    IntEventClear(SYS_INT_UART0_INT);. ]2 m$ g  S! i6 Q
0 O+ q7 B1 m4 w1 E! f1 s
    // 发送中断5 I8 T/ @8 W& U9 k
    if(UART_INTID_TX_EMPTY == int_id)9 D9 b; j5 F  p* B& T
    {/ h4 U* c+ d# [# ?/ c+ D8 t* D
        if(0 < length)
+ B% O5 O0 r: [2 A7 S" ]        {
3 i# ], G- f4 Y; O            // 写一个字节到 THR  }" q# t& t+ e5 T# P
            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);9 N8 I6 @4 t* w( a) w1 Q
            length--;- I+ E) f. B* l, |+ p8 \
            count++;" {& k$ N0 [& w, I0 t
        }( _* l5 Z6 S- l: f
        if(0 == length); K) c& n0 i, l  ~- p+ \) s. p2 i
        {4 S* d; h1 j  W( T9 i
            // 禁用发送中断3 y4 \/ t( d) c0 H( O8 f
            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);; y9 W4 k5 ~# S7 v! f. E9 ^
        }
" r4 z5 V" h9 o     }
1 r( R( m3 `; F- H7 T  j9 S
4 X. \4 y, C1 ^2 _; m/ x    // 接收中断2 }6 Y" I: J% |
    if(UART_INTID_RX_DATA == int_id)4 M8 Y8 [2 g. ]+ d- e
    {
9 \+ I: K- M% F" _5 g/ g, r        if(status_a0==0)' f; m* m; ^7 F
        {! D8 W4 ^3 }' F7 G" E
                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);6 w5 X/ }: _4 _$ W9 {+ k: P4 A
                if(a[0]=='#'); g$ i5 W6 t' |
                {
* \, t  ]( b1 i/ _" t* P                        status_a0=0x01;
: h: W4 Q9 i: O- z2 P- Z/ t  h& l                        status_a1=0x01;' K# r, I) x8 e( }( F* G
                }
1 [- N, z- U2 q0 T. K( B        }2 N( r3 v* T2 a3 R" P! W9 u4 G
        if(status_a1==0x01). c2 r) i, Y$ }$ k$ x! P5 |9 h4 K6 l
        {# u# z' e. v# t
                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
4 w+ w$ q, }5 P8 E: i4 h% L                if(a[1]=='R')5 [% V& y- Y* M% W
                {2 i, y. G0 x4 R2 m7 K
                        status_a1=0;
) D) ]& T8 O! e, F                        status_a2=0x01;/ t# M% |5 U5 C: g& W, Q! \) p
                }; X  G1 E9 ^1 u# S) o4 x  M9 ~
        }
  n: w$ b- s1 F0 A+ l0 J( J        if(status_a2==0x01)
( s% ]: L8 @( v$ r0 G        {# l* v) ^: T, p  o# `
                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);- c5 p. _( p8 Z5 }6 o; e; o( A. F
                if(a[2]=='A')( I' C$ ^/ A  o( f
                {  W, F2 J9 o& Q# }  @: C& K% K; e  s
                        status_a2=0;# N% {7 p' ^1 F# ?# M) P2 g- {8 U
                        status_a3=0x01;! g7 R* C; c: R9 f" g
                }; T+ p/ N/ V1 k' m
        }) A1 W) S  E+ Y0 K! ?9 `
        if(status_a3==0x01)5 H; k5 E$ n: r6 y6 q
        {  f: ~1 }5 R- K: g0 i- H! w
                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
$ H$ l8 B+ D2 x# p8 A% A                if(a[3]=='N')
* U9 T8 b, W* d- t$ K* }# _                {* l4 F, r" e+ y8 a3 e" I
                        status_a3=0;1 Z. W  {' m" A+ T# J
                        status_a4=0x01;
( ^& _* I( ~; Z% }) K                }2 ~3 Y" l  f9 S* n. N2 K; H
        }+ ^. l. a# f2 ?! w- x) N
        if(status_a4==0x01)
% n3 ?/ J0 B" w/ F/ h        {
. I2 K8 p  L# W7 G! w4 O5 R/ ]                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);" `% [" K) v1 M/ M8 m
                if(a[4]=='G')& Y, y& z" f5 @. ?5 `+ R7 i
                {. n( H% v  `1 g8 U( ?
                        status_a4=0;" Y+ `* o0 |( K4 G% m  W* S
                        status_a5=0x01;' U6 `3 u' ?+ j1 E
                }% R# ~2 I2 j$ P
        }4 ^6 K( n2 |7 D% r; M
        if(status_a5==0x01)
0 Z+ R6 L1 I3 i% r        {
& m! Z  a0 o- R* @; {; b                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);9 l) R/ f- N1 ~2 D: q4 p* l4 J- A
                if(a[5]=='E')
1 f) `8 @. h& t+ R, v  I                {
& Y6 E8 ]7 B* E9 G                        status_a5=0;' r+ d) S: a  J
                        status_OK=0x01;
- n! p) e; }9 j; Y) S                }
% u2 v& G6 k! B% d' m, M        }
9 V+ ~" r. N$ S: s2 R            if(status_OK==0x01). P( }' M. X+ i0 m) u0 a
        {
; y5 r8 G1 v* D+ s! }( W5 e                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
( Y5 t: X, Z$ u! ^                        lengthrx++;1 z4 I. |1 E1 l" c8 c
                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值)1 W' @! g+ ?) W: O% V
                        {1 O1 j( j8 _& M, w) m, r
                                RecState=0x01;% v; G3 j& {- k8 S6 \# ^- m  R
                        }
7 O' p% N% f2 J% F/ D         }
% U! d  O5 P' n1 d8 k( T+ \5 Q- u7 b3 o
  m5 T8 a: K0 P$ r; u- q2 {     }4 n& a/ _" k# l# k4 ?
, G5 E2 D# i' l' x
    // 接收错误" b7 v  x! G. N6 v6 x/ i5 d. R7 B
    if(UART_INTID_RX_LINE_STAT == int_id); Z$ Z8 l3 e8 U( l) h: M5 E
    {1 Z$ J0 _# z0 B+ x2 I! N
        while(UARTRxErrorGet(SOC_UART_0_REGS))( l2 ?: L$ `4 g: k$ g" S3 ^
        {. O6 `6 ~1 j' z
            // 从 RBR 读一个字节% A! i/ d# @) |. g3 V# r
            UARTCharGetNonBlocking(SOC_UART_0_REGS);
% U9 u2 O8 K& U, Z) [        }
4 }, N) I1 P# Z    }& S1 D" F) O8 _6 B* w2 ^# y

3 ]6 h- y4 ?, v8 n1 q. z    return;
: c8 R/ T. t6 [/ G4 ?}9 r( g; p8 R. b" f- O2 r
! y, [$ ^9 m0 [7 l1 `. e
; A( P3 \/ H" U# Q" R
9 V6 W+ f7 {" _

作者: Jackindata    时间: 2016-8-17 11:13
hi,/ \3 Q5 q4 D  \
% j. i4 b, g( C2 v* [! L3 s
UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。1 A+ `" j* l: Q" |4 P9 k
0 G+ W' u8 L' f: {, x! ]
要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:13" }6 f  \1 O3 W  A3 H8 S
hi,/ L/ K3 A3 T" Q$ b4 }. O$ N
3 f( P$ e# [* l1 Q; d* w
UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...
; ?, e: q: c- {/ ~  y% _( N' w
void main (void)8 S" Z1 l% F% Q6 }6 g' x, t/ q
{
4 ^& q0 Y$ C' W$ f$ w        int i,j;
6 n& u" |' H) w, O' b: s" W% g    char *str_buf;
9 P+ y# H' \% X! ~  r    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];
/ m; n" }. O, k3 p( H        double est_L_b_=0;5 y" R' {/ d* v
        double est_lambda_b_=0;6 B0 |- Y6 P" o; p1 c
        double eul_[3][1]={0};  A) [* D1 v) f
        double est_v_eb_e_[3][1]={0};/ X7 h7 b0 ?9 S& z+ N" q
        double est_C_b_e_[3][3]={0};
4 y7 h3 h5 N" r4 j, N% n    char *qm;- f- k& s8 C8 R3 R
    char rec[70];- e; ]% y5 Y$ Z6 P& l( P6 ?1 E
        double L_b=0;
& s2 G5 x% Q9 |/ b4 W0 D7 B/ s        double lambda_b=0;
4 j( U( t9 y* j        double h_b=0;
  }: D0 w3 Q+ D$ N; w3 ~        double rate;
9 E0 {2 a5 h+ p- J( l3 I1 A' a! v, [
3 y2 e! p& R4 h
        // 外设使能配置
+ c9 D4 h) ]3 G, n- S- `9 X        PSCInit();
: w* N) w" ?/ @, L5 Q! |" N3 L) ?0 q2 ]9 e7 v  `' M
        AppInit();+ q% ~1 l: _2 B& l9 x" ?3 O4 O+ |" T
/ d" \. v) J, I* A) ?
        // UART 初始化
# K8 F$ E7 S; b# C4 P7 ^. g. T/ B  W        UARTInit();
4 o& d. u0 ~, F8 i8 {
. }4 H  V( L) Z9 C; {/ f1 E( \+ g        // UART 中断初始化
. _9 W- u8 m5 L. W$ ?' k/ o        UARTInterruptInit();
- B3 T5 g' x, G9 ~2 U, h
4 w- o  M9 Q2 u$ y' N( R( l, j" V    evtRcvd = 0;
5 M4 i8 o1 c; |    RecState=0;  x" r' m- U- H! S- m3 B* T0 ]
    /* Initialize */
/ j/ n8 m+ ~  O# u( Z2 [
$ e) e2 v" k' \- c) S3 _    printf("DSP subsystem ready\n");
6 d  X# Y* e! M. I( S4 W( _  b! B( T0 ]
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));
9 i; U' u3 {7 x8 t$ b, m0 s8 x3 V1 x" {* h; |
for(;;)$ i1 x) w  _/ Y+ h( k# b5 G8 x2 f
{$ a/ D5 ?" B( @6 t3 V, n
        if((RecState&0x01)!=0)! N  a3 V1 K! L+ S2 W
        {
; u9 ]! f1 h0 O, r                printf("liuzhenxing\n");! u( p9 N1 y" r2 I
        }
3 U  s* Q5 q. ]1 `: e% q        else+ W, d9 c0 Z8 a! @: E
        {
6 q) W8 q: g$ K! z; O9 i/ i! D       wait_event();$ ~, f9 {( p$ G" {) I
2 W# j( O# t6 @8 ~7 U. M7 d4 Z
           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针1 [( S: d- m3 S. `
1 Q7 z+ ]: o& R/ K' ?% N
           for(i=0;i<60;i++)
8 u; J# S$ r! K4 G; K; B           {$ W, _1 A' t/ Y8 r; Y4 I
                    rec=*qm;
% \; y7 F& p) Q( _9 M1 a4 Y                    qm++;5 M& C  H/ B) i: T* m
           }
, S' D! n' b% n% g9 s
, T, g- |, p0 O+ d, {           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);
/ `9 S; h$ {+ g/ K6 T* k: G# G4 j# [8 D( X4 }8 }  `
           L_b=L_b_receive_double;4 O# f/ H3 `6 j- H5 H
           lambda_b=lambda_b_receive_double;. c1 A: L0 y. `5 v( ]$ l
           h_b=h_b_receive_double;
, H. T4 W/ S  b7 U. S8 ~6 f9 [           for(i=0;i<3;i++)  z" [! b7 K5 G! [0 _$ _; S; d
                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];
- _' m% l4 \# X& b0 X           for(i=0;i<3;i++)
+ B2 R3 {( s9 }& Z" |9 K7 s  W% ~                    for(j=0;j<3;j++)
2 q' Z# @) [1 I# P                 est_C_b_e_[j]=est_C_b_e_receive_double[j];5 P7 q; t2 m% B; P) j

) O! X. S1 \% a  I0 [. H9 J                printf("L=%lf\n",L_b);' o- a7 h5 K. v& |
                printf("lambda=%lf\n",lambda_b);: U( g& G% p2 w& M2 |1 N6 K
                printf("h=%lf\n",h_b);/ \& @. u/ \) S8 v7 U* k1 u! D
. r$ W( a* b3 V9 g# z8 z
                for (i=0;i<3;i++)9 g9 |' t5 n0 V( u6 X- _
                        printf("%lf\n",est_v_eb_e_[0]);4 I. w* K& }/ G" p
                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]);
' e; \' N4 k9 {, E6 b                printf("rate=%lf\n",rate);
$ A6 k# \, q2 x0 x0 M
2 i9 f! W: o- w" n* J5 v) o" e6 {! i                CTM_to_Euler(est_C_b_e_,eul_);
8 h; ]& P, A5 r                for (i=0;i<3;i++)" q) F1 c$ b, s+ W" G7 L. E: q
                        printf("%lf\n",eul_[0]);
* G" t$ V8 {# _9 c, }0 y                printf("end************************\n\n\n");$ F. y. P6 Z, D9 v  M$ ~  k1 T

1 [9 n* |; x4 C; j$ I                /**********************************************************************/
+ L2 w' }5 @" U, Y# S  {1 w- M# `+ d
            char flag[4];
5 s% o6 m( R$ E. C! p; f* @& F
  J& D+ S. z- V0 P            flag[3]=0x00;7 q1 D0 z3 `8 J- R
            flag[2]=0x00;8 E& C1 S1 y2 E
            flag[1]=0x00;
$ K1 o0 ~" z  E8 \% L            flag[0]=0x01;& _( ~; }; r% {

- C4 G7 ^2 b! ]7 s    /* Allocate I/O buffer and init with string */
1 H: l: ?2 x  M    str_buf = (char *) malloc(80);
/ [# _8 h/ k) l4 i3 t    str_buf =flag;
1 H( P, v- L( i" D9 w' X0 Z. I* _. h* n. L0 `; H. s9 i- Z3 @; \
    /* Send buffer to remote CPU */
' @8 `3 u6 @! v    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));
$ G& n0 h+ F, G# N% H) F" S2 M! {- _$ Y# S0 x4 p; N
    printf((char *) myPayload);
; ^0 o; R8 X1 {        }
- a% n, `8 P! A8 Y1 b}
7 A% x$ W5 u+ U2 ~/ A+ f8 Q
) W& [$ n& S# r: O: `; R    WAIT_HERE;
6 X! n3 J4 R% E}: z  T; w5 E1 `# ]

作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:! f- `+ x! \, H( A' P# C0 t' X
我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。+ {, `6 x5 c. ]% `4 _
然后我把双核通信的初始化屏蔽掉,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 n8 j. }) {( H- s: k
syslink 的初始化是否成功,notify 通信是否正常了?
. n% K, l0 k: G+ s% H. q" K5 U
双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:542 J( m/ f1 n: h7 h' X, F: i
syslink 的初始化是否成功,notify 通信是否正常了?
) j! B8 P6 ]4 q& {1 _4 [
我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:20
$ E, h% U1 J8 k1 c) V我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
/ O" T' {1 R# d7 r; G( i
建议查看 UART0 及 DSP 中断控制器中断相关寄存器值 是否正确
作者: star_niubi    时间: 2016-8-21 14:56
能否说的具体一点,就是双核通信的都修改了哪些寄存器的值,这边双核裸机通信的资料很少。




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