嵌入式开发者社区

标题: 请问怎样可以解除DSP端输出信息对占用串口1的占用 [打印本页]

作者: nihao123    时间: 2014-12-4 11:08
标题: 请问怎样可以解除DSP端输出信息对占用串口1的占用
你好我现在用的你们的omapl138开发板,跑的双核通信的程序,我现在需要通过串口一向外部发信息,但是串口一被DSP占用了,我怎样才能解除DSP占用呢9 d. E0 @  ]7 F" o" U
' k$ X) f; P2 Y: W& J* O

7 ^. R3 I/ t* [8 P. E! ~9 C1 b0 d谢谢
* Y2 @; d$ s, Z5 C: z! W3 Y' \0 a7 {8 X: _# }. g
0 }7 B7 [8 ?' h$ c* U$ ^7 ~

作者: tenny    时间: 2014-12-4 14:01
  1 #ifndef _LOG_H_
5 {* W# q9 n0 m+ B- {  2 #define _LOG_H_
$ \+ @& Y) x9 J; E  3
% o" V; b# I, g  4 /* 0: printf; 1: UART1 */
, N" `$ S& R' v9 N8 G  5 #define OUTPUT_TO_UART1 1
  C/ q" m8 C. }0 Y6 d0 B
  6
, |" Y+ g% I: Y7 }& e) c  7 /* Switch Log Output *// p% [4 ?/ K/ U1 g
  8 #if OUTPUT_TO_UART1$ A8 Y8 B' {7 H9 g* e9 J* ~
  9     /* For UART1 Initial */" `, B! g+ w3 r0 y
10     #include <stdlib.h>7 ~* b* z# ?; M. e; @9 a
11     #include "hw_types.h"  
" t6 [: a+ a, X2 a# Y2 K, ~* v 12     #include "hw_syscfg0_C6748.h"
& K( A7 |3 e$ i9 l 13     #include "soc_C6748.h"
; X/ B( T- |% s9 [1 G- g 14     #include "psc.h"               
! U' T2 b' I$ T" S 15     #include "gpio.h"               9 e) Y: m, R2 A' U1 V
16     #include "uart.h"4 u% a7 |8 z+ [* r0 @
17     #include "uartStdio.h"6 X0 |/ H% p4 ~  [/ {$ G: g+ p1 V
18
2 ]8 J# x( w9 k$ k6 f" J% y) m 19     #define OUTPUT UARTprintf8 Q" U5 p9 r4 k) ]# a6 P
20 #else" [. z( x% I) S* P* G# b# D
21     #include <stdio.h>
) j0 c- A# \+ z4 E 22     #include <stdbool.h>
5 H/ V5 n/ k% x5 d$ i 23
& }6 L- q: b- o: g% r+ i3 }2 ` 24     #define OUTPUT printf
  o. [5 j0 e0 T4 i 25 #endif0 t0 O. c+ J) \  n8 a3 {
26
" R4 l/ U9 L" D, J0 W* i  S1 J: t 27 /* Log init */
' L9 U! [5 C* E! i 28 #if OUTPUT_TO_UART19 D) Q, |6 c' O2 C  y5 I
29     #define LOG_INIT() do {                                     \- c' j9 o* `+ g, h- Z
30         PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO,           \( \3 Y$ z% O( _* d2 H* y
31                          PSC_POWERDOMAIN_ALWAYS_ON,             \; g, H  F3 A8 }% Y( L$ V
32                          PSC_MDCTL_NEXT_ENABLE);                \
$ Z6 N: E0 R# c1 o 33         GPIOBank6Pin12PinMuxSetup();                            \
. A- D: v) x, s- Z: |  u0 b6 Q 34         GPIOBank6Pin13PinMuxSetup();                            \! S4 E& e4 p8 a% @% J( G, N
35         GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT);  \
# d3 B. z% x* d 36         GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT);  \, q& ?/ h* g# ~, N6 w  G; h; u
37         UARTStdioInit();                                        \5 |- F8 w9 V) R0 o
38     } while (0)0 S% K* i' M0 C8 _( Z! B
39 #else6 v3 u$ @- b& e- c; k
40     #define LOG_INIT() do { } while (0)3 S. Q0 S8 I8 M7 P' ]% F* F
41 #endif
6 w+ O8 [0 R" v- T9 D6 y. F2 \, k 42 3 Y# y7 t- Y+ H1 T* _3 P
43 /* Log Output */
* ^2 N% R& y7 ~' R  b9 j 44 #define LOG_INFO(format, ...)      \
5 ]1 M! E! c% n; m2 w 45     do {                           \
& X' \* m1 |( I' T 46         OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
6 _/ Z# P6 u3 d9 G# w 47     } while (0)1 ]) B7 p0 [* f* I" L" l
48
% J3 Q+ r2 C& V2 S3 z 49 #define LOG_ERROR(format, ...)     \
: @' p, A7 {* y! w 50     do {                           \
8 e2 g8 C, f% v. H7 `, ] 51         OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
( v/ g0 I  ], v6 J3 p7 E 52     } while (0)% a+ ^6 ~( b0 r) I; c8 F* R
53
2 R9 w% P  e" R! ?: H. o- \ 54 #define LOG_DEBUG(format, ...)     \  Z0 q" J6 q; V2 D1 p- U
55     do {                           \# {, \* \6 v- ]2 \
56         OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
  ^7 H+ N6 o6 D1 v8 p* g 57     } while (0)3 u- }- s7 ^% F
