嵌入式开发者社区

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

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。
5 e6 N# m1 g: h0 F; l/ w+ H: o我是在DSP初始化这不太明白。& L9 U0 I5 I9 O: P
初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。
5 a/ M- v( |" V2 r# |1 ~" b" t0 a% q) @
/ }) W1 V5 i% f5 a8 G0 s9 B
首先        PSCInit();//UART0使能' e6 c% I" O( b7 z" f- \
void PSCInit(void)# a* q+ h; y# c
{
$ Z3 S+ M2 U) n        // 对相应外设模块的使能也可以在 BootLoader 中完成& r  D) @0 f! t2 t; \) I
    // 使能 UART0 模块# w1 n4 l, n( H$ `- F
    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);, L, k3 {5 r7 R7 m- }2 i/ t
}( C# }  T5 P: y# _* T4 Y

% b$ [6 }2 A: b; F6 }3 n. B2 l0 \( V5 g
然后是 双核通信的初始化           AppInit();, a8 j# {. ~* B$ O
void AppInit(void)  X5 _, a# e0 L1 a" ]* U( Z5 [
{. F2 @1 l# \  @4 i9 ~
    /* Structure to initialize IPC (see Ipc.h for definitions) */! @5 j  i5 d4 t' ~9 n6 J
    struct IPC_cfg ipcCfg = {, k# ~& p, W' i1 @+ {* m
            IPC_DSP0,             /* local processor Id */) ^, B' W5 C* q1 @% H+ O7 `
            IPC_ARM_HOST,         /* remote processor Id */* U. ?1 @2 G7 E% l4 P: @2 Y
            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */& F! ~" d% m6 o  f- |9 ]9 x: f7 i0 g- @
            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */
4 z0 {: y: B8 o2 ?7 E8 u% f            NUM_MAX_EVENT,        /* maximum number of events to be created */: }! `4 n$ a# Y, q5 U' d- F9 D8 `
            &ipcPvMemDsp,         /* local side private IPC memory */0 J& s8 D& l, K# [& r- }! g; w& o
            &ipcPvMemArm          /* remote side private IPC memory */
% ?2 k3 U% C9 ~6 I    };' o! f( x+ t% a, ^
    IntDSPINTCInit();
+ M' R# _, o+ y+ |" D0 B' g/ P    IPC_init(&ipcCfg);
' Q( M" D- i+ k* P! F# p2 z    IPC_intRegister(C674X_MASK_INT5);, I) C# v& f. W1 }' L
    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));3 j5 [, l$ T3 o8 G( i

, O6 R7 I+ B7 G+ z0 Y; M    /*  Enabling interrupts for DSP C674x CPU */' k2 P3 Q4 i; l' n5 d, {
    IntGlobalEnable();        /* Enable C674x global interrupt */
; J2 R% K' V/ o    iAssert (Notify_start()); /* This will enable IPC interrupt */  u0 z, C' _' M% i$ T
}1 A) y) r8 Q8 b+ R( T2 x9 s5 h

4 d! x+ w0 z% X然后是  % d( \$ D5 ]" R+ W9 b1 C
            // UART 初始化
" g' M7 [  e* ^& T% e2 G+ Y" K+ j. C            UARTInit();# W0 M5 ?; p& @/ e; X

! b$ V+ `: r0 {5 c! r% c8 t5 c            // UART 中断初始化
9 T% }, {- H1 B) r! v( j& e            UARTInterruptInit();
0 _7 k/ Q2 ?. y$ Q$ x
8 a# P+ k3 o5 j
" r& A9 E9 G6 U' K! u8 r" N
void UARTInit(void)
% n8 [* Y; `, k{
9 X# W, y: H- C5 d# R: B        // 配置 UART0 参数' v% K3 W9 v% Z. g! _2 A
        // 波特率 115200 数据位 8 停止位 1 无校验位
$ L3 Q4 B2 @" k/ P, v: E1 q    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,
2 s0 _' I2 z* H3 C1 a5 e+ e0 O* D/ n                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);
- q2 f2 Q# Z+ {* W# Q        // 使能 UART08 O* i  d, T1 ?8 _% A. D- D* l, {* q
        UARTEnable(SOC_UART_0_REGS);0 Z8 v3 Y  p) l3 O) W

- X+ U% T6 d4 G" B    // 使能接收 / 发送 FIFO
" D& ]) J7 E- v( L//    UARTFIFOEnable(SOC_UART_0_REGS);
" i) q$ X( f0 D  R2 [# u5 e, L+ X$ j4 D  N. u% |2 \5 d% V; e  d
        UARTFIFODisable(SOC_UART_0_REGS);
