嵌入式开发者社区

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

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。
# j+ P9 ^+ h7 Q我是在DSP初始化这不太明白。
6 O  O6 t' K9 u7 K初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。5 \0 B8 l; p, m' s0 W4 T% `7 K" P

$ v' A! Y% [8 {$ w+ Z$ F# [- _% V& ^, ^8 ]0 ?3 }
首先        PSCInit();//UART0使能2 Z8 x" i. a& [
void PSCInit(void)
1 v7 m0 x' H# P% V# H4 T3 ^. z" u{
  U5 E: L" F; O4 q        // 对相应外设模块的使能也可以在 BootLoader 中完成
' |7 t$ E& x0 {0 [    // 使能 UART0 模块
3 N3 p0 M# p8 y5 D5 Z    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);
- W8 I6 c$ T) r5 ]) C6 N7 \0 ?}. O" }# x* t  B! R9 M9 {, x
9 l2 o, x# h  U8 q" H
$ e& p' @0 ]& Z( x
然后是 双核通信的初始化           AppInit();
& y7 Y; ~4 m0 |void AppInit(void)  V3 D8 K* [* X" v2 s
{
% S/ m9 b2 X" M, ]- u% x    /* Structure to initialize IPC (see Ipc.h for definitions) */
* `; W/ h) o$ u) X. o    struct IPC_cfg ipcCfg = {
! U( |. E, y; b! q            IPC_DSP0,             /* local processor Id */
* Z1 H4 q5 s) K; c0 J            IPC_ARM_HOST,         /* remote processor Id */: ~! V1 }  E7 X. J% O/ K
            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */
3 Y2 }9 h% L: w5 ~$ i            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */
7 t  y3 j7 ~) W6 _* s0 K- t: Z            NUM_MAX_EVENT,        /* maximum number of events to be created */
' i9 Q. S4 f2 _            &ipcPvMemDsp,         /* local side private IPC memory */
& `( q* f8 r, I0 I. r! L+ M1 s            &ipcPvMemArm          /* remote side private IPC memory */
- R- x- w$ [- c    };
( h0 D8 K# a0 X1 c    IntDSPINTCInit();
5 ~! |/ K! ~2 P! j8 T* U1 s& M  K    IPC_init(&ipcCfg);
/ e( Y  w: l0 ]    IPC_intRegister(C674X_MASK_INT5);$ h; Z( w9 L0 e
    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));
6 M/ T6 [8 M+ ]$ K$ u  f2 {& Y9 L% O' b# `
    /*  Enabling interrupts for DSP C674x CPU */
6 z& c! L5 K9 J  N    IntGlobalEnable();        /* Enable C674x global interrupt */
; G9 r' D& @3 q- M0 [- @    iAssert (Notify_start()); /* This will enable IPC interrupt */
" t& C: P+ L5 j9 P: l}
" a3 s' D9 r2 }2 J1 r& V
; `% U4 B1 l, t; ]" E' Z
然后是  
- u" ?2 H7 m( e% l) }            // UART 初始化. r( F: E6 ~( u/ z6 S7 w8 N
            UARTInit();
9 ]9 q: c, E' y: m* d" E
6 d8 u; t7 @( C: N1 C/ f/ @            // UART 中断初始化
4 _9 F" o" q2 B: j' \+ B1 q            UARTInterruptInit();
/ t$ P7 G4 v1 w

3 s( h0 Q0 C3 H3 V
1 U0 H# z5 R; ?; G- L- Uvoid UARTInit(void)
+ c8 {7 t$ Q: S& l/ r" _5 S{) k/ N% k- ^/ `5 {- L0 s
        // 配置 UART0 参数$ O3 c. ]3 }- {
        // 波特率 115200 数据位 8 停止位 1 无校验位
2 z! ]' p: |3 p    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,! t" P. \; g0 y4 f( a7 c$ w
                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);
" V; @& ?5 D8 _        // 使能 UART0
3 Y3 U0 Z! I, e; t5 }" W: u" u        UARTEnable(SOC_UART_0_REGS);
% ^7 r+ R/ O1 Y5 s
' H/ K. k" p" E6 P6 ?7 [, p. p1 ^    // 使能接收 / 发送 FIFO
1 ]' k! B2 d9 Z7 i3 F7 \3 k//    UARTFIFOEnable(SOC_UART_0_REGS);) o  U% L8 Z8 p" v& U  |

3 X; K1 K6 U4 \: j! B; c        UARTFIFODisable(SOC_UART_0_REGS);7 P+ D# j5 r1 l
9 t# z3 r, a% T. f, K( w' }
    // 设置 FIFO 级别     接收FIFO的级别1 j( ?3 ~5 t3 M
