嵌入式开发者社区

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

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。- h& v4 L  v8 e$ S' @) z1 v# x
我是在DSP初始化这不太明白。/ q9 n: g3 g' L9 M: z
初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。
9 `. Q5 s0 L/ Q; z% o/ @' R# E+ y1 n5 d' \$ ^' J0 z; H7 u% _5 e9 R+ e

/ U( G- r1 u" h4 T( \: [首先        PSCInit();//UART0使能9 e7 h9 {8 y$ w4 v
void PSCInit(void)
1 j9 g! v4 X0 j7 X. ?{
7 q" U: `. S0 e' X8 ]3 u        // 对相应外设模块的使能也可以在 BootLoader 中完成7 L! f, z" _& d5 e
    // 使能 UART0 模块
# ~- J/ N2 K) ~1 l( Z1 I- [% l    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);
5 F: R* ?; c! i+ P. J' L9 N/ K2 n8 W}
) c/ B3 Z/ W, M8 T
) W. H5 N- e" n9 x% a0 O- g

  ]9 r7 }8 l2 C, i然后是 双核通信的初始化           AppInit();
: y' D7 [2 K$ t2 c, h' ]void AppInit(void)8 R4 }, S1 b4 _: |
{, t3 {% l% U) q  I
    /* Structure to initialize IPC (see Ipc.h for definitions) */
8 ~2 A; `2 g  _* }& }& _    struct IPC_cfg ipcCfg = {
$ C, P9 P2 j) E            IPC_DSP0,             /* local processor Id */
5 ^, B' p( t# E% t% k            IPC_ARM_HOST,         /* remote processor Id */) e: W$ x! Q# T. \- i* b- e
            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */
& i  H* s$ v5 V! G$ H# g7 h            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */
- j7 r$ e, r% s. k            NUM_MAX_EVENT,        /* maximum number of events to be created *// ~; x! g; W# d
            &ipcPvMemDsp,         /* local side private IPC memory */7 e) G7 U: z8 H
            &ipcPvMemArm          /* remote side private IPC memory */
& s; a( D7 `- E' y    };
/ e: z7 c6 S2 ^1 N& ^) d# b5 o3 r    IntDSPINTCInit();% ^- `1 ], Q9 z2 }* M
    IPC_init(&ipcCfg);! u5 R3 B; z9 ?4 {
    IPC_intRegister(C674X_MASK_INT5);
$ b. L1 J) l# G* G0 R7 H    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));) T/ D' t& C8 ]: F

/ `1 z. z# p1 P7 ]2 Q* U    /*  Enabling interrupts for DSP C674x CPU */
2 ^0 y, G) ~2 J' F    IntGlobalEnable();        /* Enable C674x global interrupt */) m( ~7 b# B" r$ f
    iAssert (Notify_start()); /* This will enable IPC interrupt */
' ]. V4 U( P$ X) k}& E% [7 I2 T, F1 X1 p; R3 D

  A+ k$ O* c9 s5 b; `然后是  # v8 m( U% Z% M$ W0 A5 T  E2 P
            // UART 初始化( f2 b+ q8 o/ i& }( V" E
            UARTInit();! g- V, Y- d& l! c1 {% j
) `: M+ v+ V+ S
            // UART 中断初始化5 C9 i% p8 [% {; Q" N: ~9 e
            UARTInterruptInit();
6 |& {" P: E5 ?& l% r

6 ^* x' E7 L9 l8 T9 ~# g& [0 }3 q. x4 y8 b% j8 v: t3 T$ g9 Q
void UARTInit(void)
, E2 k) v, h8 ^/ s( c+ M: M/ a  @9 I{8 j$ O# @6 n3 }
        // 配置 UART0 参数/ W1 b' o) O3 N  b0 E8 T$ }' D
        // 波特率 115200 数据位 8 停止位 1 无校验位
% o6 ?& X& _# U, Z; D( Y    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,
- F; W# X: N1 H7 |7 U+ G9 w6 }                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);0 ~& G3 ^6 Q2 E
        // 使能 UART0
  `! F. v( o# X        UARTEnable(SOC_UART_0_REGS);4 ?  B5 r$ q! ~+ m
+ J# [3 E9 T1 p. |
    // 使能接收 / 发送 FIFO
( r: |& _8 O9 d//    UARTFIFOEnable(SOC_UART_0_REGS);
  ]0 q" n. h( l, E. l4 q: z
. y, z3 [0 Y: ?. X  o        UARTFIFODisable(SOC_UART_0_REGS);) V/ D5 I# L4 S! U. y1 P) s. n+ e
1 W6 ]/ p: M1 P- Z0 A
    // 设置 FIFO 级别     接收FIFO的级别