( A( Z; u, E% n+ a/ `6 T9 [! M: u: @$ {/ l$ ]6 l
    // 设置 FIFO 级别     接收FIFO的级别
( z3 W1 y$ N+ a; W. p8 P& q//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);
1 n# D& K8 O/ e0 G}
! n# K. w+ ?2 {+ l) L
2 k* d/ I6 B+ b3 s3 v

& y) F7 `2 [, |. u" Q, t  hvoid UARTInterruptInit(void)" I7 ~$ i& Z8 |1 G9 Z9 j
{" v- u% @3 E- c" u1 a* S
        IntRegister(C674X_MASK_INT4, UARTIsr);
8 C" z2 H5 _  V$ ~3 c  y        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);: y" F/ g5 q3 V2 d' P- ~
        IntEnable(C674X_MASK_INT4);- c3 v" U9 y6 H9 k/ T7 z

" a, [+ n3 `& v5 C1 Y& h        // 使能中断( n/ f( V! O) o. V/ V2 @
        unsigned int intFlags = 0;" r: C# G. q$ f" \
    intFlags |= (UART_INT_LINE_STAT  |  \
+ y% b/ \% e* }% N1 a: s                 UART_INT_TX_EMPTY |    \& q! c% G2 Y: _
                 UART_INT_RXDATA_CTI);5 \. s2 s/ k. O1 e$ o* P
    UARTIntEnable(SOC_UART_0_REGS, intFlags);
3 o8 y9 n. }" }- {1 [  f}$ v1 t3 F; ]0 u! R: {
: _; }9 X; |9 n9 k* g

3 S/ {9 }, J, g$ u3 Mvoid UARTIsr()2 c0 i: V9 L% ~
{
1 e- h% K% {; h& c5 C% E    static unsigned int length = sizeof(txArray);- E  J+ d4 X1 ?  Z: L" Y1 V/ ?
    static unsigned int count = 0;4 r7 B, T1 {; a  u  {
    unsigned int int_id = 0;, l6 S% p# t8 g- W# N& r! K
% O3 I9 s+ g8 |3 a$ G$ P

' ~5 a  O1 V/ p& ]' s1 B' ^: F/ m: N
6 C& ?% Z% O; m. q& ?    // 确定中断源$ q8 O5 \- N7 t: |
    int_id = UARTIntStatus(SOC_UART_0_REGS);
/ b! [  u7 A6 L, y$ I0 o% s( X" _/ s! m, r9 L
    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。1 k. H" I' u/ Z6 Q) a

6 O- j2 y8 k2 G& c8 L& V( r6 s2 Y1 K' |9 P* K
    // 清除 UART2 系统中断
& _0 Y+ w1 ~+ j! ~/ O% {4 \" G    IntEventClear(SYS_INT_UART0_INT);
+ n6 R4 g+ I  P, |; p3 a  j6 y- v1 B# D# ~: Q7 I
    // 发送中断9 A/ d, x8 K, S
    if(UART_INTID_TX_EMPTY == int_id)
0 u! x' H; \- s/ v. o. _    {
" P4 c8 u, k, y& W' Y$ [        if(0 < length), a& T3 e9 c3 [8 s. _8 T9 |$ Z& u
        {6 E" u# r( e  v: I& V& \2 s) p
            // 写一个字节到 THR
6 H% _% J' {& g3 w            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);
  M5 n8 e) \$ U" M' ~( s' G            length--;/ o4 k8 J4 p# P
            count++;
+ c& B9 R, X  J  m  a; q) g3 q0 Z4 T* o- \        }
  \) p, l! d- P; @( a- j9 D  w        if(0 == length)
* b+ F, l% p! t        {
6 A  O: A% s1 s            // 禁用发送中断+ B/ n( D! `6 B
            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);
0 L: H# h; B% S9 Z        }  ?9 D, B. T9 o! Y8 V* o3 ?
     }* l$ \1 M" F6 H8 r7 ?" l

5 h: ?, \: u9 u. {% X: ]    // 接收中断
# i8 N/ k2 O( n7 G& l$ u7 M  @1 i    if(UART_INTID_RX_DATA == int_id)
0 y% F& J9 k' |/ c( \    {
; {, }% j6 D2 I) H        if(status_a0==0)
: M# U9 H( g# C, D        {
) J( J5 y  S/ t: m                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
* r- T/ ~" Y7 d                if(a[0]=='#')5 Z/ I( _7 v/ |) t# P7 T
                {
: y* p8 ^. V# _( q% E+ S- z2 @                        status_a0=0x01;
5 O9 q& T. Y' d( G                        status_a1=0x01;/ K' H9 @4 L6 j) S
                }( h' K4 E+ O4 R5 t9 }
        }+ c3 O2 |+ R( X1 F0 Y
        if(status_a1==0x01)
" R1 ^! b8 N) w. R, |. v) b        {7 s$ t5 I; [4 ^8 @, r: ?- v
                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);5 I' @& D& }& ?# l4 V
                if(a[1]=='R'): A2 t- X/ n. m  Y
                {
& ]! R0 z6 F) C. p                        status_a1=0;
7 I& e4 h. Q( `2 k                        status_a2=0x01;
* W6 B! w2 e9 N# Z' z! N                }
% {; {! z# C# d. o' k5 ^" ]3 Y7 d        }
# W; n7 [% R+ y        if(status_a2==0x01)% x$ V% Q% `6 F% a5 [2 T
        {' R2 T0 a/ w$ }; R
                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
: t3 \0 n- i% u# ?6 n. X$ E                if(a[2]=='A')% q: M; x( y7 [* ?9 u3 P
                {: g( x" f/ O& E. B
                        status_a2=0;, [  j; L1 j3 t' Y
                        status_a3=0x01;. _- E+ N8 F- [# `* D* M, @- c$ N" I
                }' c2 p. m8 p8 M
        }' d3 K% M/ G" h! I5 J3 H
        if(status_a3==0x01)
  z' q" N  F+ u8 W4 x4 X* k        {
: @/ Y: R& u8 G2 a                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);  M: S: p; Z4 u; ?: H: }
                if(a[3]=='N')
/ a: j; q) ^1 `2 X! ~                {
9 Z9 Z. b! U/ h0 E6 Q                        status_a3=0;
( ?( ~$ |7 R5 g& Y                        status_a4=0x01;# ]2 I  R1 g( o& T8 C
                }
. G( A9 F& X/ ?* K        }
& p2 f7 x( ~4 T# o        if(status_a4==0x01). M1 g6 U! M5 j; I( M7 u
        {" ?4 @9 z, G) c3 _
                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);. m) n8 C4 S7 z$ P# W+ m
                if(a[4]=='G')) o2 n5 m; n6 k( P- g% V" w
                {
! ]% x4 T6 x# E, ]                        status_a4=0;
- C- b/ O( x$ w) d3 S                        status_a5=0x01;  B$ D: F1 y3 Z9 y6 [, G# ^
                }
% n8 F" G% u- Z6 N& O; A        }
0 c, ~4 s* w" P: E4 q, h' A        if(status_a5==0x01)( X0 s3 Q( y  q
        {
$ }% Q3 \5 `9 v9 O: p( C                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
) `4 H; y8 p0 e" b* ~* ^5 ]                if(a[5]=='E')
" H) K! S7 B9 X" x. w                {
* y" Z* j( X6 T" F( _) q' X                        status_a5=0;
5 L8 s1 |& L- G- ^1 ?1 f                        status_OK=0x01;1 M6 R5 |+ w2 J$ u6 R
                }5 H8 e2 p9 B' l  X% x+ E
        }
& z6 o4 |* E' ?            if(status_OK==0x01)
. O( @: {$ I& F4 T: \+ |' i6 ^3 \# R# w        {
0 G5 _$ Y1 Q& C4 u! v/ z                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);' |8 I' p( f6 I% z/ a
                        lengthrx++;
% e9 q; [5 j3 I6 ^5 H                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值)
6 d: i2 r$ o: ]  C3 D( x8 W                        {) N# T. b8 k3 y5 P
                                RecState=0x01;: G* o  i0 y+ i, u
                        }
& ?( Y  w* l+ {2 z/ g         }+ I5 ~- ]/ o, e( S- C/ c+ g

% [! T1 q7 \/ R. l     }( B. m# U3 ]  g7 ?9 i# m

5 L2 ^4 h% j7 K4 d& E    // 接收错误
* r7 a# w4 t1 P5 ]$ u1 V. [8 U; h    if(UART_INTID_RX_LINE_STAT == int_id)
  y& k+ X6 u% K9 B, `    {
7 R- u' R: t  o5 L: T        while(UARTRxErrorGet(SOC_UART_0_REGS))
* r- Q3 W+ g/ P0 v) C        {! `7 @% B. A5 `8 v8 ~+ F
            // 从 RBR 读一个字节) S" j9 I/ r* i% ?+ z! o
            UARTCharGetNonBlocking(SOC_UART_0_REGS);# K. `/ X1 O8 J4 D! T
        }6 s  A9 y6 g- f! J* D3 L
    }+ u7 h/ Q( [; {
3 k2 y/ G; R$ o. R* a0 C8 u$ r, ?
    return;* @3 L! S  g1 k& ]6 R/ D4 M
}  w; c0 s) x( f9 q

# K( d1 c' p0 C2 \4 h

9 F+ T8 n' }$ H2 D& I' M' w
' W  }! R. M& W* h
作者: Jackindata    时间: 2016-8-17 11:13
hi,: @" p; p- e8 }: |" T
* m& P5 Z, }: |. e/ m( n2 [
UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。
. a6 ^! h! y! x9 p6 H
" @# ~2 p/ W) q3 [, C要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:13
% e* C5 R5 B. I: q6 Y3 X% ^hi,
0 `! {5 z. u: f: H0 Y# y1 W4 b5 E* W1 }
UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...
  W& `% G" s+ v8 S: m+ L1 F3 w
void main (void)
! w$ D0 s/ H! o+ Q% W' o2 W7 H# ^{
% k: I  c( `+ T  |" Q5 v7 W( S( o        int i,j;% r7 Y6 z+ j# \6 S4 T: u3 A
    char *str_buf;
7 v2 V* V9 O; i/ s5 [    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];7 y6 i; F5 [* S  ?1 t
        double est_L_b_=0;
) W' {6 U. M& p# B( s        double est_lambda_b_=0;
2 o+ u1 _  [* r' T; F        double eul_[3][1]={0};& T0 Y4 Q  x6 Y3 e% K, j& ]
        double est_v_eb_e_[3][1]={0};
3 P- d. z: a: ~' q8 l8 P  F8 l0 G        double est_C_b_e_[3][3]={0};4 A* C% T( A1 L; F3 b- s
    char *qm;
6 {8 _; x- B" z1 U9 G' {1 a    char rec[70];8 k3 a4 F! s) p* n) D/ h- L
        double L_b=0;/ ^7 @7 ~, K; A' y7 @* `1 f/ M+ H
        double lambda_b=0;
: X# c" K1 I$ O  S        double h_b=0;/ c3 S' Z( J. S' L
        double rate;
/ ]; Y* [; _8 e* M1 V7 ~5 }" D! o7 T
. e" j; L) I- }% {; p3 E
& z/ u% \9 H) ^) E) ]        // 外设使能配置; t" }1 w/ W: h; R
        PSCInit();
. h* G& }0 L% J- B  J; y- S, j; b. m+ w* b$ }8 Q
        AppInit();
