嵌入式开发者社区

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

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。. o. E$ E1 T5 Y' _
我是在DSP初始化这不太明白。6 x6 E8 G" t2 z6 Y: C- l/ o
初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。  a. Y8 g+ L. ]% y* T

( w, Q/ t7 d( Z9 o5 D8 F7 ]
! k! V0 ?: D! I6 O3 u首先        PSCInit();//UART0使能
9 f$ |; n  S* K6 z2 xvoid PSCInit(void)
1 X1 p6 A5 \) I. R2 A* j{$ R3 O. ^9 F* Q
        // 对相应外设模块的使能也可以在 BootLoader 中完成+ [5 I. }4 T% B% U& k) o8 b8 w
    // 使能 UART0 模块/ I6 n( z0 ^! s) P" H6 H4 ?
    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);% d/ X1 y. s; J( ?2 U6 F
}1 n9 Q) S. K: j* J  Q' b! M  b

7 S1 C- r3 Y4 \+ V  b7 m
: d( e4 h* b: C然后是 双核通信的初始化           AppInit();
$ i8 y9 W8 C3 x/ f4 T/ wvoid AppInit(void)
( K9 K4 ~+ U. h3 X! z. p! U: H0 T{
+ F+ e, H0 K- r+ x3 Y- J# u) C    /* Structure to initialize IPC (see Ipc.h for definitions) */
, E2 @+ D( M# I* {. M    struct IPC_cfg ipcCfg = {
# K8 k, ]6 g$ ^4 c" P- D7 N            IPC_DSP0,             /* local processor Id */
! d/ O( U& O8 g0 W: u$ t5 E            IPC_ARM_HOST,         /* remote processor Id */
, E  ~8 J/ ~7 e! W+ P& P0 u1 [            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */; E7 w4 d# U! x
            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */
" n# e5 }' x. \  N7 D            NUM_MAX_EVENT,        /* maximum number of events to be created */* E0 P1 c* {" V6 C5 D# j& G
            &ipcPvMemDsp,         /* local side private IPC memory */
& A* c4 C8 r- N1 K. k* Q6 P# o            &ipcPvMemArm          /* remote side private IPC memory */# _: a+ i# S! o$ @, S
    };
( T1 ~0 o* \" Z: j! Z5 l    IntDSPINTCInit();4 ~6 N- {: |6 W8 n
    IPC_init(&ipcCfg);
/ \+ C7 R: \2 F1 F    IPC_intRegister(C674X_MASK_INT5);
1 P# N  S3 e1 d  d/ N2 S2 r    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));4 c2 H9 D/ ^- w
! m" t7 |( e- o0 ]! D
    /*  Enabling interrupts for DSP C674x CPU */
4 s  ~( w. h9 ]. u) W    IntGlobalEnable();        /* Enable C674x global interrupt */; U6 d' |7 r) @  w2 ]
    iAssert (Notify_start()); /* This will enable IPC interrupt */
$ L( z% G' q0 z9 T# |6 L}
% `8 ~2 P  a  i+ ^2 i

1 i6 b7 F1 [, n- Y然后是  
) b7 E  W$ ~3 Q6 R5 ?4 ^$ S% g* h            // UART 初始化/ h; h3 ~+ I5 H
            UARTInit();
; @1 \% R: x2 S& R
1 W7 X0 Y* r8 s: M+ ?            // UART 中断初始化
, ~3 }  Z: @8 S8 X9 g            UARTInterruptInit();$ K$ }. b8 \/ x' Q8 O/ O4 h% F

7 _$ n. w- e. G  C$ r! M$ g$ U8 v7 t( k* ]5 M6 H: _( i! s: p8 n
void UARTInit(void)" b5 D# P% f0 ?# U  ?
{
! C9 ?2 m/ }  v. E" U! b        // 配置 UART0 参数% Q7 x7 g$ H/ N
        // 波特率 115200 数据位 8 停止位 1 无校验位3 d" \# {+ U0 u. X; x
    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,% I3 d( r% k9 T
                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);8 W$ B& b' ]1 v! n" u& ^3 w) U& i& T
        // 使能 UART0
: W8 o! k9 K/ @/ Z; D. d8 @        UARTEnable(SOC_UART_0_REGS);
! c& t; K1 g7 o+ a8 J$ v
. O! D3 C7 {; h    // 使能接收 / 发送 FIFO
% i# J7 I  G  k( x2 n//    UARTFIFOEnable(SOC_UART_0_REGS);
% H: ]$ {; |0 K" G% b/ F( Z; _; ], b4 ^/ V% m
        UARTFIFODisable(SOC_UART_0_REGS);7 S8 J, d5 Y9 w4 H+ Q1 k/ `

0 U6 K3 O. B2 q5 h! [: ~8 C    // 设置 FIFO 级别     接收FIFO的级别( q; `$ h# `$ o* k
//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);$ Q0 p6 e+ z; Y. n# x7 {
}
* T! Q0 p: P# ~$ k1 D5 k' A! d

, X, ]6 |: i) v% b& @& a: q, e6 F1 N7 Y, x; U6 T) V) ^
void UARTInterruptInit(void)8 |, e+ S# |# @1 a5 j! B- Y6 V
{
. B0 k4 W& T9 v% Z! t/ ^        IntRegister(C674X_MASK_INT4, UARTIsr);
) J) p- Y: ~; a; L& S( {  l5 J        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);) E4 Z/ w2 K+ |
        IntEnable(C674X_MASK_INT4);0 r" s) |+ P8 f- e8 \
' A! Y5 V; C) {  f$ M  F1 N
        // 使能中断( f/ A% z. y1 R+ a7 u
        unsigned int intFlags = 0;' D2 o7 [+ S" \% I5 C6 j
    intFlags |= (UART_INT_LINE_STAT  |  \
# |9 j* Z3 P" i                 UART_INT_TX_EMPTY |    \; Z- X+ J  g$ x! B, ]
                 UART_INT_RXDATA_CTI);* K1 l  b; ?; o! @3 s5 n3 \/ u
    UARTIntEnable(SOC_UART_0_REGS, intFlags);
. K2 O2 C* _  K+ f9 j/ z. I! B}
6 z1 ~3 o" Z0 e+ S' s5 c" x, Q4 L

