嵌入式开发者社区

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

作者: star_niubi    时间: 2016-8-16 14:54
标题: 双核通信的同时需要DSP核通过UART接口读数据
OMAPL138双核通信,现在需要DSP核中的UART0接口。/ m9 R) ~# S; A$ W
我是在DSP初始化这不太明白。
% I. i3 |" e1 B2 U4 y$ |. X: s初始化要初始双核通信的IPC和UART0。  我是按照下面的顺序进行初始化的,但是UART0接口接收不到数据。
7 z1 Y- v  |7 a( L6 L5 j' j0 F+ y: q) w& \, D" y* y
- F6 U" s  D) ]4 [& i* s3 z
首先        PSCInit();//UART0使能
+ r/ t! L' e4 ?4 K& Dvoid PSCInit(void)
. s- s8 Z# z& H; o! X{) k9 d7 K- ]8 ~9 x# R' T
        // 对相应外设模块的使能也可以在 BootLoader 中完成9 {/ c! n1 x, ~5 B* P: w
    // 使能 UART0 模块
4 g1 j: s+ I- A; p; [, Y4 ?* Y    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);& G8 ?' `( d2 G/ b- n0 D
}
/ P7 h" L  v' U' x+ E+ i

0 W# n9 u1 U$ x8 C4 A7 y9 b
6 H0 U7 v8 T' x然后是 双核通信的初始化           AppInit();  c6 E, E; Z# `3 L+ A- g: p
void AppInit(void)
6 @0 W/ m0 y% b& _+ q{$ P! o$ j6 n" k6 s1 a( X
    /* Structure to initialize IPC (see Ipc.h for definitions) */8 n$ V% l" D; O2 m
    struct IPC_cfg ipcCfg = {
% ?: r9 i$ X" S6 @5 z5 E            IPC_DSP0,             /* local processor Id */7 [7 r; k4 f) ~: g
            IPC_ARM_HOST,         /* remote processor Id */
8 K7 B7 S) J. r9 }# |- q            IPC_HOST_INTLINE,     /* ID of interrupt line to remote CPU */
# l' _3 S2 J( s            IPC_INTERRUPT_METHOD, /* Method to receive from remote processor */5 C( {  D* R8 o/ U8 x+ l
            NUM_MAX_EVENT,        /* maximum number of events to be created */; v0 ]7 I; w) i; ^7 q& x" ^- x" K7 g
            &ipcPvMemDsp,         /* local side private IPC memory */  Y- }3 ~; m; L' L$ s1 f: a
            &ipcPvMemArm          /* remote side private IPC memory */
