嵌入式开发者社区

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

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。
8 p: P) T+ }3 w; J$ @  ?我是在DSP初始化这不太明白。; ]9 @0 X9 }5 V+ l0 ~2 N
初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。
2 p/ I/ a6 w5 U/ A" L& ^: u2 @
% K0 m7 z# e& G
首先        PSCInit();//UART0使能
/ H. ^# H# V9 k* e& Jvoid PSCInit(void)& L% `+ g  b9 ]2 z# j
{
0 x8 p+ k+ {- q. ~2 ?        // 对相应外设模块的使能也可以在 BootLoader 中完成9 |) h2 d% g$ [. ~
    // 使能 UART0 模块3 N' A/ t" P4 q2 r
    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);! o& c# E' d' k# x& d0 w
}, j2 g% e. o; ~$ u$ J9 o

: \/ G$ q0 H- y. x& q4 j* \* J) t$ n! Z" f% ]
然后是 双核通信的初始化           AppInit();% e" [6 |% f, [! x6 a
void AppInit(void)0 s& R6 p: G7 m
{% Z: S# \7 ]% \
    /* Structure to initialize IPC (see Ipc.h for definitions) */8 \4 b, Z# n! D2 {$ Y1 n" ?
    struct IPC_cfg ipcCfg = {  [- x+ W5 g4 x" o* c+ p+ z* c
            IPC_DSP0,             /* local processor Id */
, z) ]% [: n2 C8 G4 I            IPC_ARM_HOST,         /* remote processor Id */: J( n* S5 a1 E: x7 C. h2 \
            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */$ g1 m( c( s3 ]  J" F# q8 ~1 l4 S
            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */( r" a' d4 ~: m5 ^; \2 G' `( E: n2 u
            NUM_MAX_EVENT,        /* maximum number of events to be created */. K" E) B, _+ @( p/ h: a# S5 \
            &ipcPvMemDsp,         /* local side private IPC memory */
$ \; P1 h* z) T. Q1 V, U            &ipcPvMemArm          /* remote side private IPC memory */
/ e* b# G% I/ J" @0 H  a    };1 P4 p) R4 [$ `  _
    IntDSPINTCInit();, F: b3 h! D4 c- T3 j) H
    IPC_init(&ipcCfg);
7 W1 q. ]# }& U5 X& A    IPC_intRegister(C674X_MASK_INT5);& w' H% L+ B+ f+ e: H
    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));
8 y9 F- }# v, X, g, W) r2 f4 f) @1 X* }- t; }
    /*  Enabling interrupts for DSP C674x CPU */3 @% f) f, l. l) o" K' s6 u% C
    IntGlobalEnable();        /* Enable C674x global interrupt */+ K7 K: r7 J: q, r3 ]9 j$ R& ?
    iAssert (Notify_start()); /* This will enable IPC interrupt */# N- s0 Z9 t+ j0 o9 C5 K! V
}
' M+ q7 H. B  r+ p
" p$ h$ P: a0 |  R2 `/ a
然后是  # t' }6 |0 w. m: Z) i
            // UART 初始化