7 A  E% ]3 ?% m, y, z. U' v9 H2 ?6 s0 w& F
void UARTIsr()
2 F* ~( J. x  p# |{
6 }  c, [/ K) X% x# f    static unsigned int length = sizeof(txArray);" D* [, E+ Z2 f- V; A
    static unsigned int count = 0;
! |+ [2 r2 O; c7 |) ?    unsigned int int_id = 0;. e9 s1 \% I0 ]- V8 V/ \

' w1 e9 Z4 `7 C+ Z; ]8 T7 w' f) q& w' ~; y6 E6 p# d

; s( p3 N* z3 u' g    // 确定中断源
' f# h/ {6 H4 H+ I. u    int_id = UARTIntStatus(SOC_UART_0_REGS);
; E0 M7 |# i8 w) a+ z( ^" u: M9 @" g2 n( F  ?( @
    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。
  }' t* _  v) S, Q+ T  }- s6 T( f
0 Q( t. x4 S9 U& I! W- A  U* y! M, m8 O
    // 清除 UART2 系统中断( r1 e( `% p0 B; v' q0 y4 l# \. j
    IntEventClear(SYS_INT_UART0_INT);. @3 Y$ R  f7 i( q3 m$ y
( L: J6 s2 C  i
    // 发送中断* E. Z8 r2 @) r4 C
    if(UART_INTID_TX_EMPTY == int_id)" r" m4 x8 D6 o: a
    {
" S' J5 K* O1 s- s8 Z6 Y) ]9 v        if(0 < length)
3 V/ M+ f8 S& g9 m; w        {. {0 i+ J# `+ Z8 m+ S# t1 ?8 ^
            // 写一个字节到 THR
7 A4 [& d) W& e  u6 q. r0 z' o% D; o; i            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);* _3 a$ M( D+ R1 t; x! H: C0 ~
            length--;
$ Z4 b0 U" V( ^  N$ M* p            count++;+ b( X) B7 K" ]; G
        }
' p) X$ ~. s1 U        if(0 == length)
" u7 P- V% ?# q% v7 b        {; a) Q4 e7 q9 g6 @4 }0 `# W7 V
            // 禁用发送中断
( s5 S7 R; ~) a0 a1 i6 ]9 V, d            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);0 _' W& @6 D# F% Z. C! C3 o
        }8 y* e, T5 Z2 S5 `
     }
% _7 Y" o3 `6 j) I5 Z
+ X: L$ s& y- a    // 接收中断  U% g" ]% `) b
    if(UART_INTID_RX_DATA == int_id)
