嵌入式开发者社区

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

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。3 p2 ?- b9 _0 U* {$ p: Z( v
我是在DSP初始化这不太明白。* g6 u' i9 |6 F9 t4 z
初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。
8 C9 N4 K# }, t% u& A4 V( ^; ?
6 M$ R' }; H6 u. A& @3 ~+ Y9 T: b  H
首先        PSCInit();//UART0使能
; v' a- q+ O* evoid PSCInit(void)
9 M, z! S6 m  \* H0 i{
$ K; y. F: `1 P' ~6 N        // 对相应外设模块的使能也可以在 BootLoader 中完成% m3 W- v+ E+ b
    // 使能 UART0 模块3 u- i! x2 H+ `5 h9 P
    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);
$ F1 }. m9 U- @* N}
- l. l/ Y" [1 R+ g5 l5 x
$ f& K1 {9 |1 n
; b6 @# r3 n3 w2 g4 o6 t
然后是 双核通信的初始化           AppInit();6 t7 j0 V! r# z% q8 X( l7 k. t8 [
void AppInit(void)
  j* z& Z1 I) |{. n9 i  s1 x4 u) J6 z
    /* Structure to initialize IPC (see Ipc.h for definitions) */8 Q, c9 t4 g1 o  Z# |: r% l
    struct IPC_cfg ipcCfg = {: b3 w  |- I0 c- M) b, D
            IPC_DSP0,             /* local processor Id */