- q2 u& X, u/ A" R2 E/ [
: J) R+ M8 \; Q) R1 P" ]! k8 J2 c        // UART 初始化/ m9 o3 W5 L7 y1 W/ \3 x5 K
        UARTInit();2 i1 E( y. }2 ^9 Z+ |& E  n

9 r+ [$ V$ A( H6 c        // UART 中断初始化8 g% V0 b5 R3 G' S! u( k* p
        UARTInterruptInit();& A& ~4 o$ c6 C- ^1 ^. F7 }+ D

5 }- |+ A% }$ Z1 {& d/ h    evtRcvd = 0;* x. C; H  L- r7 p2 B; ]
    RecState=0;( i8 a6 g/ ^! X1 w
    /* Initialize */
1 M+ ]# \' [- A
9 l: O4 W6 y, o+ J3 P    printf("DSP subsystem ready\n");$ Y/ R& _8 N& f6 _% s
, I3 Y$ o0 K- z: V3 a
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));
+ Z9 [3 D0 ^4 |* i, I  O: F, F4 v$ u6 }% c! a/ x, G
for(;;)
) b  X( A: S9 `0 a5 O  v1 g8 k( ~( b{
: |5 `- |- P; ]5 G3 _+ Q        if((RecState&0x01)!=0)' w( W$ E' n8 t
        {
$ b  I4 ?. a  J$ l2 n0 M                printf("liuzhenxing\n");' \: C5 k2 r: Y! a& _* T
        }