//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);
& \' h  K5 {* V( t}
( o6 v* T1 A, k- F/ K

+ p. @! n+ N6 A* l# c
  g, j8 R- @+ H0 \! ]void UARTInterruptInit(void)$ @) K" J. ?; N3 h: g6 j
{. h: o/ T0 P/ ^/ {0 |8 a
        IntRegister(C674X_MASK_INT4, UARTIsr);
4 X, I& z0 U7 P/ u' T3 B        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);6 ^: S* h$ c7 f! b# j7 {  B
        IntEnable(C674X_MASK_INT4);. R$ {& E- `+ A8 ~
- }0 o8 ]7 y: M6 e; {& x
        // 使能中断- N* }0 a# C7 C# o& `, h
        unsigned int intFlags = 0;
& ?' g* b7 h2 H+ E; W5 o7 T    intFlags |= (UART_INT_LINE_STAT  |  \7 d6 V1 y+ b1 n9 x! g' {0 i
                 UART_INT_TX_EMPTY |    \
8 @$ h. H/ R5 F* k7 Z                 UART_INT_RXDATA_CTI);- m! i# _  x9 F
    UARTIntEnable(SOC_UART_0_REGS, intFlags);- b! E& u& `* Y+ w* G5 P2 d3 O
}3 L* l, q" G( u& l& q

0 j# u( j  a! J* }' ]4 j% c* I( j, }" E, x" O
void UARTIsr()
& x: l% `! Z. N' I9 z{2 Y5 h) @6 v% X7 c2 Z
    static unsigned int length = sizeof(txArray);
& h; `, z! E3 \/ F9 z, Y    static unsigned int count = 0;
" o! I4 o, h! m$ U# S) Z) Q2 G4 H    unsigned int int_id = 0;
* h6 C4 X0 U# u+ ~. }
3 b5 L5 a; @5 E6 o
% h- P6 `7 n$ v7 g0 O6 A+ B' b
3 N. r$ ?' m: m: m    // 确定中断源  ?" `! i# k! c& G) L" A! U3 }" {' r
    int_id = UARTIntStatus(SOC_UART_0_REGS);: y% b* @- U7 ^, S2 n% u+ y

7 ~8 K- @4 K+ j( H& v' {    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。
( _) ?5 G1 s9 a
6 G; y. N0 O* S( @0 V, \' |5 [, ?- Y" M3 i
    // 清除 UART2 系统中断
# d. q6 ^5 c& G7 t0 W; U    IntEventClear(SYS_INT_UART0_INT);
8 c% k9 s! X: m( }1 c+ `7 r4 x# w: C( J; W6 A
    // 发送中断6 B) S, e. F$ P
    if(UART_INTID_TX_EMPTY == int_id)
; X3 y2 n7 G# P    {2 A* I4 L* M0 |% {" }4 w" f% k
        if(0 < length)1 J' ?& B+ C6 b
        {
8 d' V( a, g4 T* D) a# [            // 写一个字节到 THR
" t' L8 G" i- ^# o0 O            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);
1 k# k- v) J  m# M( F            length--;
6 G0 ?% U  P$ \4 j' {1 t/ J, T* V            count++;" L8 `3 t" H6 a- z: a4 f1 @
        }$ ?; R# T. D* Y8 n& [% X
        if(0 == length)5 _& ?7 [& ^5 p+ z) r+ D1 S7 ~5 y' H; \
        {
/ G# a/ C* W) \0 Q! a3 O4 T, K$ D            // 禁用发送中断
' b! e9 W% L' z; C' U            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);4 T- b" I2 e9 U3 X$ g" s  q. K2 d
        }. _* j2 F+ X3 L4 \9 E& S
     }
3 C* r6 @! i9 J3 m, z
  b6 R; e9 P7 F    // 接收中断% _+ t. e0 q  D& |( G" O$ m$ X
    if(UART_INTID_RX_DATA == int_id)1 }- Y0 q5 O) L" X9 D9 S
    {% S9 Y# A3 a; V4 \8 i3 J  x# Q
        if(status_a0==0)
- w4 X1 @5 ]; ~% P, v) c        {
2 M0 g& q& p6 r! p, x                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
+ {" `0 G. N8 A' V                if(a[0]=='#')
+ T0 [; k/ ?4 \( E' C$ E- q6 Z: l                {$ {0 K/ T+ K" ?$ K, K6 N
                        status_a0=0x01;  P8 G3 f5 o& m' s. Q: s; t  t# D4 Q
                        status_a1=0x01;; e1 b0 [' p$ X/ S; S
                }
$ x" i3 [0 |' L0 o% ^        }
% [- Q# b/ ~: x$ f$ w+ E9 L( G        if(status_a1==0x01)
3 b) ]$ Y. y5 P4 E. |3 b# v        {, X- M9 d- G1 |# s7 U- h
                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);0 m9 I# t( m$ O, V% F5 A) R
                if(a[1]=='R')
6 Y$ R/ v5 @1 A9 k  M6 J                {. V# a. N9 K5 ]$ b# Y  S/ Y
                        status_a1=0;" {: v% _3 f  C+ }8 }/ K9 x4 J
                        status_a2=0x01;
- y( t. D7 Z/ i2 g- t( W: o                }
, v& K( b* `, z* ~$ K        }/ T3 q8 }+ \/ v8 |, N3 U
        if(status_a2==0x01)1 F$ E2 |" D$ m  g$ ~+ X
        {: ?2 T- i/ K& ~3 g% W
                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
" N8 ~4 Z6 h* g6 X                if(a[2]=='A')
# |, L2 k, ^6 ?, t                {5 f9 |6 M1 d* ~1 E
                        status_a2=0;' S) Q9 }" u& f7 P+ \
                        status_a3=0x01;
! R- L$ m3 N$ S! l                }8 y5 {9 ~, i/ ]$ w( ^" i" E0 I
        }- M; d1 v4 e' q, \, ~8 w, s. [  Z
        if(status_a3==0x01); g* k  ]" @' J4 a
        {
; A( a. J  {, A( K                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
7 e% C% p. w" R                if(a[3]=='N')
* M- p# I5 J$ [* n6 b9 `5 q: j! Z( S8 v                {
4 \) H( q! \# W( A) e" [( I                        status_a3=0;
& e( ~, ]: d# `' L3 M2 K. K                        status_a4=0x01;: J! p% X" }0 U( }
                }
4 L& F  S. ^3 p  @        }
% p+ ~. x" \  l8 f, l' z        if(status_a4==0x01)* F, _4 F+ e$ h9 b. e+ R
        {
& P6 R1 ?' O+ I                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);9 ?$ }8 L  |- [9 G( I! @8 K
                if(a[4]=='G')$ D# z6 G8 C' C" Q6 f& n! i' G" T  P
                {* L( o+ T6 E( b; X2 @  g
                        status_a4=0;
1 ]3 h/ h+ e/ g                        status_a5=0x01;& Q7 X, r. L6 l/ x; L9 l
                }
* U& N5 C: k/ J. y! X        }
; e4 h# ]6 V7 F" B. M        if(status_a5==0x01)1 |' l% U7 x+ B9 A; U: L
        {
1 E) q0 S  N9 u) F, p: S                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
0 z9 P! R2 w' x" T! N3 Y8 H                if(a[5]=='E')
- E; E/ t0 X/ {                {
5 B- t# ~! p  E0 L7 ?1 \. G7 ?                        status_a5=0;
0 `1 @% b' h1 D% f1 ~/ v                        status_OK=0x01;+ I% q) X/ v6 B) |7 \
                }2 i5 Z3 W: o$ }* x
        }
' R, U9 W0 w+ r% `* p) ]) _" J            if(status_OK==0x01)& n' H' c5 P" P$ V3 K
        {# w1 ?3 y/ N+ c" G( c! L
                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);6 @* a% V, N( [
                        lengthrx++;& u# T# n% w" p1 I' W- ~
                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值)% I2 L  F" ?4 [  d2 R9 z; Z$ H7 K
                        {
( o# g& N- r. t6 p1 ~; W9 z& Y                                RecState=0x01;% y& B* M& u; {/ n7 b/ }5 H
                        }
8 [; q" a% H1 R( X+ P6 d         }/ Z* _+ [- Q2 c) y; r! k

# S& M* V1 I  [/ C. G     }
  u$ F( z# h  d1 k2 z' j! l" r+ `' k3 L
    // 接收错误
; |( l6 t: V8 p" ^) I# u    if(UART_INTID_RX_LINE_STAT == int_id)3 b/ i3 k3 n8 H, s( f2 x9 \$ N
    {( e8 V) R1 m' p+ J+ q
        while(UARTRxErrorGet(SOC_UART_0_REGS))
. [' T) i7 t6 |& W        {
/ y" a" z* m. ^5 m            // 从 RBR 读一个字节2 l, X& V1 J" j- K
            UARTCharGetNonBlocking(SOC_UART_0_REGS);
/ l1 c& h  ]+ Z0 [% l        }3 O& O8 E. g3 m, ]4 ?1 s3 @' [& G- e
    }
" U: g/ P, r+ |# z" G- H
$ H9 @4 l  ?, n$ I* X+ t    return;
5 S8 S! q5 T; E. S3 r}* i+ c0 T. U2 b4 j! ~/ e$ A
) l4 M/ s% `7 l4 E

4 Y* m1 B" p5 |5 ~8 U) y! \
) u4 E5 p% j( O5 d, z. l0 A
作者: Jackindata    时间: 2016-8-17 11:13
hi,+ B: G+ \/ y" k' _" c! n; K' \
1 a' m; M' y: K1 \. D+ |2 U8 j
UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。
4 |/ B, ?) A: q3 r
, d$ z6 Q4 o5 V" f1 B2 `$ Z要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:13
$ [& i0 ]0 M! @# x! Vhi,! c( t" R' y; ~8 C" i8 I

: X* Z% R2 H5 l4 r) p% @, ]9 p* {UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...
5 ?  C& d2 O. [; f
void main (void)
* u  I# t$ _5 n$ e. q9 i+ ]3 o{5 ]  H+ Q8 m/ ?( g- U. v
        int i,j;3 w7 l, L6 o/ r7 A) w' x+ p
    char *str_buf;
+ _, o6 ~3 ~# F7 t# p' }; j    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];
. N. ^5 ]' a& R        double est_L_b_=0;
  L( N5 x6 ?8 _! n3 x3 ]4 }        double est_lambda_b_=0;
, j( _% i, R4 q8 C6 `+ D. D% g        double eul_[3][1]={0};% |/ k- X, Q0 |8 ?
        double est_v_eb_e_[3][1]={0};* x' l$ i/ N* r; {6 ^. d4 H7 Z$ x
        double est_C_b_e_[3][3]={0};
4 Y0 \* x' v% i2 R* Q: u    char *qm;+ |  ?3 q$ J, Z* y- B7 ^
    char rec[70];
* r" o/ ?' c2 o# p4 r+ b        double L_b=0;, J# m6 w9 V  d* `
        double lambda_b=0;
+ r& X! I! E' h( X, O* s2 H+ o: r8 G        double h_b=0;
) p7 Q6 x8 k8 D4 k4 A* A9 w  Q  n2 r% \        double rate;: v' L1 l) N! H) H
# C1 I/ {& T/ w# a( y

$ J  G# g4 ?% S8 x' K2 N        // 外设使能配置
2 [: V" f( H! @5 z% m; S4 X        PSCInit();
0 Q6 S! x' M# x, c. [9 Q4 }+ t3 I
. f# N. u& k3 H+ O        AppInit();
6 F  N0 U8 a( o: s1 ^
& E, b4 j8 w6 l  _( V/ H! E1 G! l5 @        // UART 初始化
) C4 z7 o+ D  [# y        UARTInit();
' @( ~* r4 V5 h" @0 w) x. h! l
4 z  Q- C$ \' x) `- }        // UART 中断初始化
4 Z' k3 b+ i# u' W        UARTInterruptInit();2 X2 o4 x! G" {5 E3 m/ P
% i! U3 G! q) K: H) ^
    evtRcvd = 0;/ b" Z, L# G3 Z
    RecState=0;, k3 N% D! T  `* Y, ~
    /* Initialize */- V! @) I; l2 f. V

0 k" i0 d8 x( G4 P    printf("DSP subsystem ready\n");" p! Q, Q7 D$ w$ B, s/ S  E

6 _) n- p. t; y" S- p+ l4 y    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));
& k" C5 M' h: [: n; K+ J% g" N" f1 R. {, q' A9 u* v2 h
for(;;)
4 _" P  W8 C3 ^{5 F" `" |# z% u/ a0 j9 Y  @; Q- r) b
        if((RecState&0x01)!=0)
2 [/ t4 m: F* w3 k$ p        {
: Y0 X0 m+ y% M) A                printf("liuzhenxing\n");# u0 b  Q7 ~; J- J
        }8 s9 {) b) `9 B& ]8 d- j6 r2 P
        else$ ~& z1 Y/ u6 j! [6 p" L6 M$ p
        {$ X6 V- _; Z4 H/ Z4 z
       wait_event();
) }' ~6 G1 ?& F6 y3 ]' u) y4 ]/ B( p3 }* ]1 l1 O
           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针" i1 n- I9 Q  a
* o2 u& F" p/ R# q( j: Y6 t
           for(i=0;i<60;i++)
* L' g0 R7 K; E! H# \6 \           {2 z3 h* S* X6 _% m' A5 k/ V
                    rec=*qm;
. U- A8 D) V0 m4 W                    qm++;
* r6 n0 {# P: s9 E           }
' q5 N% p  y; d1 }7 x
! z' f/ Q2 l$ u: F$ X3 \           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);# S6 |: M6 m- y! x

# J7 G1 Z. W, a# E) E- X, N2 l8 A           L_b=L_b_receive_double;2 T! n3 Z0 I% N/ N7 o
           lambda_b=lambda_b_receive_double;: W# M9 E8 a  P& Z' X0 ]
           h_b=h_b_receive_double;
3 ^" y/ p6 \2 K$ ]% k* W, ?           for(i=0;i<3;i++)
6 \( L% ^4 y( n" G, M                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];$ ^6 _8 U; f) Z' W3 L+ O
           for(i=0;i<3;i++)% G' Q0 @# |; x5 G7 d) @
                    for(j=0;j<3;j++)
8 w$ b) v/ x* n( n! V                 est_C_b_e_[j]=est_C_b_e_receive_double[j];# k+ {' Z1 ^4 v$ ]) u2 L5 H+ m

, h3 \) q, ~5 T) d                printf("L=%lf\n",L_b);
* T! y: O" o: C9 S! [0 P# L  Z4 R                printf("lambda=%lf\n",lambda_b);  Q7 A/ d" ]; X! s& o" M. ~
                printf("h=%lf\n",h_b);  ]$ o. I2 O4 q! `3 ?6 ]& |  ~
! C0 J! V; ~1 ?2 [& n# k3 A
                for (i=0;i<3;i++): `7 l' W+ Z% y$ @
                        printf("%lf\n",est_v_eb_e_[0]);2 H' n/ t2 Q2 I- ]! R' O6 D" J+ r
                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]);
3 Z3 y. O" }4 L# X: ]                printf("rate=%lf\n",rate);
& x1 t4 m% L- N4 G3 v/ Q" W/ i) L5 `3 w- E
                CTM_to_Euler(est_C_b_e_,eul_);
% p6 |2 Q' U  S- `7 w                for (i=0;i<3;i++)
( s4 c5 A8 \! [0 `( A2 Z1 G                        printf("%lf\n",eul_[0]);6 C5 k9 v' T; b0 \# v. i7 J
                printf("end************************\n\n\n");
6 p* M* Y8 S" _8 r, q/ L
  Y) n6 f" P  D6 a                /**********************************************************************/
( ~% E9 G4 e( o' W  X4 T7 r9 _3 R/ m
            char flag[4];
6 n& Q. @% E! f, [! R: s& O4 {0 ?# `) E7 z
            flag[3]=0x00;
3 t6 E% \, N4 ?0 D+ O            flag[2]=0x00;
* A7 z7 @/ w$ |            flag[1]=0x00;
' a1 f& E" I- h7 I* [            flag[0]=0x01;& J* M! {9 B1 S2 ^
  j6 v5 A$ q4 Q2 I
    /* Allocate I/O buffer and init with string */# T% R, a4 U6 O/ o; _
    str_buf = (char *) malloc(80);* t' x1 B( S) {  l  Y4 v4 n% u* _
    str_buf =flag;
5 `( C7 z+ B  V: y3 e. M  U& E) ]) y" Y, Y. l6 ?/ O
    /* Send buffer to remote CPU */( g6 _% |+ c/ X- T
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));  \' \9 w! I, b/ D- f/ T+ ~4 i- J

: v3 ]+ m& ^9 q: u- Y    printf((char *) myPayload);
5 n4 c- C; D' i- I9 J        }8 N. S: f- O: h& E
}
' p  {8 c9 a5 l& X+ o# f' J% R/ T2 o( `. Y
    WAIT_HERE;
, g6 j! k* B" ]5 B9 W) P" v5 d}$ f- e( j' p+ a  t; l: E$ j; N

作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:# W6 E. z) V2 M9 T5 X
我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。
& O! O) N& a% x% U; h然后我把双核通信的初始化屏蔽掉,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' a1 c0 O- h; Y$ i" S+ N
syslink 的初始化是否成功,notify 通信是否正常了?
/ B% M9 z$ }% P6 X( `$ n" W
双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:549 e5 d3 {" c  V' a4 Z3 B& a
syslink 的初始化是否成功,notify 通信是否正常了?
3 n6 {1 @. X5 X
我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:20) @( ^- }# n5 m4 O( |# r$ s
我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程

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




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