! C  M( @, u7 \    {: F. h4 {4 Y: X: e' H. L
        if(status_a0==0); ]4 C9 D0 Y& l2 E
        {
; y9 O8 l" |. E0 {+ k; ^                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
$ r& W/ v2 N2 K% z& q                if(a[0]=='#')
9 y7 `- }9 g' F: G5 d) \0 B                {
4 j5 n# L' ]5 F/ m                        status_a0=0x01;
! H/ E5 O* G5 E                        status_a1=0x01;
7 V! ]. a- _# I) v% N                }, Z- ]( c+ t$ e
        }& h8 z3 r' I4 c( J! ?0 m& e% W, c
        if(status_a1==0x01). g4 l4 U, e8 @
        {1 X0 K# [3 u; Y) `! f
                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
% q5 R; }' N' d& H2 z% h                if(a[1]=='R')
, N6 d* D! y! a/ M3 M                {
" m" A9 [8 y# ]$ G+ g                        status_a1=0;3 Q' A3 |: x8 B- t* g8 L" K
                        status_a2=0x01;; ?1 u) A7 u% C7 l0 Y# f
                }: [& q& O  U( g; e1 D1 @5 K
        }
) v5 _8 T( I0 ?' j* k        if(status_a2==0x01)
  |0 @, X# f6 f$ m" H" _0 k        {
8 H. l- b1 K; c! n                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);) m, K( s+ `' E
                if(a[2]=='A')- U9 F. H2 m6 d5 N  z
                {
( V- J# s, w# m5 m                        status_a2=0;
- L) x% C+ @+ C* n2 `( P5 v0 ]                        status_a3=0x01;
3 R8 l5 ?& j" @4 L+ s7 f1 v                }4 L* B6 o0 o; u+ K3 [! m- H
        }
6 e2 @& {2 x" c; t' `' ~; W1 m        if(status_a3==0x01)$ V/ x: o$ m/ I  i
        {2 Q3 X! h$ F$ L9 L% }. R, P6 B
                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);% N* f5 }6 q' H4 m  `, j
                if(a[3]=='N')
7 u1 j6 F6 [! M. @# O: q6 @) p3 X5 q  T                {9 G6 _7 W4 \% r2 I: y: w/ ~
                        status_a3=0;+ I/ m9 `( m/ v' a5 \
                        status_a4=0x01;
# h2 F# A8 F4 m1 j/ \                }
( C+ @. `) \7 H1 a) y; K+ w. b        }9 y, F# P2 o8 N: y: d5 f
        if(status_a4==0x01)
7 U9 H3 ]3 Y1 r. d" o# j        {' R0 C( ]0 m3 o+ u0 ]8 }, B
                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
' o! Q" z/ O8 e" ]                if(a[4]=='G')% H* l4 o1 h0 r
                {/ {+ g4 j+ H. s2 y* s
                        status_a4=0;
3 [+ D7 J3 D! u: ^5 b* m% w" m                        status_a5=0x01;" z/ X, r7 q% p, @( G, B
                }
( X% l- z& J$ n- o+ J& a/ F        }
6 @& Z+ o4 D; L) Y! n1 F7 o3 R8 J        if(status_a5==0x01)
* o8 p- L, f% s* w5 v        {
6 L7 g  g; `1 F% n- B* E/ S                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
7 L3 T! _  q8 u' M0 d* p! c3 u                if(a[5]=='E')
5 y/ r, S4 C6 n# m  p                {$ f3 U2 X' m2 X( d
                        status_a5=0;
* p: v0 q- T$ k                        status_OK=0x01;. Y) P* z2 Y% f8 H* s
                }$ H& w# o9 l1 `. @5 f) z
        }0 c3 R: O. S) x# e9 L# Y
            if(status_OK==0x01)5 G$ X2 L7 J, N. l1 g# @
        {
, B! ~! ]2 T" {$ t7 ]                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
" i3 X# }+ [, ]; b2 z+ ~2 y                        lengthrx++;# G* Y: X% h) U6 E7 p6 s% Q1 l4 D
                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值)
% Y" s0 u3 H- a) F3 e% `7 E                        {
1 K3 Z& n! O# B5 l# g  N. _- T- i                                RecState=0x01;
; T9 W0 W) p0 P4 O. D- @                        }' r- }8 c% O! ^
         }
