嵌入式开发者社区

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

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。- i" e0 g& |; P0 K& z
我是在DSP初始化这不太明白。
8 n4 m3 f) U' j4 R% m6 z4 Q初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。
9 _1 `& l, p1 d$ i( a7 G# Z! G8 j5 Q, J& L

4 B1 x0 P; _. z9 y  a3 k2 W首先        PSCInit();//UART0使能
/ P  S  L2 w2 v: O  kvoid PSCInit(void). G8 I; O) m6 ?
{# e0 |' Y* T# u7 m
        // 对相应外设模块的使能也可以在 BootLoader 中完成5 ~7 g7 O2 o1 d5 a# d
    // 使能 UART0 模块+ B- t* z- ]# J0 ^3 I+ k! E
    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);
. L, W7 y/ X' k7 U, ~}
9 K, |- m2 }; |% U! J, \
: d4 ?$ N( S, u' J1 Z1 b# o0 }

' H# F. D; N5 z3 q, K9 N+ @然后是 双核通信的初始化           AppInit();
) W) a7 ~! v5 bvoid AppInit(void)" C1 h- |8 h! X  o9 V/ x
{
3 T% \& f4 [5 c( a7 p- u    /* Structure to initialize IPC (see Ipc.h for definitions) */( H/ A$ k# P" v+ ~6 s+ C" \7 X; t5 t
    struct IPC_cfg ipcCfg = {
6 L8 I: ]) o. |. t$ C+ k9 D8 _            IPC_DSP0,             /* local processor Id */
! Y/ F1 k- i/ O+ \/ a. a            IPC_ARM_HOST,         /* remote processor Id */. W$ g; Q7 `6 \- m/ }
            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */
+ _( }0 Y( X( N; K  F* P  `% _            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */5 L) z4 q$ Q8 J1 I9 t# Y
            NUM_MAX_EVENT,        /* maximum number of events to be created */
+ H0 |$ e5 h2 Q2 Q7 Y6 h            &ipcPvMemDsp,         /* local side private IPC memory */
/ c* T2 n, W" ]+ W            &ipcPvMemArm          /* remote side private IPC memory */
# \% O; i; X( k( |/ V- F    };
- B3 n- V8 y, O+ W1 @) w    IntDSPINTCInit();
, k0 L. T( `! j- x    IPC_init(&ipcCfg);
! @9 `/ Q* z+ r/ _  L    IPC_intRegister(C674X_MASK_INT5);
& r+ |% ]/ r7 x' ?* h    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));6 m) s& O+ Z% |7 S5 E4 i0 r3 v% W

7 F3 w/ g1 N% S6 q, N    /*  Enabling interrupts for DSP C674x CPU */
; |! n0 c  I3 U- W" F    IntGlobalEnable();        /* Enable C674x global interrupt */
3 D3 Z/ ?3 C0 _! N+ [) V) s    iAssert (Notify_start()); /* This will enable IPC interrupt */+ g9 v6 m4 I; O% m  T* G% ]! f
}
- |( w# G- A! ?) R9 E# s: s6 `% B6 K

. \1 }( z# y" @然后是  
! j1 J& V: B9 |. m            // UART 初始化/ S7 H: o& t" S6 I4 U- p
            UARTInit();$ m, w" \( r% r4 G
8 Z( \+ A+ F7 b$ e
            // UART 中断初始化1 B% ~. g& S, N5 s) @9 F0 h. a
            UARTInterruptInit();, q  w% H1 ]! B+ t6 g: Y; P

! J' G2 t0 H( G
4 l5 y* d4 z1 m; a4 ^. x& N3 |void UARTInit(void), z' v( Q! C$ [4 F
{) m( Q: f% i& c, z! l; n1 [1 K
        // 配置 UART0 参数
7 q8 ]4 P( Q+ ~2 Y# q        // 波特率 115200 数据位 8 停止位 1 无校验位
3 s1 T' ]; b' ^/ m! w& y) Y    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,
, C1 a) h9 l- x                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);; f, c+ N/ y0 T# v" Y! U$ o2 B1 |
        // 使能 UART0
4 H9 d! D6 ]" \: U. B4 V        UARTEnable(SOC_UART_0_REGS);
+ N! h& D' F& C$ @% L' w6 q- F. _$ F; v0 Z5 S+ ~: a
    // 使能接收 / 发送 FIFO% i0 D( W, A+ K; t
