嵌入式开发者社区

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

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。  z; \+ s+ V  C, }9 F, J! ?4 W* S
我是在DSP初始化这不太明白。
+ x. n1 \/ x2 V0 ]初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。
# K7 U: r/ ?' j
6 E9 e/ g- Z0 l0 K
6 _* T, ~6 {. Q, m0 y/ W首先        PSCInit();//UART0使能, u7 O8 U  R1 @0 r2 J. b1 O
void PSCInit(void)/ k, x3 a7 [; W! `5 u) ?
{
: b  k: K: @" G" [8 W' ?' c        // 对相应外设模块的使能也可以在 BootLoader 中完成/ k8 f; ~2 J' R  F4 `( `) k7 T
    // 使能 UART0 模块; }# i% v2 E! ?# }8 Z5 `" J# F
    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);
) T1 B# w7 F4 ?) }0 P% h$ o4 q}
. O. J8 [+ Y; i0 H
/ f, H' i' G7 _( W# W( U/ Y% c

/ ?. M5 u0 z5 @- L/ E# ]1 I然后是 双核通信的初始化           AppInit();
/ R9 ]4 o1 K  Rvoid AppInit(void)9 b! a. s: ]  v9 i4 K# ~+ @
{
4 N* j* P- A6 I  x/ x    /* Structure to initialize IPC (see Ipc.h for definitions) */
" Q6 m4 a* C7 a! d5 c8 L    struct IPC_cfg ipcCfg = {
* G5 R! R, W: R( u3 u1 K- F( P            IPC_DSP0,             /* local processor Id */
0 P7 l3 G" l; u+ D% T            IPC_ARM_HOST,         /* remote processor Id */
, k+ V- [$ w1 G% x* M# f  z0 u% ^            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */
3 s% ^" \# d3 c7 l( |5 j. y5 Y            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */  w6 J7 W. H( E- H' s
            NUM_MAX_EVENT,        /* maximum number of events to be created */
& G& Q- [( d4 I( N- f1 C            &ipcPvMemDsp,         /* local side private IPC memory */0 F! D0 x5 F' q; R6 u- }3 }( h4 [
            &ipcPvMemArm          /* remote side private IPC memory */
& e8 W( I2 g  J    };
7 M' Q( J  i0 `, r4 l    IntDSPINTCInit();) c2 D. q5 p. e8 R' T- `; W
    IPC_init(&ipcCfg);1 F- x) ]* \% Z, H: V' O
    IPC_intRegister(C674X_MASK_INT5);; J# W( N; @5 y. \8 v. i; b
    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));2 K- r2 L: c/ }3 N6 Q6 O' o

! S" l1 b0 N4 |5 N+ G9 B    /*  Enabling interrupts for DSP C674x CPU */: ^7 S6 L8 h4 Y# k1 \4 v9 Z- A
    IntGlobalEnable();        /* Enable C674x global interrupt */
) W4 t- A- {$ N$ c* m    iAssert (Notify_start()); /* This will enable IPC interrupt */
: h+ l! B" O1 R4 x3 d+ {}
+ w- a7 g( w% u1 T- d7 h. d/ Z$ m

# N! v$ J, z$ K' Q1 a然后是  
4 L' y4 f4 u6 p1 |% t8 p            // UART 初始化
8 x/ Q* d3 t8 l            UARTInit();2 @; P8 o' Z: r  x( K+ i3 T
$ C' B# e8 j' s! y0 P3 G  }
            // UART 中断初始化  Y% @3 N+ U  z0 j8 x: S6 c
            UARTInterruptInit();  ?% ~6 G6 o) ^

8 ]% B/ g2 d/ \* Q2 V/ h( E5 l
$ ]: ]+ b* {, i4 T/ x5 R1 S! Y0 i# jvoid UARTInit(void)
- I9 s9 n) L; u+ Y0 d{: d+ u0 `: A$ u  d
        // 配置 UART0 参数
2 G$ v4 N9 P% X6 ?( m! K8 C4 L        // 波特率 115200 数据位 8 停止位 1 无校验位
; r  Z, v1 l1 I0 ~5 Q    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,, K& U& K1 ?1 @# B# [( ^
                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);
7 J! r, N2 _0 ^        // 使能 UART0
- `0 B) e5 ]8 D( E: |  ~! j+ I- v# r        UARTEnable(SOC_UART_0_REGS);) D4 a6 L9 R* D# E+ {- I
& T+ F% m' p( {! O4 G
    // 使能接收 / 发送 FIFO9 s$ |  c* |) |( V! j
//    UARTFIFOEnable(SOC_UART_0_REGS);2 ~1 m% D6 `( x1 v/ u% K3 B. B
  c  u* a% ~. i3 s$ U
        UARTFIFODisable(SOC_UART_0_REGS);
. s  V6 T$ z7 ?; e8 p) R: G
' y1 b+ w  \+ l. v2 ^    // 设置 FIFO 级别     接收FIFO的级别* C: N, d# H3 L# [. X% ]4 s
//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);) r, F+ z8 r/ u+ }
}
  o2 `0 b1 x; M6 Q: N

! e, z$ T1 c' [
  p% d0 i, b# ?7 A4 J; Zvoid UARTInterruptInit(void)- Y) I, a  @' m0 t
{( @2 l  M! Q7 S3 t9 Y9 w
        IntRegister(C674X_MASK_INT4, UARTIsr);! l7 f* L0 s& o1 \
        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);0 E* r/ O# z2 V$ G3 g3 H4 }+ P
        IntEnable(C674X_MASK_INT4);
5 e  ?6 \% l* @$ w( O  ]0 a( k  m0 r" c: N. @
        // 使能中断
* S0 H' i) T/ k6 A8 p7 w7 A        unsigned int intFlags = 0;; D, m7 \) Q# t5 A6 r3 r
    intFlags |= (UART_INT_LINE_STAT  |  \+ S9 [9 X* L. l. u0 y- `
                 UART_INT_TX_EMPTY |    \
: t$ k5 L* R/ C* J7 G                 UART_INT_RXDATA_CTI);. v. Z( W3 T8 ?8 F
    UARTIntEnable(SOC_UART_0_REGS, intFlags);
; t& ]2 Y+ R$ H}2 T4 ?7 b% i8 `
, }) k+ J/ ]9 x# U7 k* ?8 ]8 [
+ ~7 _& t8 b4 i+ E' C; ~) \
void UARTIsr()( W  Q6 t0 w; Y
{& C3 Q( T. g6 N& q: F  k/ D' v( J" O
    static unsigned int length = sizeof(txArray);
; _, j# m  _' b  ?# V. i0 g    static unsigned int count = 0;7 U0 v1 ]" j5 p) W( I& ~8 x/ h
    unsigned int int_id = 0;8 f+ G) p/ v  I0 s) K" v: G7 a4 }" ]

3 ]' F* A* @# I3 Y0 ^1 k9 b; f) T9 A1 V' K
! r7 H# x0 d. Y) e4 S% ~: J
    // 确定中断源7 |# P  l) C& [4 z
    int_id = UARTIntStatus(SOC_UART_0_REGS);
1 n" D. k: Y) o/ Z. X7 B
+ k% O0 n2 b9 O# i    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。; x- c) l7 ~/ o3 ?

4 M) ~% Q. [1 d. o; U# F7 s3 k' z5 K
    // 清除 UART2 系统中断
& H! V  `- a2 ^  D+ K) g0 f! s    IntEventClear(SYS_INT_UART0_INT);
4 e7 K& Z1 n, O' D# S" X
% A. g7 ]1 ~- t, ?! W5 F    // 发送中断- ^* }) y6 n" k/ X& [( B2 Y# D, ]  s& _
    if(UART_INTID_TX_EMPTY == int_id)
4 p1 k: p2 o  q8 b! ?    {
) T: K% w) H9 w& g        if(0 < length)
+ u7 v, }2 C4 I: W9 M- W        {
( X( a6 ]7 C1 Q& ?            // 写一个字节到 THR3 ^- o  ]* W1 _( K3 K: i9 y+ E2 b. l
            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);. \; T* w6 l* i9 {: ^' F
            length--;$ N* F7 [, q0 L% s
            count++;
+ n, d5 _/ D* r% ]        }
$ `+ t9 I5 k8 [! c        if(0 == length)& j  P: Y7 M& `8 F8 w& a
        {
# z- a5 U4 ]7 g! S            // 禁用发送中断3 ~; J2 ^# z+ o# a* `+ e3 u3 N
            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);
( W( p4 _  O- N* @        }
9 v7 ^! c  u  F3 ?' Q" B     }
/ {; Q$ ~1 f# J! o# Q1 i9 q, V$ T8 d: [- c% Y; W* d4 c( v
    // 接收中断
7 h. j5 i8 N9 k6 X: h: ~7 l: y8 z    if(UART_INTID_RX_DATA == int_id); {$ c, u' k$ ~! s) N- S0 v
    {
1 z+ g% Y- k- c        if(status_a0==0)
' v5 @) d. e" s' B, r        {9 v( l! W+ F. n; y( U/ k' m" ^: P
                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);! @  h$ U4 ~. Y  w6 U3 _& U
                if(a[0]=='#')7 a! [1 P* }0 C) k2 w& n7 {
                {: ^! k( b9 E, |( T0 J( U
                        status_a0=0x01;! V( V+ w( o3 t# V9 o) a' C" R% B' ?
                        status_a1=0x01;/ c& Q9 A, h* w5 c
                }
& f4 w0 J+ v& G" M        }
, W1 ?; U$ I/ U7 V7 N2 @        if(status_a1==0x01)
, l' e1 I3 `8 a6 ]5 _7 f7 [9 C        {
1 Q9 A8 H7 F% j. S) U* H6 `                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
: g& C1 K  j( |  O4 y                if(a[1]=='R')
1 Z2 ?- r& @" B$ O2 G6 C( N                {
2 y' ^5 G2 k" C) @                        status_a1=0;
: [' m; J6 O# @" }/ @9 ]) P: T                        status_a2=0x01;
; U/ t% \; Q; f7 X  M# g                }
$ O8 ^2 J& H; n- O! @/ H        }; M4 u- I% X; Q+ G+ i! _
        if(status_a2==0x01)
5 x$ _- R3 G0 q7 [' z8 \0 K( m  i        {
9 ?1 u7 G; y! h! ]  Z                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);, n4 {+ l$ A$ x
                if(a[2]=='A')5 r6 P$ V! |) r3 R
                {
2 s# K: T) J; C7 w) ~' B                        status_a2=0;( }5 F; W8 s# u1 \, Y, y; O- Y6 w
                        status_a3=0x01;
0 `) O  b8 R( l+ r                }
. \' o" Z1 V! K: E9 X4 Y        }
& f1 P" c& W$ Q' R        if(status_a3==0x01)
/ V/ D' x/ w2 w        {
. {/ {7 `& |% f% z) g- V                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);! c+ r/ e( A) O* r; X, a
                if(a[3]=='N'). W$ T/ f# Q' K  T" l0 ?; E
                {. C4 J" \( h: {( h8 ^4 T. R
                        status_a3=0;
: T/ K5 \6 \5 r# k/ \) W' m2 K8 w                        status_a4=0x01;9 ^# u6 C; Q1 x* |* v! _  |' [& b' M
                }
/ n2 ^4 Y! D% R5 L" K% k( E        }: W* e: Y0 h1 }: y" z: f1 R/ J% B
        if(status_a4==0x01), `9 c8 {$ l; Q5 v8 w3 c
        {
; E. C* [1 V1 c; n; r$ Y- ?                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
" w8 F# c9 F9 D5 o                if(a[4]=='G')
, o' v2 ~# X2 i$ `3 o! b                {
; J, g4 z  J- K# y! j* a                        status_a4=0;
; m5 ?4 y) X5 B4 N+ F( P                        status_a5=0x01;
! O* @. y3 C  s0 q6 E% Y( `+ G" \                }6 F) S. [. a" Q# v+ s6 e
        }1 L9 o/ P8 V% t2 W, d' s
        if(status_a5==0x01); d# @6 f0 O% s4 ?3 N  M8 h
        {
4 y; P* ?$ l9 r. ~% v, K6 v" k" L                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
7 U3 L2 |- H& T. K( }- c# ^                if(a[5]=='E')
% v3 p8 E* F( L" ^6 I1 n8 y                {, K: a2 d% X5 I) f9 z0 T7 M3 _1 E$ X
                        status_a5=0;
0 _& I  r6 h8 N( E3 V* |' P( u                        status_OK=0x01;
! p3 h1 x3 J( P9 s0 x                }3 g  {- v4 S$ O; \( w
        }' C+ r; Z* s+ S0 S. y
            if(status_OK==0x01)# w5 |6 s/ `5 k5 r9 R0 r7 E" {
        {
: S4 c8 ?$ v3 T, A                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
  r+ A" \: ^+ Z( a4 }                        lengthrx++;
6 Z6 G9 P- |3 }( t/ j! Y# ~                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值)
) U' n3 h9 D4 J* f' ]                        {
5 o& E! Q; t3 ^" l& W; d/ G9 n  m                                RecState=0x01;
* w2 }. X( y$ q& q                        }1 Y6 U+ F( Y; ^$ N7 m7 p2 ^( Y' A
         }
7 Z$ n* F, Z- ^) _
6 [* A& ~" n9 r7 R' s- J0 c, h  `     }
: l" t. g8 e; g6 L/ ^" H1 Y, W. v/ E
    // 接收错误
8 F6 ], V) G7 h, t$ l6 S    if(UART_INTID_RX_LINE_STAT == int_id)
0 T4 w3 F7 ?8 t# y" e    {6 e! f6 u5 f" P! }1 j( @
        while(UARTRxErrorGet(SOC_UART_0_REGS))$ J  X3 e$ S+ ]  m
        {$ P8 U) Q5 A8 K- s
            // 从 RBR 读一个字节
- x' M8 ~8 t4 Z4 m3 [8 `            UARTCharGetNonBlocking(SOC_UART_0_REGS);0 r3 ]. _3 [8 G3 B) Z, K* Z
        }
3 q6 @# J2 x- d. r3 u. c7 L8 p/ H! D    }
1 [5 d6 v; x, p- n# W% a7 q$ G$ C' n
    return;
0 ?8 E" g, U8 M# r% E}1 t) [  }7 G! {2 w) |/ B, E  @

  U9 Z! u' q- u( N
9 V# x8 O5 a( J/ h- @/ p. Q
8 O' v; q! [$ q  \; Q6 t4 D

作者: Jackindata    时间: 2016-8-17 11:13
hi,
1 Z- e) U3 `0 q7 B! E) c5 p9 V8 f2 s8 N, E: e# y
UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。: H4 f- d" `. r* r
* r: Q$ c# D% O" `" H
要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:13
  T& s  D& J: Z/ g! V, Fhi,: A, N) I3 G+ M' C1 F- X% k

( x9 v  C* N$ ^" uUART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...
6 v' P+ W2 }0 t* X' s
void main (void)+ x3 d( F. X7 p) }; E2 X7 y
{" P2 Y$ [' H  r! A0 M' I* @
        int i,j;1 b9 f' N9 I2 _
    char *str_buf;
5 q% [  ]0 a0 Y6 U7 ~% B    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];0 t& _, Q3 |: y# R: ^0 d1 R9 D/ k2 T
        double est_L_b_=0;
5 z4 k  w: O8 y& \0 _        double est_lambda_b_=0;+ a7 O: P; U6 M. T1 z
        double eul_[3][1]={0};$ Q  O% M# O( l4 u
        double est_v_eb_e_[3][1]={0};
, G) W! B9 E; P+ S" |' K5 r9 G        double est_C_b_e_[3][3]={0};
+ S5 P: I+ q7 ?    char *qm;9 c4 F( R$ h5 L5 d' @9 v: E/ T8 X
    char rec[70];. v: V" u5 R/ O+ O$ Q  S/ O5 h( ?$ {
        double L_b=0;
. e% Q+ E* T9 H$ s+ G        double lambda_b=0;
" {7 H. S' n+ r4 f7 S        double h_b=0;1 i* V5 t1 ^, |- ?$ [" A# X
        double rate;
, L7 U# o; U% X) f1 a/ \
7 v4 T/ L" X% p% V: Q0 t$ d8 I
        // 外设使能配置
: }# i. K( Y7 X7 e) x, @        PSCInit();
9 M0 j: t- U3 V6 b4 Q" s  e& z2 V7 ?, t5 P( I% h* a/ B& [0 v! @
        AppInit();
; A0 B4 F2 Q2 z  P7 N8 k5 A
  `/ a5 d, x4 U: x3 }# M2 r1 O        // UART 初始化
+ A+ o' H. y" G- H& q" L. \        UARTInit();
( F" q9 d  J6 P6 E
; }+ F9 S, T- ^& j        // UART 中断初始化
  \& N" l) G4 s: I1 @9 o5 U1 z        UARTInterruptInit();
0 ~" z) j- `8 v) a
) R  p# O6 r" W1 b    evtRcvd = 0;2 p, W  v3 g' @0 V$ Q" w' }
    RecState=0;: y% T0 K! A8 i6 X, z, @, D
    /* Initialize */; k: r$ G8 P; }# B

9 J; E  S- z$ M3 D& Z    printf("DSP subsystem ready\n");$ r- j3 Q. a& j$ {( c3 ?- @7 v

5 w, A" w  j: K' w' ^    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));
5 B2 B+ p" N8 _/ T. v  A8 s: w) L( A
for(;;)
- g4 j7 p/ \9 o{
  [$ d: j1 r- \/ V7 Y        if((RecState&0x01)!=0)7 m# |( M% l$ {+ k+ f
        {
8 m2 ?- _2 u0 l+ b8 ^" H, b                printf("liuzhenxing\n");
: t9 \! W9 Z4 L  I        }
+ {8 @( ?' h% _2 g        else
9 ^! E" _' w6 m# g* y# \3 F        {" a( r8 a! Z" Z/ [' V3 n/ d; q
       wait_event();+ V3 C. r/ T* m- u+ X

/ K0 k0 i9 i9 t! r           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针8 Z0 j, c8 f9 j0 K9 T. m  j

3 [% Q/ t; x* |1 Z' t& X, q           for(i=0;i<60;i++)
- _% |, k- H. g9 u           {# v  b4 r( g# Q
                    rec=*qm;
8 ]; S# x5 e( _$ N                    qm++;9 j* B# `! y) k- Q
           }. P- n& Y9 e1 E* _" Q1 E1 O2 J* t
$ Y: Q$ O9 K5 E
           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);
8 ]4 L' w) `0 G: d* c1 L
1 _; f3 ]. T+ H           L_b=L_b_receive_double;
* E( Y% I$ x6 H7 i9 ]/ J) l) A1 A2 f% U: o           lambda_b=lambda_b_receive_double;
% B+ Y! z) }5 }- h. n! i+ e) B           h_b=h_b_receive_double;
, n2 W. K$ V' `( i           for(i=0;i<3;i++)
; ^1 \" X7 Z/ v. M& @                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];
. ~' r8 Q8 F' U$ D' J           for(i=0;i<3;i++)* E6 U% I" }5 J( f6 S
                    for(j=0;j<3;j++)$ f& w- B7 B( e! K( ~2 ?  U3 Z( N
                 est_C_b_e_[j]=est_C_b_e_receive_double[j];* C. h* ~  Y1 W% N
' [+ Q4 M. A/ `% ~
                printf("L=%lf\n",L_b);8 x* l8 ?2 ]! \0 Q) U/ f; O
                printf("lambda=%lf\n",lambda_b);
4 l8 g- ?7 f" O, ~3 Z+ `                printf("h=%lf\n",h_b);* f9 \: N8 ^  V- z% c  `! h' W6 H/ t
& y/ q& @( g& i' j' K
                for (i=0;i<3;i++)6 G: i8 p8 \4 {# `0 z4 L
                        printf("%lf\n",est_v_eb_e_[0]);
8 s3 e  u6 Q9 }2 u, [% T                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]);
; T5 v/ i9 v2 o. ]5 D' n                printf("rate=%lf\n",rate);
6 v, k. [' `( j' c. ]" D8 x
4 }5 F+ ?4 b$ g( B/ w  Y. N( J                CTM_to_Euler(est_C_b_e_,eul_);. Y$ G2 N# @/ Q7 O
                for (i=0;i<3;i++)# Z! u  W. U" S- h5 Q' {- ?1 e
                        printf("%lf\n",eul_[0]);
" s- K+ |$ O. R+ Z                printf("end************************\n\n\n");8 j! M6 [, @7 k0 h
# [6 a8 _: E% o6 S9 r9 N
                /**********************************************************************/
- i# y$ b9 e- v+ @8 S4 X% N/ h2 ]3 N8 b/ h
            char flag[4];
# Y& E9 @$ Y' S( C' ?3 @$ C/ e$ Q  o" Z
            flag[3]=0x00;1 ?$ F6 W' U- ]
            flag[2]=0x00;
! E  G5 D5 q- n3 O7 D1 c* Z/ k) Q            flag[1]=0x00;4 r% H, @, M# {$ {" p
            flag[0]=0x01;
, K3 g5 `/ [; t# }* _
* _$ v1 e4 u, u2 E  b# l    /* Allocate I/O buffer and init with string */  _2 O7 Q7 \7 w0 Q3 a
    str_buf = (char *) malloc(80);
( v2 S- R( ?% [3 r    str_buf =flag;' Z% E, {9 G$ C8 [
0 n3 w5 I' q( [" `4 m
    /* Send buffer to remote CPU */7 p4 |/ L/ [1 X7 ^2 K
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));
  G6 V" W' S; {5 C7 k$ ?# A! r/ x% r( ~
    printf((char *) myPayload);
9 a! r) ]5 ~/ ~- O        }' @' R/ [& x4 S# w6 |8 K
}7 z- E; |' B5 k/ P1 Y
$ w/ V. l, s& U4 Q
    WAIT_HERE;
9 M$ h2 {8 }. j5 e# z. _}+ z4 K: K7 ?5 c. N; X

作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:4 q5 _1 |* s: C% u/ A
我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。( Y, i2 ]% Q* `4 m6 |
然后我把双核通信的初始化屏蔽掉,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- c4 i/ D' j5 j  v4 w- v
syslink 的初始化是否成功,notify 通信是否正常了?

$ p% C$ k0 G' N: p% \) Y双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:54
  S) S8 y; k/ [( n1 y  Hsyslink 的初始化是否成功,notify 通信是否正常了?

- A7 e; c( y: G我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:20
+ A# [( A* I* P4 l) t. C我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
" s& ~. X& O! J' X9 Y' w* \4 E
建议查看 UART0 及 DSP 中断控制器中断相关寄存器值 是否正确
作者: star_niubi    时间: 2016-8-21 14:56
能否说的具体一点,就是双核通信的都修改了哪些寄存器的值,这边双核裸机通信的资料很少。




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