+ O# G$ N7 Z/ E! b# F$ N
& H0 V. ~& m8 K2 m( M! q     }+ v$ }, `0 c5 J0 Z; b$ y
" g1 ?, l3 l+ B& W2 R! X- x4 }
    // 接收错误
: n) X2 \4 D, m% [0 \    if(UART_INTID_RX_LINE_STAT == int_id)
1 v/ b, l: w: t; [7 [    {
; g% [& E( y9 w        while(UARTRxErrorGet(SOC_UART_0_REGS))
+ ?- u( T5 V9 Q$ [8 [( d        {
  I1 {/ x9 ]! }+ K! \  H% K& \$ v            // 从 RBR 读一个字节
/ _4 U. j' a5 A  ?. l1 S            UARTCharGetNonBlocking(SOC_UART_0_REGS);
/ i0 w3 C/ R% b( J8 Q7 ?        }
- F* `& E. s0 x9 E3 p    }
# C3 u4 d/ {1 |2 ]) u
$ |" S2 Y- P) S- R# S# P9 s% H    return;
$ d+ P+ [- Q; E# ]6 X& K0 W}9 ~7 g: h% I; J% {8 A/ X5 t' X, c
7 j7 T6 R: y9 i$ k" @
/ V8 Z6 Y9 S  O( Q
# \9 L7 C5 K! b3 c% k; L" v9 |

作者: Jackindata    时间: 2016-8-17 11:13
hi,& ]6 D% y$ N; y1 M; ~

7 r" {! }  P' ]( {UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。
7 R2 ]; q& N. X- Y; y% J) Q% [  y% L, m. c' f. ]
要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:13( Q/ t' ?1 {9 h
hi,
0 V4 ?. c; V" g* F
. k( P3 j" q2 a( W' s( ^UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...

# V# D( D+ O$ kvoid main (void)5 A% v/ n  X7 P' h% e0 c: O
{: i( n( X, p- a- @8 y2 Q. q% h
        int i,j;
/ y' n, |% k+ S3 a! [    char *str_buf;+ R0 e; v3 ]* t; x* P
    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];
. x4 `7 G6 D5 b, Q7 ], j3 p        double est_L_b_=0;
2 J2 g3 b! g1 H8 w' m        double est_lambda_b_=0;
5 K" i$ R! I: f7 ~7 w( Y        double eul_[3][1]={0};! K) U1 d1 X+ v7 }
        double est_v_eb_e_[3][1]={0};
6 g* P: h' r/ K. a# _% t4 B        double est_C_b_e_[3][3]={0};- p; u7 i" r/ c  X! ^0 q' t
    char *qm;
; W8 b; {' t5 o+ f    char rec[70];
4 ]1 p  y7 u. d& |: c9 L        double L_b=0;
; k. C5 J' ~( q+ a        double lambda_b=0;! Z0 }+ \! R+ G# T/ ~# b* u
        double h_b=0;/ U2 q6 k% f4 I  _$ v/ ^
        double rate;6 G# _* @3 _4 m

& O) V) K1 Z$ T  c3 {0 z: }2 K, \8 s5 X/ A
        // 外设使能配置: @2 e! q7 z6 R, H4 D) s) {
        PSCInit();% Q9 n# W$ Q, }; h7 O8 S$ l
8 j- J$ E/ c: T3 e3 A5 f
        AppInit();
9 s; k# C$ J0 m5 s( z
: `+ Q0 d* M" x5 D& X$ R        // UART 初始化
" M( [3 B, h  z) T+ d$ O* A        UARTInit();
4 h3 ]3 M4 @1 y7 {8 I8 _
+ F2 j  h! i+ R# X) K0 c7 R5 V        // UART 中断初始化
( n/ _; o4 ~' E" ^1 s; q        UARTInterruptInit();
0 z6 `& H  {) X$ R& g+ q( P' `
1 c& g: R/ A' Y1 |# }    evtRcvd = 0;
5 _& `* I# k1 _) |: ?' C" m    RecState=0;
; J9 X3 h) m: k. ~    /* Initialize */
. ]2 x; T. D* b5 S, z! i
/ ?, Y& N* W* I$ [# K" X    printf("DSP subsystem ready\n");
8 ~9 X. c: d2 H4 i; q, L/ T8 j$ q7 R1 M
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));
) S8 o* F9 n# h# ~  C, E+ n
  r7 _, N! J( \4 g: }8 xfor(;;)) f% m- F$ e6 ~0 [- w! w2 R7 l/ e9 L
{5 w  X" {/ X" J% M# Z" n2 i3 |, R
        if((RecState&0x01)!=0)0 r% P. u1 V) A0 u. o
        {
; X  D6 c! b' H0 M                printf("liuzhenxing\n");& m% v2 @3 M9 {# V3 P# K5 r' C0 j
        }" R8 _# S- j0 p% k2 J# I
        else
* i4 c+ Z7 Q2 @7 I3 u        {
, s' g/ f2 R: G9 o( O5 W       wait_event();/ f+ [0 m4 c! W
  ~& A) U7 N' D9 l- Q
           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针) V+ @- K# u9 ~1 @1 o
. ?) K+ W" [. O) l/ i
           for(i=0;i<60;i++)
8 U# j3 P: K/ _8 J" d7 `8 U           {% `7 d0 o3 |  l
                    rec=*qm;
! J( l$ k2 y0 @! L! r                    qm++;/ E7 s$ L( O$ G4 o/ k: @
           }/ G) B& z# |% T$ g# K1 ]) c, h

& b) d1 n; I) I2 }; l/ s           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);0 H: f, l& m: b( q8 p; ]! J" M

6 B, M* @4 p( h& Q" i           L_b=L_b_receive_double;
9 J( Y# D; h$ L% G' m, c           lambda_b=lambda_b_receive_double;$ t) \5 S5 l% R
           h_b=h_b_receive_double;) g& q8 }% t/ r- b  D% ^' _
           for(i=0;i<3;i++)+ O$ u3 T* s$ O3 F+ `$ N
                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];
) P2 E7 `" P! N( x3 y, L& t1 ^, l           for(i=0;i<3;i++)
+ f) n' y9 M4 e                    for(j=0;j<3;j++)* R  G/ F- K. b8 H# ?  D
                 est_C_b_e_[j]=est_C_b_e_receive_double[j];) c6 z9 B- C+ w- I
' g; o5 K# g) e: f. `6 @$ g
                printf("L=%lf\n",L_b);8 W4 L. W9 J0 g* x2 |( C  S4 ]
                printf("lambda=%lf\n",lambda_b);7 W% k; _+ k% w3 n& n+ S
                printf("h=%lf\n",h_b);
1 O& c3 {5 z5 {" B
8 _! z% H3 L: O: W2 m2 p                for (i=0;i<3;i++)
" J' s( T) m0 L" |% }                        printf("%lf\n",est_v_eb_e_[0]);
4 q; P/ v8 i, F& \9 _5 N                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]);2 w, v6 ?+ h5 y3 o/ v& i9 e: \
                printf("rate=%lf\n",rate);2 e; r9 V* [% I: l- j+ ~

5 i2 V5 f9 `, M. O                CTM_to_Euler(est_C_b_e_,eul_);
/ a$ ]/ u) j/ b2 ?& S" N3 g. s                for (i=0;i<3;i++)
7 `  W; v; b" j. T( G" l; r                        printf("%lf\n",eul_[0]);5 @8 W( ?4 n) C2 T. D
                printf("end************************\n\n\n");; A  h5 q. {$ S9 r

! k9 E5 F$ H+ Z* X" U                /**********************************************************************/
' i, b* ~! P+ G) Z/ c" Z4 c6 H) A! H0 I1 ^  n
            char flag[4];4 K2 W8 e8 C! o0 S0 H8 C. K8 S, c
0 m! q% i! P9 O2 F
            flag[3]=0x00;
8 c: V+ E: n% g4 A0 Y% ]$ |+ @            flag[2]=0x00;# a# j/ G, m8 u4 e) ~( P" k2 g
            flag[1]=0x00;
0 H, Z2 e- i4 Y7 |! ?            flag[0]=0x01;2 U. K+ u/ K* I6 k! k
4 W% s/ s- m$ l: s
    /* Allocate I/O buffer and init with string */+ w6 M  ~7 h$ |- s$ U: q
    str_buf = (char *) malloc(80);( _$ k( N2 V4 P
    str_buf =flag;+ L5 r: O3 O. c- `
4 S' d  l$ a1 U$ y8 K' ^& ^
    /* Send buffer to remote CPU */7 l7 J* w  @3 q6 P
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));, k: T- }: t, l2 _9 S) {6 k$ a0 Z
! g# ^7 ]) c# R6 M
    printf((char *) myPayload);
1 L! g6 A% f5 Y. n. V8 c        }
7 f$ e& y/ }+ [}
' J0 k0 T2 X3 z% {) K9 I; a* H0 a8 X+ H! ?+ b& c( Z% ?3 w" ?& `
    WAIT_HERE;
8 d: G7 \0 E/ F; G, J# R}
/ W' z5 P1 d5 H- _9 k- C. [3 z
作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:
8 [6 ~: u( i/ B2 c我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。
! L, ^; x; w+ L: s8 Z1 x0 D* \然后我把双核通信的初始化屏蔽掉,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
# d3 ], s+ Y3 x9 r* B* Jsyslink 的初始化是否成功,notify 通信是否正常了?

; v) _+ _2 k4 F# B双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:54
0 w; n1 w2 S+ y% J6 q0 msyslink 的初始化是否成功,notify 通信是否正常了?

, k: e; D5 ]& ^1 u+ L% L我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:20
+ }) `" P8 g) [: c/ n* W我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程

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




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