8 F( b: E) P& Q  @3 p& I% E//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);9 w4 V7 s% h. `$ o4 c/ ?
}$ w$ e9 N7 u" }" I" l5 v/ N
9 B' o2 P3 G( I2 y1 C# F
0 _- a1 o6 t! O/ g. G( I
void UARTInterruptInit(void)
+ w9 V4 H2 R6 u1 k, K& f{; S4 r& T4 l4 o4 o
        IntRegister(C674X_MASK_INT4, UARTIsr);
7 E+ M9 }( r" H) k        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);$ l( ]4 s, O6 I8 W' U; P' h
        IntEnable(C674X_MASK_INT4);
7 m8 r4 v1 W/ s$ S7 [& ~& h$ o/ L; u6 t: E0 q5 ?2 E: j$ o
        // 使能中断9 `# s" }0 t* P& |# d
        unsigned int intFlags = 0;! R9 M0 Y$ O' }8 W# |
    intFlags |= (UART_INT_LINE_STAT  |  \
- _2 h: B6 ^+ e) y                 UART_INT_TX_EMPTY |    \0 S7 {- F# c7 C: w/ x
                 UART_INT_RXDATA_CTI);
, }. M5 j5 E" Y, a. v& y* W; p& S6 f" P    UARTIntEnable(SOC_UART_0_REGS, intFlags);
' v# z6 a, q* R$ L# n}
+ L+ u) {9 q$ L% k! L

' o5 T4 O6 {8 h8 M& W( i0 X- h6 U- [5 h) P
void UARTIsr(): G0 X( w$ ~, K7 u
{& C; @$ ^" h% U1 r
    static unsigned int length = sizeof(txArray);! q; p3 I' R# m
    static unsigned int count = 0;! A9 Q9 o9 q( t% w9 Y. _
    unsigned int int_id = 0;
2 Q0 {) N/ w  p
5 D9 m1 q* \/ |: S
9 j6 z: B1 B) ]7 ]. h0 r
; W; A! z2 K! G4 V. x    // 确定中断源; V& R% |1 ?& I! p" j+ N9 D
    int_id = UARTIntStatus(SOC_UART_0_REGS);
/ m; s5 R5 N) E7 p+ ?: W$ `7 R; T5 w% \" E) `/ ]9 {
    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。0 l2 s8 p1 I9 h3 c3 ~! X% u6 M2 |" Y

1 F3 @) _4 q: H3 v5 N0 l. w" F4 a+ u4 p7 M8 L3 ?8 U
    // 清除 UART2 系统中断
/ c; j& U, s4 H0 ^& E    IntEventClear(SYS_INT_UART0_INT);4 P( m3 K% H4 h+ ~
" \6 i8 L& G& x3 o  a! l. P% O$ M
    // 发送中断4 Z0 N& l- O9 q; Z7 ~) @& w
    if(UART_INTID_TX_EMPTY == int_id)
: w, P* j1 O2 Q! u1 [    {9 p/ k! J' W! ?  c; \, g) `! C
        if(0 < length)( _( o/ s% Q0 E  N& m3 @3 t
        {" k$ i1 x- I2 _8 F3 q
            // 写一个字节到 THR
2 D9 f6 A* u4 g0 i            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);. \5 N8 n! T6 A! U% g/ {# C% ~
            length--;
5 `& V- ]! b9 P7 E- y0 P! U            count++;
  I9 s$ D7 q+ A& k        }
7 E# X# ~5 W" c) U! |        if(0 == length)* A9 n4 p. h3 X. F& K% _: G& p
        {1 c* A( `  n0 G" `0 ]9 }6 L
            // 禁用发送中断
; V- d! j( s, I$ ^) o. N            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);
* G8 u# _. ]& |* ?        }
/ W9 l) {6 Z9 N/ D     }. c; @7 p3 ~+ ~' o# j4 M4 e

4 l" }6 Z* B& d7 v6 y    // 接收中断
' K3 N! h$ Q+ t$ ]) U9 Q" C    if(UART_INTID_RX_DATA == int_id)/ C$ r0 ?' Z& ~* z
    {" }/ D4 D/ }7 H; j0 E( j
        if(status_a0==0)
' Y: v9 `: j  {( c        {
! f! u& d( h9 S7 p                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);4 P2 ~9 X7 M1 R  f. e
                if(a[0]=='#')
- s; X6 t2 q4 b+ u' E8 @                {
; r. j4 @7 _% U. {  A. G* h                        status_a0=0x01;
; j* h8 a4 M* p                        status_a1=0x01;% V) ~7 @4 L1 z9 ?2 _
                }7 v- p; T& k" H9 ?" T0 p+ j8 D
        }9 {% n# w, b, D! u& Z8 n
        if(status_a1==0x01)
, q4 D/ i3 @. y! J. }3 W, H        {$ ?: t- |6 C3 P4 t) |6 ?
                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);: }  X( q9 a+ ^& z4 S4 d
                if(a[1]=='R')
3 |; S: j( u+ R7 ]2 ~4 g3 L                {
9 v0 Q6 H/ R% F1 g4 L1 M% T8 r9 A                        status_a1=0;+ z, Q  E, v2 M2 O
                        status_a2=0x01;
( L/ b& V+ ^$ ]3 }, O! R                }
' K' Q4 g2 w2 {3 }& R) f        }
  {, ~4 J; @5 o. O$ m% ~/ Y        if(status_a2==0x01)
* h( g- Z) Y7 O" q        {
1 R2 O' P: x' R- A) e0 r8 h                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
4 C( o) \$ D) |' \                if(a[2]=='A')
  t" A5 D1 v1 o                {