//    UARTFIFOEnable(SOC_UART_0_REGS);
/ c; ]. z* H* b
# U- U3 N0 U( \        UARTFIFODisable(SOC_UART_0_REGS);7 C2 Z  |( a7 K8 S- P) M5 V

2 V" b; l+ J; J. k, B# |& R2 n    // 设置 FIFO 级别     接收FIFO的级别; ^! k# A1 i: s
//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);
  K& R; c3 F9 [: }- P}6 w/ @- v# M( @2 l# P
6 X7 Q7 I7 ~# u) [% ^3 R3 A

& e3 Z3 k5 d1 b. H0 V1 C' Fvoid UARTInterruptInit(void)
5 H5 ?3 p& W7 B7 q{
/ }  X# ]+ h# [- G        IntRegister(C674X_MASK_INT4, UARTIsr);
( w1 o; w6 k. s: \, f        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);/ j9 b: T0 y3 M* Y: t: G* H
        IntEnable(C674X_MASK_INT4);
5 i  X' Q+ m6 q, s0 {$ X$ Z2 i9 G; O4 Z5 e, h) |6 e
        // 使能中断
+ r4 P2 v7 {/ L0 K        unsigned int intFlags = 0;4 K. O8 O5 Q" U( l/ ^$ M
    intFlags |= (UART_INT_LINE_STAT  |  \
& z0 p9 }, F; O# Q0 ]9 x: x' R" d                 UART_INT_TX_EMPTY |    \
# C' Q6 u  ^0 p$ k! F                 UART_INT_RXDATA_CTI);7 C. |$ M# }: @! {) u+ j: K9 @
    UARTIntEnable(SOC_UART_0_REGS, intFlags);
7 l# l4 K4 I. c* f3 M}
  F% l2 Z8 W; C- G
4 ^' p4 m2 r+ V

( }9 R& ^; Y9 X0 y; lvoid UARTIsr()
! T) }; ^( i" a) \{1 B( R: _' H% D# _
    static unsigned int length = sizeof(txArray);1 l+ n& `9 H3 u* [
    static unsigned int count = 0;  ?) T2 H1 F5 [& a3 v& t6 o! ?
    unsigned int int_id = 0;
; `! }8 Z( f3 |4 |% w! ^# [0 q; ?! G) L% d4 c

' j3 i2 u" C* [6 ~; K, H+ ?# w! ~. ]# I5 y
    // 确定中断源
/ j/ i0 d8 c1 t1 r    int_id = UARTIntStatus(SOC_UART_0_REGS);
3 K$ B9 l/ [2 [8 {9 M( b; j3 [% G8 a6 h% I. H
    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。
" s0 ~0 S$ A% P- H4 M) o$ B# H1 @
8 d  c  O5 q/ M- C4 u2 }
7 K4 |( p7 q# z. O    // 清除 UART2 系统中断9 Y, z* r/ Q& J
    IntEventClear(SYS_INT_UART0_INT);
9 G. h+ }4 j! V4 F! v8 V2 d* w  ^- R+ c9 Z3 A# ^8 j# P1 q
    // 发送中断- B3 U! _, C2 o
    if(UART_INTID_TX_EMPTY == int_id)
% B" K" u% N+ P: B+ z0 {1 k; Q& |" J    {. Z( n" I+ f* o# g
        if(0 < length)8 N7 M! x9 Y1 n0 ?5 Z! q" t
        {* [+ H( U& x+ [2 ^$ A' x/ k9 {7 G
            // 写一个字节到 THR
) L* k9 n1 s3 R. p5 t$ d            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);
' Y& Q, N+ T( V' K            length--;
0 \: o( ^) C1 c3 |, B2 z$ a            count++;, l( N  w7 e: X8 _( _: d
        }+ F" w$ P; D( r+ y$ R
        if(0 == length)
- z" E- }& @& N' k2 x3 P        {
- H  y6 g, b! b6 t            // 禁用发送中断
0 e% N* ]( [4 x( G5 P            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);9 u# T6 W. ]9 T* w
        }* ]$ c  t7 @" j, g/ v
     }
: i$ k( [2 `% y! r" n. f! l3 G8 E3 W
    // 接收中断
& E% X: Z0 X( K  o    if(UART_INTID_RX_DATA == int_id)8 W0 j2 G7 ^' U& P5 b
    {4 O, L1 {: q( h8 a+ M, C
        if(status_a0==0)! y2 u4 y7 U" d( `1 j
        {
, z8 E; q9 x, a' t                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
) S6 P" f# v, }                if(a[0]=='#')/ X4 T: U0 C6 R1 d
                {7 {& ~* e# n9 N7 S
                        status_a0=0x01;2 s# l1 h7 E0 z2 }
                        status_a1=0x01;, T* j  k; S3 n  U
                }
  l: t- ?- J# {1 s7 i        }2 L0 Y, k% w- ]) E
        if(status_a1==0x01)9 ^# P7 L0 X% S' e" D4 v. E- u" g! v
        {# M7 K/ ?! P# v$ D, i
                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
9 q7 ]8 M7 ?7 d                if(a[1]=='R')- {" @0 m0 q9 y9 k1 z, Z( C
                {
$ K8 q1 H, r) `6 |                        status_a1=0;
9 K' X8 N" p: Q5 V* Q/ q- G  Q                        status_a2=0x01;
2 D+ i# q& B- p2 j5 Y; B* M                }) `$ C) S+ Q$ k8 g: @+ v' [8 y$ j
        }
7 X+ p$ P. K* z! x) h5 V        if(status_a2==0x01)3 n7 w. c1 J; p/ P  N: K) z
        {
: v3 E1 u3 P8 F+ Z. `* k+ r1 z                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
* B& {1 Z/ S( a5 Q, I3 Y. K' K8 C                if(a[2]=='A')" t3 ~, s" Z! P8 S
                {, X1 I4 d* z4 W
                        status_a2=0;
* l4 [/ M. w' b7 l                        status_a3=0x01;
2 J( m  u+ w, T/ h+ S# ?; j                }
& U/ o9 h2 ?3 }' r; M- u- l! ]' Y        }5 u- o7 \/ y$ u; Y; v9 l" }+ U$ \
        if(status_a3==0x01)
" m+ i) x4 ?5 \8 G2 F        {8 |( C+ l* ^' q( Q
                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);0 r- U* a7 D; E( l  B! s2 d
                if(a[3]=='N')3 X& y( }' n5 K, ?- s2 T  X
                {
8 c( Z0 a. X. Z% d9 E: ~( S                        status_a3=0;
& r' x7 \8 N; z& q                        status_a4=0x01;
& W+ C) I2 m$ J$ q5 u                }
+ I! n- l. [" _        }: ^/ p4 |6 h4 {3 H5 L
        if(status_a4==0x01)
4 J/ o) Y% \5 _9 B& w1 b        {
6 l# X1 x# E) |                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);# _2 d7 r& @& n; d, V! U
                if(a[4]=='G')9 p! z( u) G; ^% Z) m
                {. O+ \$ ?2 w) L
                        status_a4=0;
/ r, Y9 f/ ^; G5 j                        status_a5=0x01;# u9 u; X. o5 v; \/ B% }' [5 v
                }
& S( J" Y3 Q# o) R- D        }/ B% B( X* q$ t$ Q5 M
        if(status_a5==0x01)+ o, Z* l% u9 M1 F& g1 z# A: L& `
        {1 V* ]0 I& L% l/ Y! u+ T
                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
8 w: ]  O/ T+ Y0 Z2 p. I9 \                if(a[5]=='E')" ^% N2 ^4 k- \% n. x# w; h* {% y- r2 O5 _
                {- v% w" {4 S. e2 ^
                        status_a5=0;
& S# ], m! }/ o7 ]$ ~! u                        status_OK=0x01;
. e4 ^: I1 E; I! W, O1 f                }
6 I+ J* F8 G6 R$ t: ~" G        }
5 z7 W# j4 w: \- `- b9 B# [            if(status_OK==0x01)" U% I9 V3 ]* K% l
        {
# u& I, Q+ n2 x/ j3 W8 w2 ~                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);9 e+ K( T8 }% d
                        lengthrx++;
( D: l. O& W# }' o. g                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值)0 Q, q5 h- W4 b
                        {
: J7 [# z( b7 D7 [                                RecState=0x01;, ]3 Y5 X- W7 v7 N* r( h% _$ N5 v8 ~# |
                        }
) k' r' a: u; v2 a* ]1 }         }
1 p* P; ^$ v1 I+ Q% M* z! v( y& L4 b8 a. |5 m( E! y/ U" v! e! u
     }0 M6 ~% ]6 k8 K& I7 p& K& L

; c# H$ G2 R; W! p3 \( u, y    // 接收错误& `% ^$ r% q8 t$ M6 f* Y5 O
    if(UART_INTID_RX_LINE_STAT == int_id)
$ R% |3 K, @0 ^    {5 }2 n: [* @! O
        while(UARTRxErrorGet(SOC_UART_0_REGS))
" D5 _/ m0 d& j8 k        {2 {9 z  E! F- w" b3 E+ c) i
            // 从 RBR 读一个字节
: E2 C) x& @3 G$ M            UARTCharGetNonBlocking(SOC_UART_0_REGS);
7 U5 C- t" V! q4 r        }' z( f6 ^8 M$ y" X
    }
+ u* h' H  i* J: f$ a! P  i
$ B/ n/ q$ }% ?* O9 Z- R/ H    return;
% z: V* @4 V5 j0 N5 L}% R8 T8 c( H0 i

& \9 e. o0 L3 d2 c( Z. s/ q0 j

* S5 P' J; P3 Z+ G
# P! _; M! y9 N! {
作者: Jackindata    时间: 2016-8-17 11:13
hi,
& u: I3 z3 K. S0 h
) |! |: p9 F1 {2 _/ b/ UUART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。9 m% r0 V, R  |' |/ ^
; i4 p" k$ a0 m; Z9 i4 I1 S/ ?. Y0 q
要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:13& d6 A' [% U9 V4 m
hi," D$ `9 ~' B  k  S; Y' Y# k7 J' ~
* `3 p! M0 Z: z1 Z- x8 [, N- J
UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...
$ Q* i4 r3 D. G2 X& Q$ {7 B( x; T
void main (void)
2 y/ D( t: ~4 d{1 w' P  D+ A3 w6 e# x, X
        int i,j;+ t* b% g! _4 a3 D  V: q
    char *str_buf;
, _* ^* K' h3 c5 n) U    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];
/ N, Y  h) V1 I+ o0 w# V- x7 Z7 c' F        double est_L_b_=0;
& G1 W! c4 }3 H' M8 n1 O/ |        double est_lambda_b_=0;7 }6 H  B# I: N& J
        double eul_[3][1]={0};; I+ O! v1 e; }4 v
        double est_v_eb_e_[3][1]={0};
* R. T( R) |) T4 r( J* y: Q. h        double est_C_b_e_[3][3]={0};) z) f; N4 k) d9 C0 v
    char *qm;
6 W# L0 |- a$ `' X/ d    char rec[70];3 y4 Q5 j6 z% [8 N: O/ c  V3 G$ H
        double L_b=0;7 E' V- J" F6 M' v0 s( k, z4 L& B9 {8 `; I
        double lambda_b=0;
1 S2 x( I# o8 A; J* D9 u6 u& F: b        double h_b=0;
4 i1 {1 ~2 n6 Q) n) d+ f        double rate;* Y( h2 K3 N2 i
) f5 T7 c+ n7 O) Z0 t3 u: o/ L) ]/ j
7 A1 t2 |) Y; S  I
        // 外设使能配置
% h) Z" x7 s% Y1 u        PSCInit();0 w1 }: w' [/ s

5 g6 s6 b" \* C) f" `: X        AppInit();
6 f3 D# O) \! f% m  g4 F8 G; g' a6 r0 T% m( R: k, O
        // UART 初始化. X7 P* k3 |) w% p
        UARTInit();
' T$ v0 g, r) o6 W8 ^
1 n0 K, `" d6 J! q        // UART 中断初始化
% J. O( D5 t. N$ t; W; ?8 s8 f        UARTInterruptInit();
+ ^0 ^( |  T! k# h1 t# t5 d5 y
. ]$ F. g/ e+ S% `/ q; `    evtRcvd = 0;' F& ?+ B+ u1 z5 T
    RecState=0;; U$ ~& g+ i$ s- {
    /* Initialize */0 Z0 O2 W1 g  G2 D* V& X# q7 t

- v4 c- h7 Q% g+ ~    printf("DSP subsystem ready\n");
9 _5 [* l  Q& }" f/ E( s
- l& E! A0 D/ X+ b    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));
/ C% m  G4 J! V7 t/ ?1 s! z. r# f# Q9 B5 ^' H! s) n7 ~4 D
for(;;)% T5 D8 R" y9 {: ?/ b' G8 ]3 C9 W
{
; Y+ k% ~% l6 a" z1 J5 d        if((RecState&0x01)!=0)' w; k# `' T- B- |5 m8 O0 n
        {+ [$ X2 X% w" j! |8 B& q0 F
                printf("liuzhenxing\n");
, G; ~$ r& x' B3 F; M        }1 X' |6 j$ q, ]1 R8 B
        else
. ?" n$ L5 \( H" g4 C4 h0 F        {
: P0 A" f0 j0 O7 v2 u% T8 z       wait_event();7 O$ b- q7 t. U! b1 m' y; {3 m7 k

7 o5 Z! N' f- B; h8 c" Q- O           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针6 |2 p9 t! u3 R5 j

' s& e" o; b1 \+ b- ~0 H- V           for(i=0;i<60;i++)
7 m7 C- e7 p# x: W* h           {
) B" u* P; b& d% Y7 M' B8 |                    rec=*qm;
, g% ~* E* u! a) `! n  H                    qm++;0 C+ E9 n$ f) w% w3 w! @3 W
           }' ?+ M+ k# l# g7 D

- M# K; ]" ~1 x8 U9 h8 s: j1 G           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);; l' r7 P! G7 p& q; n% h
' o0 V! E$ I* B. A9 ^
           L_b=L_b_receive_double;
* y3 C! y0 N4 L3 o           lambda_b=lambda_b_receive_double;( R7 E9 W+ K$ V4 l9 x  D. K
           h_b=h_b_receive_double;
: a0 w2 `6 N+ y) U! w$ x. g           for(i=0;i<3;i++)
3 P( C/ r! K# P' E6 U                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];: i4 B# A1 W9 z# J
           for(i=0;i<3;i++)
, F8 c. v8 @$ `& o% m                    for(j=0;j<3;j++)
; z: i9 v: M, S3 j; o                 est_C_b_e_[j]=est_C_b_e_receive_double[j];
5 z1 z5 W9 @7 D7 r: @' W
5 g- Z& h3 F$ a2 O                printf("L=%lf\n",L_b);9 P4 P% ]2 C5 K9 ~, i* i
                printf("lambda=%lf\n",lambda_b);$ ?2 ^( q1 P3 g" L& Q
                printf("h=%lf\n",h_b);7 T# l, I- S9 L% u9 s% ]4 ?7 A
' x& e0 t3 N; \( [5 \
                for (i=0;i<3;i++)- Z. G3 q: g  E% c0 b1 J0 z
                        printf("%lf\n",est_v_eb_e_[0]);, p, w3 }6 j  {/ k+ V* c
                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]);
. }+ Q5 ?% Q8 y9 W* I$ j                printf("rate=%lf\n",rate);
  j! b( U) Y9 R1 U. O9 j2 C- h
8 u- \, [0 v! |$ o; J' e# _                CTM_to_Euler(est_C_b_e_,eul_);* M0 X3 c" n' _+ t, ~
                for (i=0;i<3;i++)
7 X- I  `2 ?1 q3 N5 M6 F3 ~                        printf("%lf\n",eul_[0]);
) `! c8 o, q# |                printf("end************************\n\n\n");
7 m. ]+ {* T" a" J  S( u
* y0 Y! E' B6 v0 N; w7 j& u                /**********************************************************************/
; Z" c+ \$ `9 Q5 }7 m4 `: K, H9 c! r$ s8 f7 m& m7 H( i
            char flag[4];  Y6 G, {2 O' W% p0 f; Q( Q; G3 j

: J6 S5 n0 j" H3 T            flag[3]=0x00;8 f+ `' o8 z7 X0 Y9 F
            flag[2]=0x00;
3 S8 O8 u+ F: ], ~! L' t            flag[1]=0x00;3 s5 t& h- y1 K% }  y
            flag[0]=0x01;1 G. L$ K/ @0 w$ b
, s  F, U% O+ p9 y6 c4 v- M- f% A
    /* Allocate I/O buffer and init with string */6 {9 j0 ]+ `( Y) r
    str_buf = (char *) malloc(80);
  k& F0 }0 p$ P) O    str_buf =flag;
1 L+ O# B& Z( B4 I/ f1 L
3 q8 J6 }" j4 |# ]    /* Send buffer to remote CPU */9 L: d! Y9 X- A9 o2 X
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));
- @0 m5 m1 }7 w5 U! L$ ?# ~& K, j8 Y. w
    printf((char *) myPayload);
; m& V' Q- T; J# `$ r. k/ @        }* c( F3 T% k6 a) h7 o0 O" t  P
}
; ]/ p$ p9 r% P! [8 u( M8 w4 i$ d9 o7 m
    WAIT_HERE;
' D( b6 C- Z6 A) ~}
& U# V, w( {/ z, c* I9 H% h: ~* H9 d
作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:9 ~& _, L% ?" i% K# D
我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。
8 f  }" I* s4 p# u; J+ _7 H& _$ o- ]然后我把双核通信的初始化屏蔽掉,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
3 Z/ G" c/ O3 j+ r$ ~syslink 的初始化是否成功,notify 通信是否正常了?
* M5 ]$ E. i% x7 i
双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:54  P! G' n# M5 S0 I# [% a  d& T
syslink 的初始化是否成功,notify 通信是否正常了?

; X! g! f4 y* n( j我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:20! W& b4 N' ~7 D* g+ @/ K
我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
* n$ L8 u% o: h2 _- {( W4 i% h$ N3 Y
建议查看 UART0 及 DSP 中断控制器中断相关寄存器值 是否正确
作者: star_niubi    时间: 2016-8-21 14:56
能否说的具体一点,就是双核通信的都修改了哪些寄存器的值,这边双核裸机通信的资料很少。




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