: o" W  k8 |# r  M! a        else' }5 o" }- h" u; N
        {
% z0 Y8 U$ y: o& C8 B, X( v       wait_event();2 q* \' }' D1 e
& N1 T6 q6 U# y: {: _* k: z
           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针; N* i# r2 d, p+ h' S1 {* \

0 F6 @% f: s( i- A1 A           for(i=0;i<60;i++)) X% U4 _6 T  C* M. z
           {
# R& S+ f3 @" U; N) ]                    rec=*qm;: z5 S$ S+ [5 Q3 y
                    qm++;
: m* v7 d: x0 G8 R; R4 l           }
* W; ]. q# R1 w0 n- E9 g" }3 O5 E1 Q" ?: ]
           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);
+ T! J& o/ A2 j- j8 `" {- ^; C" Z+ r  q' a3 S
           L_b=L_b_receive_double;
6 |- C6 `  a5 o) n0 b           lambda_b=lambda_b_receive_double;2 I! G/ P! `: q6 i6 w) d% ~
           h_b=h_b_receive_double;- N3 \) ]/ x/ d* j! G4 S
           for(i=0;i<3;i++)0 _7 k2 h* c# J- K0 u
                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];; q: F7 W0 l- {2 Q; S
           for(i=0;i<3;i++)( w3 I2 F4 j4 r6 }2 k% Z; l- [
                    for(j=0;j<3;j++)5 u8 Q( ]2 E& q7 K: \# s& G
                 est_C_b_e_[j]=est_C_b_e_receive_double[j];
( s0 M# ]8 R! q' w
; O8 w1 I- [' o& z, @, q4 b! z) a) P! S                printf("L=%lf\n",L_b);
* N8 P5 c/ G+ B" Q% m- C                printf("lambda=%lf\n",lambda_b);
/ |$ G( U, Z# X0 C! H! q5 [7 n! l$ P                printf("h=%lf\n",h_b);
, Z; f1 s4 z) e! z4 i5 S
, s' }0 ^1 l* x) }/ y                for (i=0;i<3;i++)6 p2 }/ ^& A' Q( U6 W5 X
                        printf("%lf\n",est_v_eb_e_[0]);( E' f: n2 x  \( _0 O1 ]+ F. |
                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]);% L# @: T$ c: `3 Z) ?/ Q" ]: E: c( T
                printf("rate=%lf\n",rate);$ D# j6 w4 T& n& o6 W+ \