( x2 b, u5 }$ \3 q6 d9 R            UARTInit();: o" R8 G+ ^) ?4 ^1 ^
* N$ D" [, g" G% P  q( L# c
            // UART 中断初始化
: `2 O( \" }" r$ N            UARTInterruptInit();
5 _& M# W  @" S6 A; Y' G+ l( C

# {& e0 l- N/ G( G: d' a- l% k$ [. ^* c+ [, q, \
void UARTInit(void)" A- x7 y2 y0 r3 ?- M
{
  [9 e0 W6 I* g0 C        // 配置 UART0 参数
  a) T' m' ~) u9 i: y1 l- I        // 波特率 115200 数据位 8 停止位 1 无校验位* \9 f9 x( v. h+ w0 ~  q
    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,1 a4 t+ \, @+ P( Z7 n* K) Z& J; V
                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);& W7 U$ L4 K2 C5 c& K  H. ~
        // 使能 UART03 j% q# D! _5 m. J+ V8 ~
        UARTEnable(SOC_UART_0_REGS);* \8 r3 Q: |+ t! I: S9 a
3 g$ R0 p; [8 I0 k1 l
    // 使能接收 / 发送 FIFO
1 G" X# O6 r$ S6 {7 W  Q# h//    UARTFIFOEnable(SOC_UART_0_REGS);
' }* F/ i8 u& Y* V% V
! p& ]/ v0 N4 o( g2 t        UARTFIFODisable(SOC_UART_0_REGS);$ f* y0 ]+ ?* }: k' d& p
# N! P2 S% I+ S! h$ f
    // 设置 FIFO 级别     接收FIFO的级别) |+ G1 D" m1 A* e6 i7 K; ?* u
//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);) p! a* S: k8 Q
}
1 {6 D# w3 c$ y/ q! b9 C
* `4 {$ v0 R( O9 I0 Y9 U
5 h+ q) i) z7 ^
void UARTInterruptInit(void)2 V9 ~8 ~& z) g& d; l# j
{
5 |3 k/ ^- w+ ]8 t+ g0 p; o* _  k0 n        IntRegister(C674X_MASK_INT4, UARTIsr);2 ]' R/ D* a% }" l9 A# [& B8 ~- D
        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);
; ]& n' s9 ~9 @" H        IntEnable(C674X_MASK_INT4);6 j, P- k* i6 i: m' T5 t: E, z
) d  Z2 Y3 R; ^3 l, H
        // 使能中断