5 {( O* f1 I4 p4 {( k    };( Y0 i7 L$ u% s- \8 K) ]/ w0 m* o
    IntDSPINTCInit();. {. E0 S# h- J2 O5 t* g
    IPC_init(&ipcCfg);( i% P4 o" D" H9 i# T" B+ M8 y1 [
    IPC_intRegister(C674X_MASK_INT5);( y* z; M% d) ~
    iAssert (Notify_registerEvent(IPC_ARM_HOST, IPC_HOST_INTLINE, EVENTID, cbFxnEvent, 0xc0de));7 N! ~2 |1 t& L) o* _8 W6 t! a$ Q4 z

- ]$ t, E9 |# N( o2 Y! J    /*  Enabling interrupts for DSP C674x CPU */2 }& `7 t3 j# K' x. ]! P/ X
    IntGlobalEnable();        /* Enable C674x global interrupt */: H* A+ u# t/ @' [9 q5 A# T
    iAssert (Notify_start()); /* This will enable IPC interrupt */
2 L- {: y9 b; w9 T* W& ~' K}
- r. s4 w. t4 P! u# T/ b

% j9 z' Q$ e4 r" q1 S9 C然后是  
0 r( @% v3 N) \" s, l# t5 ?. X            // UART 初始化
' F* D9 ?# R# T1 B- f6 w/ A            UARTInit();
! \% r! J& U; Y% b
  X; N9 {& W" ]/ [1 r$ m            // UART 中断初始化
( ^. v* b" k( H% M- t            UARTInterruptInit();
! G9 G5 d( W! u! t) }0 S' ~
' B' a) W* T7 ?. v' Z. k9 C

/ j$ r' b& z  yvoid UARTInit(void)
1 [- h* L' @+ i; `{& d. N2 S7 R* V, A2 c& q9 w
        // 配置 UART0 参数( X& w( l& _- b8 ?8 W4 r
        // 波特率 115200 数据位 8 停止位 1 无校验位% ~8 b1 W& ]7 J' @
    UARTConfigSetExpClk(SOC_UART_0_REGS, UART_1_FREQ, BAUD_115200,0 W% a& H2 }. S
                                  UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);
# P. ^+ R5 ~% q2 n        // 使能 UART0
9 X% D& T8 l' S        UARTEnable(SOC_UART_0_REGS);
; S9 p; ?  @3 O) q- G9 h5 R* a$ u0 I( n# y4 K
    // 使能接收 / 发送 FIFO
- L, a3 R2 o! R* w5 X9 H//    UARTFIFOEnable(SOC_UART_0_REGS);
9 r+ U! j* ~. ?+ Y( L
% C) X# o5 _* A) f; ]/ _        UARTFIFODisable(SOC_UART_0_REGS);
7 Q7 Y1 a( k6 w- H$ M
* b/ Q: G5 a- F3 C7 p  ]    // 设置 FIFO 级别     接收FIFO的级别
3 h4 W: p; p8 T$ Q* c9 e, J0 V//    UARTFIFOLevelSet(SOC_UART_0_REGS, UART_RX_TRIG_LEVEL_1);
4 d1 N2 w4 _" A$ D9 s5 E}( m2 a; S5 o( E/ r4 V7 }6 ~) I

5 L1 d/ J+ s" v6 _: E+ e5 _9 O, ?, {) w9 g$ O7 x; @  X
void UARTInterruptInit(void)
) ^& ^' S! M8 B* F3 r{! `" a# `+ j3 J9 k
        IntRegister(C674X_MASK_INT4, UARTIsr);2 U- E7 `* l$ d
        IntEventMap(C674X_MASK_INT4, SYS_INT_UART0_INT);
* x$ l3 \3 P$ R/ @        IntEnable(C674X_MASK_INT4);' |6 p* M+ d$ M& q, ?4 l+ @5 F

5 i4 u% A& l4 n        // 使能中断! F( T# g0 ]+ s" e( m! {' m( ]
        unsigned int intFlags = 0;
0 w+ V* p) R1 j% s* S% X) J5 i    intFlags |= (UART_INT_LINE_STAT  |  \8 B2 R/ }/ ~1 s8 z0 e
                 UART_INT_TX_EMPTY |    \+ m4 \" m/ V2 C
                 UART_INT_RXDATA_CTI);& L1 u5 F% \/ }8 P/ f/ O
    UARTIntEnable(SOC_UART_0_REGS, intFlags);
" }& n& }9 N" @* H7 T}) X( [0 A) ?' }& ]3 v8 A
. U) z- _& {# V. e' ^

, v4 [4 R" t( K3 m3 ^7 Rvoid UARTIsr()
8 Z6 n: i$ o3 g8 L{
, Y, S# i3 s: H) _& {* A    static unsigned int length = sizeof(txArray);
1 P7 ^; H6 n7 S! J" e2 S# E5 q    static unsigned int count = 0;9 J- ^1 |. h0 P* l: w
    unsigned int int_id = 0;* ], O6 K' L8 I+ U/ Z/ i
1 {* Z# _6 U  R% f

/ X  ]5 Z0 e8 S0 ^4 [+ k! Z2 S2 v5 Q8 f4 E
    // 确定中断源1 X1 {# F: i8 }! \, L" E2 G
    int_id = UARTIntStatus(SOC_UART_0_REGS);
  q$ D7 p! z+ [* M& W5 p' s+ d- z7 }4 ^+ O4 J. Z* I
    // 清除 UART0 系统中断       软件清除中断,进入中断服务函数后,中断不能自动清除,必须使用软件清除,若违背及时清除,则退出中断函数使会发生混乱。& p6 p& @6 n/ I; X9 a- e7 A7 {" l

* `# k8 t/ i2 ~
) `/ J1 e8 M6 J$ B: p/ P4 S( f    // 清除 UART2 系统中断6 Z! d% S, S" V/ q
    IntEventClear(SYS_INT_UART0_INT);
5 Z0 L3 L- u/ }, J& l
1 M6 z% E1 u- W' o& e& u5 ~: i9 I- |    // 发送中断
& ~+ ~! d5 H# v" K8 J- m0 o    if(UART_INTID_TX_EMPTY == int_id)0 O: U' R! O1 H- B
    {
- H3 J: z. z8 \3 M, `# s        if(0 < length)
( ?7 c% r) t" V- \' ^2 @        {
' Z  f/ [0 v7 r- Y; `            // 写一个字节到 THR! b  \/ Q7 i) D" a3 }
            UARTCharPutNonBlocking(SOC_UART_0_REGS, txArray[count]);
+ l, A( C. p" W' ~            length--;( l" t; C  p: [8 Q3 U0 c1 {2 s2 }
            count++;
  S$ D4 C  O6 [/ W        }
" d8 R4 P, [1 E  p4 j        if(0 == length), `* A/ Y; e: A8 N
        {! ]# ~9 V7 T# F$ D3 Y( V
            // 禁用发送中断
5 M, h( X4 {. r+ y2 `            UARTIntDisable(SOC_UART_0_REGS, UART_INT_TX_EMPTY);. X( ~% X0 _, a$ S& f: R* u
        }9 \* S4 e6 e( T0 |5 n% v
     }
: R; |) w' q5 L1 e% P
2 {! e& Z/ m/ R- [6 x9 ^7 C. h; a' Z    // 接收中断
( D6 B* x. G  B) a$ ^) E8 }    if(UART_INTID_RX_DATA == int_id)
* U. f6 W9 E" P    {
4 ?" z# d: U% u& [+ A* t4 Y        if(status_a0==0)# d7 j6 [! k) R; }6 C
        {/ w# ]$ M1 I4 }& n
                a[0]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
0 B5 M, B. k! w, ]                if(a[0]=='#')( V3 C. _# @" Q4 D* x/ K+ o
                {
/ z8 \0 N$ n+ \, A: u  P* u                        status_a0=0x01;) y/ {4 A2 m( p( E3 d# t" W
                        status_a1=0x01;
, n9 {; l+ C- W1 u                }! S; ?. P% Z/ O$ X0 c
        }  S0 }2 d% l) t5 V2 {( P
        if(status_a1==0x01)# w9 P: V8 x2 h, Q8 C) y5 J
        {  u  M1 U3 k* _
                a[1]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
" k! B4 g3 I2 M: O6 y) i; x                if(a[1]=='R')& |% M- T5 `& L! c7 y' T
                {/ P0 H% w+ K4 q- ^  [
                        status_a1=0;# ?1 K7 Z5 E& N: `; s8 g
                        status_a2=0x01;
4 \+ q) u  L6 j( ?& d- m# ]                }% U/ u: n% `. O4 b7 o
        }0 @5 r% A  N8 r3 B& _! h$ b8 {4 }, ~
        if(status_a2==0x01)6 m; e; Z+ u" c# m, v" A! B
        {
1 J$ j' M) q( j  f0 a                a[2]=UARTCharGetNonBlocking(SOC_UART_0_REGS);; H6 i3 F6 Y' \
                if(a[2]=='A')
$ A" |% q7 V: r! [                {! X3 z7 w! e& z+ H+ `, K
                        status_a2=0;, S5 b! j0 i( J, N
                        status_a3=0x01;
* Z+ X; X0 M% ?5 v                }) x2 o! h5 ]  A1 a3 J
        }
! x* t4 ^7 J  ~; a+ A        if(status_a3==0x01)
- T6 @* m8 c+ D  W  O        {4 k4 \& N7 t, E( B6 e- b$ m
                a[3]=UARTCharGetNonBlocking(SOC_UART_0_REGS);0 h4 z5 s( F/ g$ E0 r
                if(a[3]=='N')
0 Q# R: m: a1 b: s                {
( Q" V* L' ]3 M- ?. i( F4 T& n6 i; |                        status_a3=0;
! D  H3 i5 x5 E! M# q                        status_a4=0x01;/ E& X" l8 }1 r: _, ~- b8 e# g7 B
                }* c$ B4 b+ a& d# t8 i
        }5 V# u9 T+ E7 D; I' W  i8 v
        if(status_a4==0x01)
) T7 ~& J5 m5 O1 o+ B! j        {
8 q2 a7 R$ b3 p3 W3 G- h                a[4]=UARTCharGetNonBlocking(SOC_UART_0_REGS);
6 P- T8 b% X" I, q                if(a[4]=='G')
* E  F; A4 T! {& [9 s4 K5 g                {+ t( n, q  E& Y2 [" f# j- O8 Q+ S
                        status_a4=0;9 H6 F0 c" I8 s# A9 C
                        status_a5=0x01;
  I; o' }/ _* }% x                }# f) F0 t3 ?# U
        }
+ w- O! Q  }1 c        if(status_a5==0x01)
( j' i: p8 Z5 ^5 Z% r8 v& n        {
4 k1 v/ N- V9 s# K* s3 h                a[5]=UARTCharGetNonBlocking(SOC_UART_0_REGS);9 _  J6 g% h4 k0 S. B' x
                if(a[5]=='E')
2 l1 @- B% E/ t$ T4 J                {
0 m5 m' h# q4 s. \1 m1 D                        status_a5=0;" R- f9 t% m) ]
                        status_OK=0x01;2 @* e. G! M7 Z: ^# S- d
                }
& L  |2 B& c0 H$ Q4 b  F! h        }, k; M! P/ k4 O
            if(status_OK==0x01)/ k6 \! u# i) [
        {
! Z% T8 `- [; g* R3 ?' [                        rxData[lengthrx]=UARTCharGetNonBlocking(SOC_UART_0_REGS);( ]/ O* f$ c3 H- X
                        lengthrx++;
0 Q' i& v% h3 U4 d$ |1 _                        if(lengthrx==10000)//可从这里加多个矩阵   if(100或其他值)
% }7 Z' h& Q& c% D; y! L, R% F                        {
" E1 j# b- N4 X  x                                RecState=0x01;, S9 V# U/ F  }9 D2 `1 v) J2 p
                        }) W- O' }; s* k
         }
- `5 ]) B% o; G" z. R8 l* T/ \* c0 d; @9 j7 F6 k4 u
     }
: c: x4 H- f) {5 s8 W
( D9 h/ b" z! o- F1 r7 C- k    // 接收错误5 s: f- h! p5 E5 W
    if(UART_INTID_RX_LINE_STAT == int_id)* e3 j% ?+ N/ g% J! A
    {
3 }1 U7 l0 ?8 H- r& J        while(UARTRxErrorGet(SOC_UART_0_REGS))
% O8 [. s! x3 Z$ x; O! Q; O' g) ?        {9 V% u" O; N9 e( |) X3 C
            // 从 RBR 读一个字节
3 ?! r) l2 Z. g1 x& v% A            UARTCharGetNonBlocking(SOC_UART_0_REGS);
1 j2 t1 E0 i  h! X        }
, D! _: t! _7 Y& W& E/ ]7 q9 o- B    }
. f$ D$ Z/ g- y$ o  D+ g' P5 v
    return;7 s# y9 D* r, `7 @' {
}9 i5 x3 j# r! t9 e
5 m+ ^* w# Y' l) Z
3 Y) g0 g. y0 o  B7 O- D. R0 }& U

: ]+ `6 K( a3 n- {0 w
作者: Jackindata    时间: 2016-8-17 11:13
hi,
2 C' \8 T( Z6 _: `, |; M1 j( n- C+ ^- W* E
UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情况就更好。
7 r* t$ c; \5 {  l5 v. x# r5 O2 V
要更具体明确地说明下才行。
作者: star_niubi    时间: 2016-8-17 11:33
Jackindata 发表于 2016-8-17 11:13
  C% A; e  K: I6 `/ M- Ohi,
  q' A! m- H1 E! U
% e* H; K  Y; U. ]- [/ Q3 ]UART0 收不到数据是基于怎样的代码?请附上你自己实际使用的方式(初始化、读写),能说明你的调试情 ...

+ N( i& ]& `& h8 ~& Tvoid main (void)6 x. q9 |/ c" K
{
; M! h$ x6 B5 |& l3 n" s        int i,j;
" x" j  K! y1 P  }# Y$ d    char *str_buf;
! q. _! f1 D/ i) b' r6 i, @    double est_v_eb_e_receive_double[3][1],est_C_b_e_receive_double[3][3];. J# Y: |! U6 d+ U9 |0 |8 q
        double est_L_b_=0;: S3 o; X7 S3 \- G; g7 s
        double est_lambda_b_=0;. m6 ~, k( W- C; D" h+ I2 {
        double eul_[3][1]={0};
% b1 i/ p/ ]5 O( c. ?        double est_v_eb_e_[3][1]={0};1 M+ N2 [9 _; Z
        double est_C_b_e_[3][3]={0};. Z0 R- L0 d& N' f
    char *qm;
6 L7 V0 Q; D1 u3 C* d: e: f" Y! C. p    char rec[70];, B% X' f- I4 Q0 p& ?
        double L_b=0;' [( K2 \3 v; s
        double lambda_b=0;
* {$ }3 F& ~' {5 a) s; }; \, m        double h_b=0;
' y) w5 J0 H* o0 j, f" ^) X/ u/ A, I        double rate;
5 G; h8 [6 {7 E/ x8 h1 [! K8 J, T0 @5 K( Y+ m; W4 i* j& U3 F' v* v

. L5 n1 Q: O$ ]9 i3 W$ l        // 外设使能配置0 K/ A( H7 I- }0 a* a# v8 ^
        PSCInit();! l4 s" Q! L  q) v+ h" g5 A9 q+ X
/ b) I* M! s4 d6 D5 C7 D7 X/ A
        AppInit();
" _6 C' ]- I* ?$ L
$ s5 Q8 L% `0 R' q7 L5 @        // UART 初始化
- }" K( O" R9 {& p0 y* q8 R        UARTInit();
. Z5 U9 t2 s" u
6 T, E4 D0 B- W* y( e  x: K' Q$ @/ n, H        // UART 中断初始化. }0 E7 T9 {2 Y3 H9 Z7 g* e4 E
        UARTInterruptInit();0 f6 u! |* }% Y* p$ ~) A

; p  U1 B) r- L/ E    evtRcvd = 0;
; |/ Q/ x, L' s+ s. w+ O; }    RecState=0;
, j  X/ l* @0 z/ j    /* Initialize */
' R: Q9 q" Z/ n: s! L8 l! v6 \5 J2 I0 k) U
    printf("DSP subsystem ready\n");3 y( D& B+ G! z# h* `. H. j
5 Z8 k2 g# ?0 l4 ~, A/ u2 t/ D
    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) 0x01, TRUE));7 V9 l" @2 ]& k
& y( M  P& |' X' t8 `/ P& s+ f
for(;;)% S* a( b  _8 _
{
" ]2 J* b) G* h6 R$ j        if((RecState&0x01)!=0); S! m) v" X1 k; V; D. U
        {& k& v: T+ Q; H" Z6 v
                printf("liuzhenxing\n");- J  e; o5 b$ ^
        }+ {, ?9 `, y+ M
        else
: P: @" v2 E" H" W8 p% @0 ^9 E2 O+ r        {) i4 U% e' y& ~3 f
       wait_event();) `* ?- u& s5 C( g4 s  I8 ]

8 P' T2 z& h7 J$ y           qm=(char*)myPayload;//将myPayload指针(arm和dsp中间传输的指针)给一个新的指针
  k7 B" J: \# V+ i- l# D8 K% A; |0 n+ T/ B
           for(i=0;i<60;i++)
% e4 T# w0 L8 |- C" b% Y1 z/ s! T           {
/ h# ]7 j2 P& ]" `. Z# _                    rec=*qm;: Y2 c# {# @- X- z) d
                    qm++;2 w$ ^8 W( v/ ~' k. a
           }
+ g# ?2 |- [0 Q! L5 X7 D3 q' Y! Z! x$ f- D3 F+ {/ Y! V
           shujujiesuan(rec,est_v_eb_e_receive_double,est_C_b_e_receive_double);6 T1 F6 ^+ s# M8 m7 U4 O- i

: L  G2 D; n5 ^2 m+ b           L_b=L_b_receive_double;
# F; e) u( D! n- d, E' F           lambda_b=lambda_b_receive_double;
: t( z1 W8 v3 g% q0 S: v. \) ]           h_b=h_b_receive_double;
4 N0 n0 c7 _% `6 a           for(i=0;i<3;i++)
! G: r. P9 Y1 S: e, Z5 L: c1 [' F  I& ?                est_v_eb_e_[0]=est_v_eb_e_receive_double[0];
% w4 B7 S6 D8 D% o5 _           for(i=0;i<3;i++)( e3 P8 u5 M  K' z& ^( O3 V
                    for(j=0;j<3;j++)
9 P5 v5 b+ U2 S$ Z% L8 T                 est_C_b_e_[j]=est_C_b_e_receive_double[j];
& B/ u# @$ u1 Q0 W/ _7 m% _. F, A: k7 T+ Z# R: @! K
                printf("L=%lf\n",L_b);
- m1 ?9 ]- A0 y0 \6 q; [; W3 V. R                printf("lambda=%lf\n",lambda_b);: B+ }( h3 h/ _# e$ T% s' s
                printf("h=%lf\n",h_b);
+ Z) J5 b# m1 ~
" O/ R  ]% J5 K( s! K! C                for (i=0;i<3;i++)
* Y, s9 I6 ]2 }5 M8 u* `                        printf("%lf\n",est_v_eb_e_[0]);! I6 Z$ [" o) i4 G  O
                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 {. n" F0 e4 G& Q% w                printf("rate=%lf\n",rate);
+ a" ?  r% l# q3 u$ e% n4 w5 i2 }0 R+ J* ]
                CTM_to_Euler(est_C_b_e_,eul_);8 ~4 a: F4 K0 M" J. F+ o
                for (i=0;i<3;i++)
! D0 g4 n" m4 C* e- ]                        printf("%lf\n",eul_[0]);
- ?8 b& j! O& S4 H0 [9 O4 a                printf("end************************\n\n\n");: R. l. Z, r8 s; m
. Z9 X) }2 i1 G* t  M/ Q2 V
                /**********************************************************************/9 d/ h0 X- }& x4 R

1 |& J5 n$ }: ~. `8 I) |            char flag[4];
: F6 H' I8 f/ E, x- Q
' e2 }& \/ `. o  @4 L+ p$ U: h! m" H  i            flag[3]=0x00;" _4 `3 K" w: {
            flag[2]=0x00;
/ C5 l5 R) U/ ]( p            flag[1]=0x00;1 `" X4 {; t7 B
            flag[0]=0x01;& |' g; A/ w! g6 z
6 [3 ^8 i9 o0 a4 e8 o
    /* Allocate I/O buffer and init with string */' z, ]$ `* @) l7 d3 L. z
    str_buf = (char *) malloc(80);
( G. m4 O: c  ^: T0 \& V    str_buf =flag;
+ P4 e  z$ x2 x
/ v5 v% d3 u# t& Y9 w, Q2 m    /* Send buffer to remote CPU */
6 P% l: W, K3 B9 q3 ~    iAssert (Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID, (UInt32) str_buf, TRUE));4 e% F- ~' Q) J4 z2 x2 @; N. c+ u
+ a) R2 j9 J0 o, o; n6 a
    printf((char *) myPayload);
! d1 b: y( l7 n) K& D! |$ i        }
6 w( j& O( R/ n; o/ Z}
6 @7 p2 d2 ]+ U
7 ~$ V, U) e- t3 ]4 S4 ?    WAIT_HERE;
; Y5 m5 t: [$ y! m) J}, |- z4 @4 o* V" i. ~% o6 P