9 w% U/ H1 Y7 \# W/ q9 b! G            IPC_ARM_HOST,         /* remote processor Id */
- x5 M9 j5 `: j; T, d( w) S            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */
! }+ ]8 ~* l  t4 z! K  H            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */9 J/ Y" ?- K& c+ n! q0 {
            NUM_MAX_EVENT,        /* maximum number of events to be created *// l# ]: v9 [( l
            &ipcPvMemDsp,         /* local side private IPC memory */! Q% f& O; R' ?' O; w5 R! k! g( F
            &ipcPvMemArm          /* remote side private IPC memory */; G8 X  Q9 s2 L4 U# M
    };
# L* J+ ?: [' i4 A/ d    IntDSPINTCInit();. O% e- m2 O+ u, v
    IPC_init(&ipcCfg);& {  Q& E& o8 s; d
    IPC_intRegister(C674X_MASK_INT5);1 _% r) X) f+ r/ Y' u2 [
    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));
1 q  S9 y% \. [7 i; I  R9 s. L
0 r3 H' W, v  l: ^; @  e: h    /*  Enabling interrupts for DSP C674x CPU */0 d. `- s+ `# E" `( m1 z  D
    IntGlobalEnable();        /* Enable C674x global interrupt */8 w. [, J  F8 S3 l* {& [
    iAssert (Notify_start()); /* This will enable IPC interrupt */
, T( W, O7 [- H0 y' l2 k, L6 m}, c- K% n2 c6 B2 z4 |$ ^5 U
  r' ]* A# A7 j3 U% z; E. ~5 g
然后是  / \; Z, o2 U% _
            // UART 初始化) u8 @$ u" R  ]5 }- J2 _! F
            UARTInit();
6 C$ W% A; i$ x9 S6 t  c* M& q" N+ \, I: t' U$ W% A& w
            // UART 中断初始化
+ }& t8 Q. l  J' M1 a' o            UARTInterruptInit();
+ f: {# \' b0 ]5 r3 T

1 i& R; x6 Z$ r# F. Q! L
5 p" |2 U: F" l; I7 A; Ovoid UARTInit(void)2 e# X  N+ ~) ?/ D8 G
{
( {2 w1 a6 C4 j4 N5 s  {        // 配置 UART0 参数
0 Y5 @/ ]# Z2 S1 I7 Q2 R        // 波特率 115200 数据位 8 停止位 1 无校验位
& f1 e8 ^5 z2 @  L    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,- y0 t; _# V* V4 N; f
                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);
! B  o! G$ o. ~& w        // 使能 UART06 [' j. M# F. V$ ~
        UARTEnable(SOC_UART_0_REGS);
( j' m, [' T' s) E, {. L2 V7 }" _( R* R& d: ~6 a
    // 使能接收 / 发送 FIFO
7 x! s% r2 p* b9 I//    UARTFIFOEnable(SOC_UART_0_REGS);
% P- s# Q$ ^4 t6 j% _/ f! z7 n$ ^/ C% w  J% ?, h$ {! B9 _/ f+ E) B
        UARTFIFODisable(SOC_UART_0_REGS);8 A0 T. D/ E* h. v/ F

$ O3 {$ C, v5 R$ Y4 k9 R7 q    // 设置 FIFO 级别     接收FIFO的级别* [3 u3 O, }0 Y7 w
//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);
" H" P; [/ p/ k7 ~8 K( S# o: P}
8 [$ _3 r- ], u' |
& [+ E0 a0 d4 n; A

1 M# N1 D! K6 p1 Svoid UARTInterruptInit(void)/ I: P0 ^  ~+ {) ?
{" G1 J  `, d1 {% ?# J
        IntRegister(C674X_MASK_INT4, UARTIsr);8 q. _$ P! r, W* F
        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);! G, ~" h( U* U, k1 J$ [7 |
        IntEnable(C674X_MASK_INT4);6 y( z) K. s# n9 o( m

8 B6 B2 k5 J% ~  ?& P        // 使能中断, N8 q8 P) r& m2 \# J& f" Y5 P
        unsigned int intFlags = 0;! [, g5 f& \# b# h# {8 B
    intFlags |= (UART_INT_LINE_STAT  |  \
# f; h" g0 N& f                 UART_INT_TX_EMPTY |    \+ H) K; `, N% c4 t5 B
                 UART_INT_RXDATA_CTI);. U/ Y) |1 f6 u/ W( Z9 w. ~4 ~
    UARTIntEnable(SOC_UART_0_REGS, intFlags);( Q3 W3 L3 I& @# y$ o2 G( g
}7 u  p5 ]5 D8 T
: c# d. p* B1 q! J
9 j3 A0 i" b7 Z5 V1 Y, L8 F
void UARTIsr()
1 y  v- P: v* g% G4 o  `& B{
+ M# b5 D- d! o: M4 U    static unsigned int length = sizeof(txArray);$ h! @. e' |8 @
    static unsigned int count = 0;: ]& M+ F+ ]( O2 J' ]! o- B
    unsigned int int_id = 0;
+ e& v2 @+ @* f! H% @
+ t; B, l" Q8 V0 S$ o2 K3 g+ t/ h. N* O! i
; X( v* C$ I1 ~/ P: _
    // 确定中断源
! z6 [9 _9 s+ Z; p  f, ?    int_id = UARTIntStatus(SOC_UART_0_REGS);
. a8 m2 s9 A4 U- M
+ Z& m* K% d. j. m/ {) h    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。  K8 g, O5 J) F. k

" D1 Z* w3 m5 b$ {$ c4 |; Q
9 e: R; w, F8 U) u* P    // 清除 UART2 系统中断. r; Q. d& t6 Z0 @( D: w
    IntEventClear(SYS_INT_UART0_INT);+ L8 R/ H7 Q( ~7 {, T4 ?) @6 x

7 v1 m0 j9 S! V& J( h3 ^5 j    // 发送中断6 {; B. R) r" l% s/ z
    if(UART_INTID_TX_EMPTY == int_id)7 f. H5 H5 v% ?9 V7 X! E1 q
    {; x$ F, j& y* l2 N8 y8 Z
        if(0 < length)) w% O3 f: P3 X1 J. C* G; l& O
        {% |- m6 P( c. T( C' X. |, y
            // 写一个字节到 THR
4 Q$ K; L6 c1 \  b            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);8 X. T* x9 l3 `
            length--;
. H2 t- Y' R$ y( F+ n            count++;/ F6 ^* A, L! I& g
        }8 F1 x' j" l5 A" Y
        if(0 == length)3 f0 q4 {2 ~9 w) w
        {
6 }6 _  j/ N. S, d' `0 p: L0 e            // 禁用发送中断
1 d# y  \9 K( o  c1 x- M; E- I: B9 F            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);
$ N' V0 }8 w; Y2 B" [$ ]8 N        }, H0 f, O  s" q/ L: I# S' b
     }
, @+ v0 z* c2 }5 t" s# @1 q! l
0 `5 ]* I" q& u    // 接收中断- G9 W5 E8 D% \; f+ K
    if(UART_INTID_RX_DATA == int_id)% _' f; t- S( i  ]. Q6 E
    {9 ]1 c& o( t- ^
        if(status_a0==0)  R$ \! o7 B& i
        {
, M+ O/ b/ B* v' N" k% e, d                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
$ `9 Y: ~' ?" i: C' x0 u                if(a[0]=='#')! ]7 z3 u$ I6 h, t. J+ Y
                {
6 w' ?# c; k. Q. Q- s6 Y) V' X                        status_a0=0x01;
1 h& v% K- O! X; S                        status_a1=0x01;) F( t0 t$ Q; a" i# @* ]& O( d
                }0 S6 Y$ Z8 b* K( F- R; N
        }
6 i( Z7 p9 ^$ K8 P1 v! Q- X0 ]        if(status_a1==0x01)
6 j' Z, ]8 M% i" A4 i! m- T% w        {
* c/ `! ]5 v" {. s) x; _                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);- ?1 I& `; J4 \$ y3 y7 {
                if(a[1]=='R')& {  B5 v9 q  [0 ?' |4 j
                {. l. J5 z# c) B+ J, e! [
                        status_a1=0;0 T" M) y  e$ s7 @  Y' |& y: ^( g
                        status_a2=0x01;
$ q" J. n4 b0 A2 ~                }- N: c- z) W( f- `2 V6 N1 |
        }
- E1 H/ }  C% o/ z; [        if(status_a2==0x01)+ r( Z3 J1 j& X2 T7 l7 d
        {
! y: c5 q. @$ M6 D3 l- @' u                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);$ ^5 [7 v! r' x4 f9 ~  @* `! B8 x
                if(a[2]=='A')+ n5 e4 X+ o7 ~( H
                {* t) B& r8 A2 z' J0 |+ ?
                        status_a2=0;
: r/ b2 w% p" [6 |2 C7 {" C4 t                        status_a3=0x01;$ Z0 w& J, p, ]
                }# K* l/ q3 U# ~( i+ n
        }
; b1 R, n( V# v4 a1 X. m        if(status_a3==0x01)
1 @5 F# Q8 }4 v0 ]        {
8 `3 `' L' C6 {5 d4 G2 r9 W8 n                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
) `+ t" ~+ W, i                if(a[3]=='N')
2 H# H/ N: G4 F) O6 {8 b& z5 v                {  n8 [$ n! p4 `! g4 `
                        status_a3=0;5 |8 h1 k2 U" S- W  P% h2 j
                        status_a4=0x01;
% m6 Q) z; X4 u                }( |3 C' H- z, I6 z% n
        }
) j+ D8 e# q5 n8 B% x% E        if(status_a4==0x01)# i3 w! G9 |, g8 p
        {2 Z5 ~# V4 G6 J  C9 E% `
                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);, e: P/ i% _% |( x
                if(a[4]=='G'), ^& A( @& Y+ W
                {- n  o8 h' D3 \9 I3 [
                        status_a4=0;
0 i9 Q7 [* k4 X" X                        status_a5=0x01;
5 j- {  V) c2 V8 }! L# G                }
1 k. z$ [1 _- ]: B1 b) }; @) u0 ^9 I        }
" }1 C, Z9 S% M3 k( q, n: l# V  S        if(status_a5==0x01)3 S9 L: g8 ^$ F2 z
        {
  u, y7 f1 f$ M                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
* M4 Z- q& Y0 \# `) _                if(a[5]=='E')
% z1 t( w4 @2 x9 V6 c" ]1 a3 s                {  W; V( d" i. @0 e+ z
                        status_a5=0;% w; w# ~4 x$ I
                        status_OK=0x01;
* o. S8 O* F4 [" ]4 m                }* b( R8 {0 \' ^; M2 d' u: v7 a
        }; I' {# P7 {# W% A" O- l
            if(status_OK==0x01)* N& V( ?1 r' x% `# V" \0 b) }
        {% A  p: J; M1 ]4 f
                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);& o; r. B( @0 q3 u0 V; B
                        lengthrx++;
0 o( q8 [/ v& y                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值)- Z, }- T- q( I  P
                        {
# v! V% x$ Y) a* M                                RecState=0x01;( Q4 c! Z! }" o$ @0 X
                        }6 E" a6 d7 P9 S3 }/ ~6 n2 \
         }
. W" E9 U* R( L3 |. d& e: o
6 W2 k; T1 Z* p  d     }
. I1 E) @5 |! [* o7 |' v- [4 a0 J
0 T* N4 i/ H# Z  ^7 r) d    // 接收错误
8 s6 m. {7 d) O    if(UART_INTID_RX_LINE_STAT == int_id)& ^! \; D- q, K: Z: |& V
    {6 k" N- g: Y) l, [
        while(UARTRxErrorGet(SOC_UART_0_REGS))
) W0 e/ S* ~8 b& X% R* b        {
) ^+ f9 Y- f" c2 B3 A. M            // 从 RBR 读一个字节0 {) [, }$ G7 D
            UARTCharGetNonBlocking(SOC_UART_0_REGS);/ O0 K* Z: X* B8 [; A* G
        }. o$ H3 g4 `" ?- d
    }, h, g9 n1 ^- H( A
' S  K0 Q; I) Z
    return;9 }6 [, a, O7 e/ r
}; y$ e0 e9 L3 Q& D# d9 r4 L1 d0 P

/ k& l, ^$ X0 {5 ^7 R% s

# d9 F8 ]+ [. f1 t" g+ {+ l. s( ?7 Z2 p% P# F& U

作者: Jackindata    时间: 2016-8-17 11:13
hi,0 V: Y0 b% x! T6 P' j; e* H

0 k( ]# I* [  W. W% j( ZUART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。
7 B; W8 `8 N- R, M3 L/ ^- \5 S* ^: O
' m& c) l. e( @6 F( U要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:13
# F- d/ h/ U0 r! y# g; ]: a0 Z# Uhi,
) B* \5 ~3 G! V8 ^4 R8 ^  n) e' b
3 c. m' I6 Q; f0 c) VUART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...

, w) g  y6 y( Z2 {void main (void)
! |- l$ w- X. H, c{
" Y  ]1 u7 q7 Z& o$ g        int i,j;
" h0 h$ |8 y$ Y$ t2 g+ g+ V    char *str_buf;' x  e4 _/ q/ i* \: A9 z
    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];
8 i3 V5 n, w* q( C3 j  f) @        double est_L_b_=0;' A  G# @7 \8 l
        double est_lambda_b_=0;3 o* ^5 ?& G6 \/ R! Z
        double eul_[3][1]={0};
+ H1 z0 t* F  m5 v$ U        double est_v_eb_e_[3][1]={0};6 p+ J# k2 p; D$ ?% c
        double est_C_b_e_[3][3]={0};
5 L4 b3 n7 D/ r    char *qm;
  O. {9 R4 t" T3 u    char rec[70];$ v1 S/ S" O3 ?9 u
        double L_b=0;" k9 {! e. _5 J
        double lambda_b=0;
3 a2 Y5 ?3 Y$ C* @2 l        double h_b=0;
- F2 s5 g! }  M! w% s; Q        double rate;
- h. Y" _# z* u  N$ v( L, D; a. G# o# y, z8 ^0 K$ h

: X' @4 Q( g# P9 C        // 外设使能配置
9 _" w  l: w, v! C4 _; P7 [        PSCInit();
# V! K% x" N/ f' y2 B" _0 j: u9 K
- O2 G: T+ ~/ O4 U0 K# C* }        AppInit();4 U: m! i* X" `' j. e% g
5 E7 z3 P4 D/ M' \4 p
        // UART 初始化4 g! T, [$ b( a' P0 o& R5 B. `7 L
        UARTInit();
7 Z! t# m7 w* U$ W
3 s% _( G! V3 z* W        // UART 中断初始化1 G5 ?- g, V$ I' ?: N5 u9 }. C
        UARTInterruptInit();
% w4 `; Y/ M! U6 _- ^/ o6 D0 n3 R5 g. P+ O& w8 m4 I) N
    evtRcvd = 0;8 h9 u0 ?/ b" {
    RecState=0;
& `9 n/ @# A2 z2 T    /* Initialize */8 [6 I" j, P$ W* |

8 f! K& X- o6 W' e- p: E    printf("DSP subsystem ready\n");% o2 L7 m, M* ~- Y0 S9 U: E
2 J( ~4 C8 E. w2 k8 v9 ^) G' e
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));( N3 \% ^! h$ Y' c( T
4 N+ o  h( {1 B/ k
for(;;)+ d6 Y! _$ h7 _# a" M, y
{
+ _8 W/ H: ?6 W2 H) r$ [# f        if((RecState&0x01)!=0)+ D( O" R4 Z* L9 c; S1 d/ F- i, z$ M; c
        {
$ k7 K* j- F3 \# b6 j1 T, A                printf("liuzhenxing\n");
8 I' M6 ]' M  t( \+ ?3 L        }
6 G" D  h1 o# y1 L        else
/ W- z1 @' C) Z& }9 n* Q- |        {) C! }* B8 y5 @- R
       wait_event();
, p, H1 A% M! w& e
. ]/ h* R: m) h0 r, c( k           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针$ }% }! q( A7 c" o- o6 \( u
6 C% x7 N* a' z" W
           for(i=0;i<60;i++)
0 ^* u( r) [- m5 `) Z% h           {
8 M# J' V! ^% J% r& k( O3 y9 P* q& m                    rec=*qm;6 t7 J6 \: y- R# @1 f6 Y
                    qm++;& v; V6 N; Y0 }# @& S
           }
0 j( z$ c% r' G7 V% ?/ w: F" r+ V0 I7 h$ e2 `
           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);
/ N. O* W# p( o3 L7 d2 D
% u+ b: ~/ p: P! r( M           L_b=L_b_receive_double;
$ v- K$ s; v! X+ ~6 I6 f: @           lambda_b=lambda_b_receive_double;# }4 P( j2 i& t5 C: O9 h0 [
           h_b=h_b_receive_double;$ b1 P4 ]! s# U0 D1 j
           for(i=0;i<3;i++)
& Q4 h$ b# z  f/ b2 e9 [                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];- B7 H5 ?9 R. u/ Y- Z+ X
           for(i=0;i<3;i++)
, n* R) U3 v8 {& }+ X3 }  }& y- h                    for(j=0;j<3;j++)
: b! ^( C3 R6 G" G, X- E' Q                 est_C_b_e_[j]=est_C_b_e_receive_double[j];; y' [3 ~8 F8 c4 x0 d5 `) m. V# S
- d+ Q" E, Q- ?8 I7 Y- e
                printf("L=%lf\n",L_b);# o9 _$ M3 C& f( F, k
                printf("lambda=%lf\n",lambda_b);
. x5 b( ]/ j& P5 z, C( m8 K8 ?                printf("h=%lf\n",h_b);) p8 v4 V) W( @1 h. Y3 K0 @% j
, P) z$ h/ a8 }$ z% T5 C7 h
                for (i=0;i<3;i++)
; ~1 ~; y* s5 m5 F( V                        printf("%lf\n",est_v_eb_e_[0]);
: Q- S, }9 d7 I7 v/ A                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]);
1 z$ S1 E( X6 N, u8 g                printf("rate=%lf\n",rate);
% Z+ y. L3 a: p
! `7 d  j, v, s                CTM_to_Euler(est_C_b_e_,eul_);
" ^/ ~: l" m4 n2 ^" C' C                for (i=0;i<3;i++)2 k0 `9 m2 S* C/ q4 x+ ^% {
                        printf("%lf\n",eul_[0]);
5 e7 _, i! X1 f) ?                printf("end************************\n\n\n");- b* P4 Y: }' s4 r( z7 @5 f
9 n5 A/ E( A* i: a9 i/ }  p: J+ \
                /**********************************************************************/4 P3 q7 K  _! n0 O6 Y' ^" n* `! ^

" |: U% X' J/ t% @% u3 ^            char flag[4];+ ~' e7 }$ I/ x, P# g8 [: N+ R
, T+ S9 d6 k% f- A$ b. p- U
            flag[3]=0x00;: u/ v! x7 H" n7 _
            flag[2]=0x00;
2 g( C% z0 h# D0 b+ G: r            flag[1]=0x00;0 [% P: e% a# }% L
            flag[0]=0x01;
) z7 r- ~% {6 T7 `9 `' |) S
5 Z4 Y  [( m! I. i    /* Allocate I/O buffer and init with string */4 C2 `" z: s* N" m3 T) C
    str_buf = (char *) malloc(80);
, h8 o7 [3 M9 Q3 u    str_buf =flag;4 Y6 a9 }2 B2 k3 B) a! D

5 m: @0 N  k; Y9 u8 c2 H* C  i    /* Send buffer to remote CPU */
$ s, ]% q1 v# V  e' B! S2 {) q    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));
7 \* d- X' Y9 o# P+ h
$ Y: c' T- ]1 a6 B    printf((char *) myPayload);
2 a2 Z0 Q3 N/ p* b& \7 s- n0 ^        }/ t3 q) }7 ?7 d$ a! A
}
* D5 O$ t; G" a, S3 W* p, }  J2 y9 V- R' n7 D
    WAIT_HERE;
7 |! J  L- t& ~; n; b. ~8 b9 M" I7 z; v4 E}
3 u1 b- X) A- s7 h+ ~9 A5 O- N3 C3 ^
作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:
; w: ^) Y! p/ _我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。
( @; V/ C4 R( p* y/ q然后我把双核通信的初始化屏蔽掉,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:540 a: u. N3 R# E$ C. P
syslink 的初始化是否成功,notify 通信是否正常了?
! `: h8 p  T( L6 F3 _6 B8 Q& H
双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:54; E1 l8 e* R3 U6 X9 S- c- t9 s
syslink 的初始化是否成功,notify 通信是否正常了?

! A% o7 X, s- W/ I5 |6 q7 S我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:20
8 {! q  G0 Q7 f5 O我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
4 v& T4 m9 i# M
建议查看 UART0 及 DSP 中断控制器中断相关寄存器值 是否正确
作者: star_niubi    时间: 2016-8-21 14:56
能否说的具体一点,就是双核通信的都修改了哪些寄存器的值,这边双核裸机通信的资料很少。




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