# G7 {! I2 Q$ V/ u1 V9 i5 ?+ Q        unsigned int intFlags = 0;8 e/ W+ n( }! L8 w
    intFlags |= (UART_INT_LINE_STAT  |  \% [  C& R0 ^2 p: m4 e$ c; P
                 UART_INT_TX_EMPTY |    \4 q! O  F/ h" B" h1 }% k$ R, Q2 D
                 UART_INT_RXDATA_CTI);. \; N2 D8 g# V% v2 _
    UARTIntEnable(SOC_UART_0_REGS, intFlags);$ x5 d& i' k6 J/ e5 {  D' W' [! ?
}1 @( m; V9 [! F$ j# }" G% v2 h
3 z: |! b$ t  @$ r8 B* O
5 _1 s" ~: A# p9 ]% N+ p- |7 R- b( z
void UARTIsr()+ n4 r. v0 K- }% c# {% m
{! g( c2 a; v/ |9 o
    static unsigned int length = sizeof(txArray);
. O# t: w' Z" Z% R2 w    static unsigned int count = 0;
9 w0 m3 g* h# x- C6 r) T    unsigned int int_id = 0;
$ s6 v! W+ U9 h; {+ M0 \: D# R3 y: u1 u/ g8 l4 B9 a
/ p' B: Y1 X- k; G6 \( T

7 I, ]9 N+ R( n% R7 S9 ~    // 确定中断源
0 w7 P9 g2 x$ X- X- o    int_id = UARTIntStatus(SOC_UART_0_REGS);! `3 B& \3 S3 ]/ A! g  v6 ]
; C4 @3 F! i% I* S" l
    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。  Z& \" G. s7 R2 Q

6 t4 h2 F4 ~4 y; r% w. K( y0 u
+ H  ?4 ^9 g' ~* A1 M+ {2 @- }/ `    // 清除 UART2 系统中断4 B1 n. q6 r! Z) }% G
    IntEventClear(SYS_INT_UART0_INT);9 y/ {7 K+ x' y9 k# |9 x& |8 @5 C

. h2 A  a3 R* R9 g6 L& i    // 发送中断& p8 Q; p# b; g* C# m' q! g
    if(UART_INTID_TX_EMPTY == int_id)
6 F4 c1 P; R/ R1 D% u    {
% b; k# T; Z: I' v% r) ?        if(0 < length)) x9 H4 N* Q" G3 p
        {8 M, E# z1 S) f& z5 G( N
            // 写一个字节到 THR) ~5 m! N! p6 R6 y+ I
            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);
5 ]1 {% J: s, _" }" b  g; l1 J/ O            length--;( M+ ~% O7 J9 V
            count++;
& Y4 j8 [$ N2 |9 z8 {$ Q        }
2 k! W' m2 \% i" z        if(0 == length)( {; {: b" N( k0 w
        {  r5 b* Y7 r$ `
            // 禁用发送中断1 `5 w6 w, g! ~; m0 d- j4 W
            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);( P& P8 e! N5 t% J! a2 q9 m
        }+ y2 p1 x+ B6 P! I  G. I
     }  t1 F% E" h- d5 |5 ~8 \
6 {$ I1 N: Y' d+ `4 ^- ?
    // 接收中断
! s1 Y. D9 A( W$ X    if(UART_INTID_RX_DATA == int_id)
( g! ^% u1 r3 L/ A/ ^) b    {
' J, D( G0 k3 h& d4 e! q        if(status_a0==0)
) @  {" Y' d4 f. @* j/ D9 O& V        {
* D5 O8 a9 n; ?' A4 K8 P" u' A2 a' @                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);+ q" L" y4 v1 O7 x4 N
                if(a[0]=='#')
4 _3 V/ k) s3 P2 Z+ |" J: c# ]/ Y2 e                {
  G9 @+ D4 j! P3 [- ^# i+ t3 v" ]; \                        status_a0=0x01;% A/ {' {; U5 D( {! k0 S
                        status_a1=0x01;
' k6 a$ `$ f1 ^, ]! ]                }
- D4 X, C4 I; h" b        }
: o4 G9 Y# g3 ?        if(status_a1==0x01)4 S  J4 k" ^, Q, B3 m
        {
7 O: q* C9 ]) ~2 V/ V. a                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);8 H4 G- I0 D( `3 r
                if(a[1]=='R')
3 {0 h! x  o) d) k                {8 S" n+ V& O9 [7 H( E. Z; w3 |
                        status_a1=0;
5 U5 C; v* v- x                        status_a2=0x01;
. ?4 W4 G7 P' c( S; _                }
6 G# b; s: h1 y0 A$ r( w7 n1 h        }& a  k: a2 S; o, d) ~" y
        if(status_a2==0x01)
& Y( L7 U9 c4 W  }+ ]9 Z' z        {
# M& J2 f) B: m; ?, R2 \1 q                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);* E1 y/ G; I  U- e# X
                if(a[2]=='A')
/ C$ ]% w+ R% y* ]# Z* f                {3 c; B5 x& P% g3 O
                        status_a2=0;
# L0 x) |8 V0 {- O2 ]: ?2 y                        status_a3=0x01;' V* ?) P( P; ^" s6 j( [/ w8 h
                }
$ m' A! O# G5 p- D, c        }8 f2 v3 K% J; \2 O+ Y
        if(status_a3==0x01)
4 d) h% D* G# Q- l$ M- q& \6 K        {
1 k; D! p& L$ G1 V; P                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
# Z" B' ^3 p9 l5 K; P                if(a[3]=='N')
- U8 N7 I$ Y, @! u                {
: S7 X0 ]' g8 S) K1 y- p                        status_a3=0;
* d8 v3 [+ k; @# U! r* ^- R# e                        status_a4=0x01;
& X7 n( H2 E6 ?6 A$ ?                }
. N) E( N/ F2 o- f5 I$ U# I        }
9 h4 O7 ]1 ]8 i4 H' ]- h' T+ G        if(status_a4==0x01)
4 |8 F0 P* U4 _7 j" o# W        {
( P9 Q8 V# c! f& Z                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
  R# P# C8 ~: k; V$ r' B                if(a[4]=='G')- c3 u8 a, h: `$ w
                {8 H. Q9 J8 X" ~
                        status_a4=0;
% o0 j- R4 N8 Z                        status_a5=0x01;9 W5 u8 N% t2 M1 J# ~& u" E% n, K
                }/ j, J8 P1 z) ]5 ~* E
        }
" |* _! \% _6 L: r  o/ F/ r4 D: e        if(status_a5==0x01); d5 A# N) t3 I( K
        {' ]# Y; w) [- [
                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
4 c! O! Z2 T2 Q0 v. O6 ]                if(a[5]=='E')7 r! h& L/ C7 h& F2 s, U
                {
# z  C. G3 d) z& o7 A                        status_a5=0;
2 N  i$ T+ b2 w- H% A# j: x                        status_OK=0x01;( t4 Z% ~# Z- c' w8 D% e3 T
                }
; H7 K0 s7 s: ]' u" T4 V        }
1 W; }0 I3 H5 q6 n7 N' F& K            if(status_OK==0x01)6 B9 s6 f2 W! o, Q0 l4 O/ W
        {1 ~) ^* Q  k( l: v5 ~% o: @- G
                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);, t0 l# Q. K+ L1 ]4 n9 N
                        lengthrx++;
4 m1 ]2 a4 T$ R/ s1 g                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值)
# V6 H/ C1 o8 u! g& }" I  d                        {7 a4 l6 M) x2 t6 }
                                RecState=0x01;/ h4 f& Z6 g0 Y1 p0 c) p( f
                        }- |- U  D& ?9 S  ~: k; b, Q
         }& f, h; {' m* T& U  i8 n

) b& ^6 m* l4 c8 f% S) r; P     }
$ r) X5 J5 h9 I" ?) D- U+ A
( m! w+ |: Z8 O+ e4 A( N7 R" Y    // 接收错误
3 D0 e9 g/ n! P: h; _: @) h    if(UART_INTID_RX_LINE_STAT == int_id)
' U: C1 x. o* M: \1 t. k$ {    {; Y; W8 z% U% s  `% }1 m
        while(UARTRxErrorGet(SOC_UART_0_REGS))
% |. |0 B" s! w# D( h7 O; U        {5 q; T: M1 j2 g, r
            // 从 RBR 读一个字节7 J; ]" D( a; q- i7 g8 _# z( w' H
            UARTCharGetNonBlocking(SOC_UART_0_REGS);4 G3 u' D2 o/ i
        }