作者: star_niubi    时间: 2016-8-17 11:34
上面的关于UART的子程序,在一楼
作者: star_niubi    时间: 2016-8-17 11:37
我说一下调试的情况:
, M2 P9 C  @1 |9 {. T我按照上面的程序,双核通信的和UART的都初始化了,然后UART就接受不到一个数据,就是UART这个中断就没有产生。6 p3 K6 m" M5 i. j
然后我把双核通信的初始化屏蔽掉,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, ?7 d& i: R7 e& T# }2 U' ]
syslink 的初始化是否成功,notify 通信是否正常了?

% L( G' \, v/ u7 V+ l( m双核通信是正常的,就是UART0读数据不正常。
作者: star_niubi    时间: 2016-8-17 16:20
Jackindata 发表于 2016-8-17 11:54, I/ p) {$ T- b" O6 @- P4 G- X6 a8 Q2 `
syslink 的初始化是否成功,notify 通信是否正常了?

4 m- L$ n' ^$ i# `! ~我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
作者: 希望缄默    时间: 2016-8-18 11:34
star_niubi 发表于 2016-8-17 16:20" d( E' p, _5 E: A% q) }
我用的是裸机开发的双核通信,用的是IPC_BUFFER_IO的例程
8 R  x7 ^# e  Z/ i; {  O
建议查看 UART0 及 DSP 中断控制器中断相关寄存器值 是否正确
作者: star_niubi    时间: 2016-8-21 14:56
能否说的具体一点,就是双核通信的都修改了哪些寄存器的值,这边双核裸机通信的资料很少。




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