' s% g% T% r3 c) d2 D; A: }                        status_a2=0;
( c; i! @7 U# p* b6 w3 |9 M                        status_a3=0x01;
3 E2 f- M1 \& v2 H2 o' j2 S                }6 H* B, g; \# R  Z- _2 ^* Z$ N4 q
        }1 A9 b! n  m) g' `
        if(status_a3==0x01). z6 L/ u9 B- [" Z% Z8 f
        {: m* O% y+ G! C( t* F9 n1 }2 F
                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
% u& c' j& }( F1 G  E% ~                if(a[3]=='N')
9 J$ X5 a) i* z- u$ J                {
5 K6 d* {$ ]- U( i# _                        status_a3=0;
. G% F" \6 j& u0 _                        status_a4=0x01;
2 K+ m, m5 p, L9 _- j- C                }  Y" l2 d4 J, C! A; O$ G7 e3 V
        }- G% H* x9 {; [. t7 r! ^
        if(status_a4==0x01)0 e) V2 c2 e, X
        {
1 }& U$ v# }2 ]: y' y$ p6 }+ r                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
+ J) u6 ?" d& T+ S+ E% Q4 q                if(a[4]=='G')
. m- Y9 b6 @4 k6 l) v                {: w2 l# h" }2 q' }
                        status_a4=0;8 r3 r* ]1 M3 r, \- l' z4 n
                        status_a5=0x01;
6 C2 e7 s" f  Z, J" K: I% |! G! w                }. Z# m8 T' W3 g+ H2 E
        }