# o, ]; P( z" |$ o! R" y                CTM_to_Euler(est_C_b_e_,eul_);
, {1 X% q8 h- G* M; _* ^                for (i=0;i<3;i++)
  w+ |2 x8 A* L, n. |7 N                        printf("%lf\n",eul_[0]);: L7 Q; c! I) X) v- l: u1 |4 c
                printf("end************************\n\n\n");
: }( m; u  X0 d1 ~7 K1 z" }# O
8 H# w$ e3 ~, G5 k; S                /**********************************************************************/
: N( g4 V+ C$ {5 p6 S7 M' W5 |% y  G# g$ @# }
            char flag[4];
/ S1 j6 ?6 @$ s  ?" b+ \- k* @
            flag[3]=0x00;8 F( ?& `$ B9 S0 ?& G/ Z. h
            flag[2]=0x00;
( P6 P5 E3 q! h" h* K4 j' Q            flag[1]=0x00;- x4 C+ \. V2 y, N/ r
            flag[0]=0x01;
  j/ s7 m9 j) z/ i2 T7 h' d; C5 h( d- E% Z5 V$ N* s
    /* Allocate I/O buffer and init with string */
( v; D( H6 F0 W    str_buf = (char *) malloc(80);* u" N3 {4 [; |" T  H7 n
    str_buf =flag;& h/ ]5 u9 f) E1 ?$ z) Z' S5 }3 l

# R! W, \" T1 B' x+ B9 s    /* Send buffer to remote CPU */4 d6 ?1 [2 Y% x4 Q( \4 V2 ?% Z
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));
' S# H, V( F% d) G" c  s8 c. a1 d/ z/ I
    printf((char *) myPayload);$ [4 f  X% u9 O; `5 A. g9 h! x) ?
        }
7 `/ c" f( M+ R* t}5 b# h5 `% j# J" U7 w

8 u) _: p6 J9 L5 k# x/ @' w    WAIT_HERE;
/ m- Z5 r  X" Q2 u/ h}5 V6 r. y( o$ Y5 @& f! R3 l

作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:
7 x. r% n$ o' x% F我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。! @) x/ h6 z1 Q- a
然后我把双核通信的初始化屏蔽掉,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
9 M: W0 z2 d& M' Ssyslink 的初始化是否成功,notify 通信是否正常了?

5 H1 _# a+ q: ]) l7 k! u双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:541 \+ m- Y+ w* N3 ]( p6 k
syslink 的初始化是否成功,notify 通信是否正常了?

: s0 U( c* c" P/ p6 Q我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:20
" D2 n; |4 a2 m. c- f, e我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
" q+ N- s9 h1 I
建议查看 UART0 及 DSP 中断控制器中断相关寄存器值 是否正确
作者: star_niubi    时间: 2016-8-21 14:56
能否说的具体一点,就是双核通信的都修改了哪些寄存器的值,这边双核裸机通信的资料很少。




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