( ]3 V  q5 S, W+ K    }  b5 T) P# B6 d& \: i: \0 w9 B2 Z

* l; F' T' ?0 p3 [) U; ~2 Z% b    return;' R4 y" H% U# _
}5 |6 L3 V# w9 S. L
4 J3 `. d# n' S/ H- J) _
! E$ N5 z4 q/ k4 ]2 o! ~
$ Q! R! C/ x0 P2 f

作者: Jackindata    时间: 2016-8-17 11:13
hi,& a9 c4 [! t, w1 Z( x& l9 d

! e3 v  f5 `# Z6 f% EUART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。
3 p; ^# w* T8 d1 x+ Q; J& ?- F$ m* U) ^( s: E( C
要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:13
# P* L/ Q1 K* y  \hi,
3 {  g5 s$ S: q4 o- G6 M$ w
- i5 {; T- g& ]. u. j3 L9 K# y$ T$ kUART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...
; K% x5 g( Y, Q* U1 D' }9 f" [
void main (void)3 I" Y2 q, s* b- {9 Z  O
{1 j1 F/ b6 ~7 u2 @
        int i,j;" h+ Y. E9 C4 V8 ]
    char *str_buf;$ ^! ^( Z4 y( _; l3 V+ w: l( e8 R
    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];- y$ d. ~4 u7 D; ~0 W, j
        double est_L_b_=0;4 F  i+ `5 l1 y7 T6 I' m& s+ D% ]
        double est_lambda_b_=0;% E4 a" b  Q# U) ~  {8 u0 K% z
        double eul_[3][1]={0};7 r1 t2 B  h2 u7 Y7 O* m. ^
        double est_v_eb_e_[3][1]={0};
1 S/ e1 L+ m. i  Y9 S+ E! U( k        double est_C_b_e_[3][3]={0};: ^( \& r' o, o3 b9 |8 `
    char *qm;1 Y% R" ?, Q$ }' v8 f
    char rec[70];
- B4 r6 X" L3 Y1 O" K        double L_b=0;
2 k& p* N( Z  E0 e3 ?: u5 e& k6 R        double lambda_b=0;0 k- t3 q. u( f# B3 q+ T
        double h_b=0;2 `/ Y2 M9 f" o1 m' r. M. `; m
        double rate;
0 X9 {; U! K0 y* e" M9 h
  E/ u# s" J# @4 G, X) I: U+ E* @. D# G* k
        // 外设使能配置$ L/ \6 H- J( u2 e
        PSCInit();" \: o5 x! c3 u
: e) i( s. x' H; Y* \. Z' \# `
        AppInit();" W5 v+ @% c( B# ]9 J! h

  g5 i+ P5 @# {! o; A        // UART 初始化
/ j1 ^0 b, r+ y8 y- F+ O        UARTInit();( M6 ~% a" P" f) u* Q6 T! d
( n! q/ N5 @# J0 ]$ `6 D4 L5 v
        // UART 中断初始化
0 ?( U$ D+ Z; B7 n  w1 x* \        UARTInterruptInit();
4 Y5 r* T' N2 O
. s5 Q+ k* m1 b    evtRcvd = 0;
/ d- ?5 ~  C  h3 w! p    RecState=0;2 e' @, M4 F" u/ r0 q$ z  L3 c
    /* Initialize */: `1 j' F$ Z$ {0 A  j) ?* z
- R* c1 k6 D2 S+ @5 h
    printf("DSP subsystem ready\n");% U3 b; a2 n& H5 Q) c) L

& w- ^( G% `( `" {1 ~0 R* T: E    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));
. c/ g* p0 N6 f9 l5 l
9 f4 U1 b+ }* ^; J. E5 ?for(;;)
) {% S2 h  H& M, }{# ]( s7 E4 Z0 b4 M2 ^( |' R$ o" f$ {
        if((RecState&0x01)!=0)  [" h. o! Y# a) z8 @1 O$ B
        {
5 o& S6 C) ]3 S7 D' y$ y, b                printf("liuzhenxing\n");/ e9 L3 H1 Q. [) L; {* G! T
        }
2 E4 ]# U, p. {9 s* D4 v+ i" T        else
+ x+ a2 ]" u: N0 D4 @: ?/ c7 }        {
& A3 B6 u& M7 A0 ^  }$ m* x7 @) c# R       wait_event();
  \. Q/ y- M( Q1 S2 v4 [' [. s4 y$ u6 i. c; {
           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针
# D/ ^1 N% g5 a# J, G/ n, U) U2 a+ F- F+ t( g8 P# ^1 J! L% W1 g
           for(i=0;i<60;i++)
3 p6 ^8 [' f/ M. v& M+ p2 H2 V           {2 d% p, j* E" V" K9 \
                    rec=*qm;
6 I! q1 u9 W& C' H                    qm++;0 a( n+ {% b% \) B, d
           }
# |9 z0 \1 G0 M7 }3 o
* t9 [& d. s0 m0 U/ G           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);! o9 x5 D2 ]) @3 ~9 a  }

7 z4 L6 w1 d3 U           L_b=L_b_receive_double;
. k( N+ q( ^" m; N4 N4 H) A3 J           lambda_b=lambda_b_receive_double;
0 e/ q+ i9 a& M* i           h_b=h_b_receive_double;
# h4 ~0 U. A8 |' h! i9 o           for(i=0;i<3;i++)
! Z# e  u5 z' S# z, `7 e: j$ M                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];
' w5 Y+ J9 z, f           for(i=0;i<3;i++)
5 o; R& [7 {7 t  G- `1 h                    for(j=0;j<3;j++)5 a3 Y/ r8 u# ~7 O
                 est_C_b_e_[j]=est_C_b_e_receive_double[j];+ H& q: F  l; Q2 i' e4 ]
+ I3 N# ]% b3 X
                printf("L=%lf\n",L_b);
7 _: R4 G  q8 o) k8 \# t! _0 j9 `4 C                printf("lambda=%lf\n",lambda_b);9 Y8 O5 V' r, s4 I9 I" b: ~: ~
                printf("h=%lf\n",h_b);
5 S7 a# A2 s: K* x/ i/ H# f6 @9 `6 N* M7 C/ x- ~" Q7 n; u5 P  Z
                for (i=0;i<3;i++)
& F2 o1 e# ]- ?0 i5 g8 ]                        printf("%lf\n",est_v_eb_e_[0]);  `- b, e  q8 M
                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]);
2 T2 t- p$ K, B8 z                printf("rate=%lf\n",rate);) S. f) G. n/ ]: k* m, F" O

/ M8 N$ O" v3 R! A/ G' i% j                CTM_to_Euler(est_C_b_e_,eul_);
# W' I' c. g% ^. `- I% x3 `                for (i=0;i<3;i++)  h- i9 x0 b* S$ G. u* \1 i3 u8 m$ s; [
                        printf("%lf\n",eul_[0]);  Y6 Q! ~- e- }
                printf("end************************\n\n\n");
+ E. u: D6 \; O- s4 R$ k* c( y
: A" P+ b/ K$ w                /**********************************************************************/4 t' B3 q* ~/ _) ]- [6 m  x2 m

5 Y. T, j; e) `' h, k6 ?  g            char flag[4];
; u2 Z- k8 `! v9 T' ]1 I6 Q; v0 i- {: c3 Z" U. N: G+ b
            flag[3]=0x00;
3 N& t; n: h/ ?            flag[2]=0x00;1 P+ ?3 f, _% w$ {: w+ B
            flag[1]=0x00;
/ ^5 `" V+ @# G/ u$ M6 ~1 M% y9 h/ J' ]            flag[0]=0x01;
7 h% f! h. ~& v
! s$ v( g" Z5 O6 n% {! X    /* Allocate I/O buffer and init with string */
( U# w$ m, P& W0 P! ]( h    str_buf = (char *) malloc(80);, j& i, c( K; y
    str_buf =flag;; U; Q: q: L+ u) i0 V
, o1 g1 r9 Y  E8 K: h3 c
    /* Send buffer to remote CPU */
) H) \8 b/ R* W* P2 b" J    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));
6 }% b3 w( S# _1 P) H1 h0 d6 T! a6 U, \* e% k" {" D
    printf((char *) myPayload);4 _& d# u# Y8 @) y5 e
        }- L) g) G% W3 D7 @) W6 ^
}
' g! n; u1 v% t% c1 c3 q- z: ?8 o% A$ a* k  M+ D( C0 o
    WAIT_HERE;0 q7 z; {, ^+ i* t1 E5 z  Q( |( l
}
- g* |% e. n: V" l6 l
作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:
+ \( @1 k: u& E1 p, o我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。- ?5 g( H9 ~; H* \  e7 P/ {8 U
然后我把双核通信的初始化屏蔽掉,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+ o3 \" i: ?: S! T1 Q3 U' R8 p
syslink 的初始化是否成功,notify 通信是否正常了?
9 H/ Q/ f# v' z9 _, _, e+ _: }
双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:54
  H8 J8 {- n: G  ?0 ?3 Ksyslink 的初始化是否成功,notify 通信是否正常了?

3 K5 C1 t- ?, Y. x- z我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:20, q" |. `4 [( w9 `* ~
我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程

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




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