2 J# q5 ^) l) O1 m2 o  H        if(status_a5==0x01)" u' ^0 ?$ F  R- R: r
        {4 c* h7 Y5 F% ]# Z  N3 n0 x
                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);" V% v  a% R8 _" m/ O
                if(a[5]=='E')3 {/ u; v. y+ B; \. D: k  n
                {
3 y( x2 u% K& _+ S" |! v1 V                        status_a5=0;
4 ~8 @7 Q$ ^$ [8 B  L                        status_OK=0x01;$ I# u8 b3 k2 R: }" T0 Z4 U! Q3 \& T
                }
2 L* n1 z; R& ]7 [5 |7 X        }
" ]& g3 F9 ^+ c            if(status_OK==0x01)' u2 F) L, w4 O; }
        {/ [% c  K- v* d: `. b
                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
: ?9 k4 s0 B- }4 ^$ P* ]' W                        lengthrx++;
/ R3 E' U0 x1 D, A! i* v                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值)
3 s% R$ \2 c4 Y% x                        {/ a# F% I5 ^: J5 o2 Z. t! v( f  d
                                RecState=0x01;
$ h: K! ?% r9 D# w3 O/ v                        }7 f+ r" O3 P! c
         }5 F. j# }' z; R1 u, [2 r4 y2 T

  S, S# v$ O$ v, J     }
9 [0 g% C7 }: D+ Y" m6 P# e" i$ b& y$ ]7 |" m- r4 v. ~$ S. a% [) [+ d
    // 接收错误% C8 F! b7 y  P$ U/ K
    if(UART_INTID_RX_LINE_STAT == int_id)8 n/ `9 j7 T- M# q0 z6 ?
    {
6 Y, g1 Q9 W. t, Z0 _, q        while(UARTRxErrorGet(SOC_UART_0_REGS))
. t* \( a7 v5 S: @; N        {
+ B% F1 w# N1 u            // 从 RBR 读一个字节
* M; J! K. m, F            UARTCharGetNonBlocking(SOC_UART_0_REGS);* \& y* [- ?+ A& B3 [3 ~2 Q1 p
        }
5 U. j9 \2 _8 g! Q; A9 V    }
% Q6 M# c5 U7 s4 I7 t
' N3 P; J! b$ @3 }8 J    return;
3 e+ V5 K4 D$ n, K/ l}  y- c2 }; x8 Y3 _

- Y8 ?1 {- g+ L8 G6 E
3 G3 ]; S2 M# t/ b+ R5 l' F

, V9 M  C) K, T( t& R
作者: Jackindata    时间: 2016-8-17 11:13
hi,
9 C; R7 o! A9 F1 @2 Q7 E8 c* K. X
1 q7 i6 v: g, K: i- b" U3 JUART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。
; H/ @- h$ N" L1 I
9 J9 U4 q( ~3 ?; ^5 ?要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:13
' @2 C8 z$ m( T( Thi,! H1 Q' o) g9 _  W
$ U. d4 J; d6 C8 p, N
UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...

( x& Q/ k$ ~3 _  Avoid main (void)
( N: \- _  s- r0 m{4 y, Y/ Y. Z: b, |3 t8 g
        int i,j;/ ]% R/ W( Q+ }
    char *str_buf;1 Y- n# X8 _9 m* _
    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];
- a/ x0 |* s3 w; n$ q/ f7 `4 E8 k  S        double est_L_b_=0;
+ o2 Q/ g: F. V# l) ~; X% y: H3 [+ Z        double est_lambda_b_=0;
# b1 ^8 Y) N; j$ q        double eul_[3][1]={0};
7 R6 ~- X* o' R$ d! J        double est_v_eb_e_[3][1]={0};. V/ O6 p5 T, B( U) x
        double est_C_b_e_[3][3]={0};# a1 x; r, P+ q- p) G; _
    char *qm;* i1 j: X! c3 E% J' y& R9 B6 d( o# f
    char rec[70];
$ X5 R4 }  g9 w* s8 k/ r( \$ R7 L; k        double L_b=0;/ P1 D6 s9 k+ b) X
        double lambda_b=0;
4 A  M5 m- C- N  M0 o# h" P        double h_b=0;
% w; l  Y1 k8 @        double rate;
6 g2 x0 O- _, ^$ c; q" T
$ G6 f" D9 ?/ ~" b6 J& w" x2 z! t
        // 外设使能配置3 H$ j( [- {7 Y( t* ]* v
        PSCInit();
) X9 u; z! s3 R& h1 H. U. A
& \1 \9 S) U$ P        AppInit();: P3 }+ o% y* S: f, p

( @  E" O6 K* }, H) h        // UART 初始化
7 S3 s% I4 I, a) Z; b7 r        UARTInit();! y2 L4 |2 e8 P/ ?  K9 q
" {# s7 B% q  o. x! X/ K  K
        // UART 中断初始化1 ^' L1 a% S* y/ m4 {% j
        UARTInterruptInit();8 U5 v# p- n3 g

3 L9 \4 `) k( y$ V0 H9 ~  Y    evtRcvd = 0;
# q# R8 A% J1 Y" |* Q    RecState=0;
9 t' n3 ^$ M. i9 I    /* Initialize */
& \/ O4 F. f# t8 p* E# b0 V+ A( b* g
, e% L5 P/ W! |+ H    printf("DSP subsystem ready\n");
' D+ ]& a5 d4 Q2 i8 D7 M
0 g0 u% ^3 _% \; t7 H0 K    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));
; v& n  H$ A( q* D/ H, q/ Z( {0 r' `& t; c: C0 G
for(;;)
0 @) ^! d( B3 }( C; I{: P7 l! v6 D5 P8 O$ r8 ?
        if((RecState&0x01)!=0)
  K& m5 B. @+ X( S4 i- k        {* w9 N$ U8 k- E- E9 I) q- i
                printf("liuzhenxing\n");
4 F' B8 z& `' A: ?- Q) F        }) h& A0 f' N" n0 q* W
        else
! u: E- z! [7 a        {
4 F+ F. T( o1 M' w+ k       wait_event();
% _3 E' c. D' h8 j0 g6 q; A4 @8 X/ l: N
           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针
! u2 ]) U; p* w& Z' B0 O$ r" L
5 u5 S2 z; r, ^1 \8 x4 [1 t7 g. k           for(i=0;i<60;i++)7 B$ }5 @3 K* K! @# I% m) D- O
           {
& v2 ], \- b8 S. F                    rec=*qm;# s1 S7 G7 u! w* D" g2 r7 M
                    qm++;
# L  D0 G  i; O5 G- Q% W' c+ o           }
& y5 X( Q. S& r5 P& w
6 A, ~) p% O5 N  r8 C  ?8 R           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);
5 R, c# ^3 w# T, Z( s, B; f% @) c* F1 v; e! F9 Y7 H
           L_b=L_b_receive_double;
- H" H7 F; A( X& ~           lambda_b=lambda_b_receive_double;
7 K- b& h3 R( M$ o           h_b=h_b_receive_double;" R. a1 t' C' S, ^5 _
           for(i=0;i<3;i++)
7 D( ?1 J5 j6 L& C5 b# M( k, O                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];$ O' k/ O3 c* s( s+ k" t
           for(i=0;i<3;i++)! o) C2 I2 O7 \# ]- u
                    for(j=0;j<3;j++)
: g$ m' O$ f4 O3 g4 h4 U                 est_C_b_e_[j]=est_C_b_e_receive_double[j];
7 Q' H. h  S0 ]9 i8 L2 I; L  p, I0 g; r% {
                printf("L=%lf\n",L_b);" @0 x# y& [6 q+ \0 T. q
                printf("lambda=%lf\n",lambda_b);- M8 Y8 ]. Y% B3 R
                printf("h=%lf\n",h_b);6 f+ w$ w7 \8 Z
, O* c3 q& t/ H, a) l- r
                for (i=0;i<3;i++)
5 e. R9 j6 ?( T$ `                        printf("%lf\n",est_v_eb_e_[0]);) }* m7 v" f4 p% U
                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]);8 n1 @4 n1 `; S* u; w7 f# j/ x! J
                printf("rate=%lf\n",rate);
6 r- ^. T2 U6 {0 ]2 r
# B7 ]& C+ h* w9 x* q                CTM_to_Euler(est_C_b_e_,eul_);% n' ^2 F0 Z. o, x  g
                for (i=0;i<3;i++)
% y$ E/ ?& t' X% j, L3 W                        printf("%lf\n",eul_[0]);
2 K  q4 R5 ^  B- q  G9 B                printf("end************************\n\n\n");
2 \; G) V& a- d* C; L5 p# @# ]" b3 R7 H8 _. e5 f: s, f
                /**********************************************************************/
' @' p9 l* r" }& I' F- k6 Z) y! O2 u2 D5 b
            char flag[4];; s5 F7 g2 B5 L# S) K. Z
* I# z' s) b+ ?! Y5 _+ a) H( L* N
            flag[3]=0x00;9 d6 n% l) q0 Y) [( ]; o
            flag[2]=0x00;  ~0 H8 [% b% b& s0 Y
            flag[1]=0x00;% w& t, u5 W1 B: K9 N6 ]4 W
            flag[0]=0x01;
& u% J. \0 M% r7 ]7 P- r0 {3 X; q; l
    /* Allocate I/O buffer and init with string */% o9 f! o2 m- B0 H  z3 r
    str_buf = (char *) malloc(80);
4 Q0 T! n& P# E6 Y6 m" f    str_buf =flag;
8 f. I3 y; d9 x0 Z" y3 N8 |* b+ \" g2 W3 J: x' w
    /* Send buffer to remote CPU */
2 }( \: v1 M1 V+ K; m0 g    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));
" K' `% k  [% P5 i2 F: y8 R+ z/ ^1 m" Z, y2 a
    printf((char *) myPayload);5 g5 Y+ ~, C" f- c0 r! T- W; d
        }
) C8 k/ ?/ \/ R7 [}
, n' J+ x. D6 W; A0 E7 G/ x0 I
) i  [$ P9 Y( F& [    WAIT_HERE;
. G% r" |+ _) F& @8 V& I}6 g& o* w0 T& z

作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:% M% j- N) d4 _/ f  D+ @% Z
我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。. Q' K8 b% b$ Z
然后我把双核通信的初始化屏蔽掉,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. r8 c) z# D; J+ h& e# |
syslink 的初始化是否成功,notify 通信是否正常了?

4 r! Y9 Z. m; R' O1 b$ A. w- R双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:54$ C" L% E# `, i& F2 D# L" ~9 h; ?
syslink 的初始化是否成功,notify 通信是否正常了?
" _; P& _+ ]1 R* b1 W: _5 B. z
我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:20) A4 U2 z5 P5 O8 Y. Y+ @
我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
& q  A7 Y, F/ k* I8 d
建议查看 UART0 及 DSP 中断控制器中断相关寄存器值 是否正确
作者: star_niubi    时间: 2016-8-21 14:56
能否说的具体一点,就是双核通信的都修改了哪些寄存器的值,这边双核裸机通信的资料很少。




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