58 6 B% n& S* M, t$ h7 m# K4 z
59 #define LOG_WARN(format, ...)      \6 e; X0 G6 x- z0 L* n3 K
60     do {                           \
$ [2 P+ t3 @8 G8 j" w 61         OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \9 K9 o- {- n- d* H8 g: |2 W
62     } while (0)- k. ]1 X* S3 G
63
. ~% `5 l- I3 a- h$ Z 64 #define LOG_TRACE(format, ...)     \7 e# V* \. \5 c$ r! u) g: k3 A
65     do {                           \! n( J9 h9 _$ s& F" k& v
66         OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
4 O) p$ s' ?2 U+ P: v9 g# I 67     } while (0)' _. v& x# Z! y- s' c! e* x1 C% K
68 + y9 B0 L6 r" R8 S+ b) v
69 #define LOG_FATAL(format, ...)     \  T7 s" l) [' ], h) G
70     do {                           \0 ^& a  l" l5 ?" m
71         OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
# n1 }' w0 m% p 72         exit(1);                   \. m# V$ b8 H. D8 v! G  e
73     } while (0)
4 ^" H- j. P9 m; @. v 74
7 Q8 p. F6 z, \ 75 /* Assert */  b+ L( O8 D* t# k
76 #define ASSERT(EXP)                \
' @, b* z6 k; Y  B/ i1 R% } 77     do{                            \
6 l8 q0 v0 C" f& T+ l7 i3 k 78         if (!(EXP)) {              \
/ |% a; d  A* U7 X2 ]; M7 F 79             OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ );                  \" s( M- I% k7 {/ C! p9 x8 g
80             exit(1);               \$ _" w: ~/ V+ \
81         }                          \
5 [- r" t% V% ~& H5 p4 }  P" e 82     } while(0)
: ?1 \/ [1 s" n$ c 83 8 D/ E! Y; A$ a
84 #endif
8 p6 A* Y: M* R' y, n
作者: tenny    时间: 2014-12-4 14:03
修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏
  B. f1 L* c" [: d' g
作者: nihao123    时间: 2014-12-4 15:21
tenny 发表于 2014-12-4 14:03
" @2 e8 t3 l& K; X- K* _$ i; @修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏
9 v9 Y2 O' r1 R! j. Z' E
你好,是arm这一端的app: x' _! {1 f( {, w& m1 ~6 U3 `

作者: nihao123    时间: 2014-12-4 15:40
tenny 发表于 2014-12-4 14:034 g2 J- g& U) k( L! K7 y: @
修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏
2 w: x7 g! _  @  H  l+ ?& ]! s
你好,你是不是将host/app下的log.h和dsp/driver下的log.h和到一块啦,怎么说下你的思路
* c/ z2 I4 h$ |- k" k* d0 H
作者: tenny    时间: 2014-12-4 15:59
arm 端的 log 并没有用到 uart1& a# H3 C5 M0 j/ r+ u
dsp 端的 log 才使用了 uart1& t; }' u) V8 m2 h& j  Y
所以,你需要也只需要修改的是 dsp 子工程的 log.h(新版本的代码 是在 dsp/app/log.h,旧的是在 dsp/driver/log.h)$ [( a: N% ?& l; u

作者: nihao123    时间: 2014-12-4 17:19
tenny 发表于 2014-12-4 15:593 m# o+ a$ h0 L4 `
arm 端的 log 并没有用到 uart1$ F  k- Z$ h  g+ y+ j7 ^
dsp 端的 log 才使用了 uart1
4 f0 ?- S: V! U# T所以,你需要也只需要修改的是 dsp 子工程的  ...
" Q: B! H: ~6 ^6 Z( [3 \  m
那我是不是将你贴出的那段代码,替换DSP/driver下的log.h就可以是吧,
1 W! Y4 g. V. ?7 ^# ^9 Y5 o然后将#define OUTPUT_TO_UART1 1 换成5 w/ E7 U" V  E
#define OUTPUT_TO_UART1 0
9 {1 l9 L* b7 q' {) Q( _2 Q0 R/ y  是不是这样4 T+ y8 f4 R* \) p- r7 Y+ H$ P

2 n! D+ @* m2 B2 P
* }/ I+ X8 `+ b& S$ R6 f! e6 E2 z* A: m" U% Y  P4 h( R' i

作者: tenny    时间: 2014-12-5 09:25
2 i! H2 |3 b1 p0 I0 d





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