嵌入式开发者社区

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

作者: nihao123    时间: 2014-12-4 11:08
标题: 请问怎样可以解除DSP端输出信息对占用串口1的占用
你好我现在用的你们的omapl138开发板,跑的双核通信的程序,我现在需要通过串口一向外部发信息,但是串口一被DSP占用了,我怎样才能解除DSP占用呢: |7 V0 d( S/ o+ r  u  L

0 W9 o$ \, v7 c5 e& B" Y
0 g: n6 D9 U" R, k4 X0 M  O2 a谢谢
8 i7 i2 h) K5 w( n" O& a. c
) e' ]( O4 ]$ I, b0 ]
1 T7 u6 A5 I& K( j, i# ^7 ?% F
作者: tenny    时间: 2014-12-4 14:01
  1 #ifndef _LOG_H_3 n+ R, W, r( l. k
  2 #define _LOG_H_8 Y8 M. f$ r% K  w/ F& M1 Z4 z
  3 + |. s  S: w4 n' o2 ]' N. K
  4 /* 0: printf; 1: UART1 */
8 V8 B; d) |# }6 K4 s+ ]1 X  5 #define OUTPUT_TO_UART1 1
: K" O+ H/ R9 B; c/ f- H
  6
$ M( \% G5 s: |1 z( G9 g  7 /* Switch Log Output */& S2 x' `; f9 I5 V9 W! t6 K
  8 #if OUTPUT_TO_UART14 R% Z0 o7 l" b8 \: ]0 V
  9     /* For UART1 Initial */( {; G+ Z5 i, M% A( f
10     #include <stdlib.h>3 P& E% R$ D8 j% v# D
11     #include "hw_types.h"  3 c3 e: \& p' J* d6 a" n# m( G
12     #include "hw_syscfg0_C6748.h"6 [5 T  r9 ]0 \1 `' G
13     #include "soc_C6748.h"+ h* w4 }# c9 w- N
14     #include "psc.h"               ! n" D% `& v" T" A
15     #include "gpio.h"               ; b5 E7 u; a1 w( D, C
16     #include "uart.h"
! k( u8 Q  m( O* A4 w: c9 ~ 17     #include "uartStdio.h": @- C; I( d5 y5 j
18 & j6 [# G; ]9 i; s% [% b- \
19     #define OUTPUT UARTprintf
. u7 b$ f& d2 [; \% o7 ?" Z' m 20 #else
% v; g' b+ }% k2 j4 K# T# ` 21     #include <stdio.h>: a" D+ P( p$ d9 {
22     #include <stdbool.h>7 i; L2 X$ z. ]- t2 l# U+ Z) j
23
; C% _0 p% b3 A; }) a% ] 24     #define OUTPUT printf9 [0 k% K/ T5 Z, q1 n" x7 z
25 #endif* h4 o' C0 ^" S3 e7 {) {- k
26
; z; |1 k7 k! b* h7 O- U 27 /* Log init */
! W: Q6 t8 y5 y0 z& W' M/ J 28 #if OUTPUT_TO_UART1( f1 O9 T6 W0 c
29     #define LOG_INIT() do {                                     \4 W7 F) Z8 J& }6 M8 g8 N: k
30         PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO,           \8 m. ?  l  ^" H) O( y  @7 D6 Z
31                          PSC_POWERDOMAIN_ALWAYS_ON,             \
( l. W- u- a- ?$ X2 J* }, A 32                          PSC_MDCTL_NEXT_ENABLE);                \
, b' j/ l5 h( u; ]1 R$ F 33         GPIOBank6Pin12PinMuxSetup();                            \
9 b! J1 N2 L' G$ [/ T 34         GPIOBank6Pin13PinMuxSetup();                            \
% B) d2 J* x* [, z% J; ^ 35         GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT);  \7 {$ f; B1 f+ \+ o$ U
36         GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT);  \: g# ~: k4 m4 J: R  ?" n
37         UARTStdioInit();                                        \5 q( y2 g& ^5 c  q8 B- J
38     } while (0)
0 X, @8 B1 `% f; K- `+ T, m 39 #else
2 {  v! D/ A: O 40     #define LOG_INIT() do { } while (0)
. q, g1 X4 V; \0 m3 `3 ^; z, u3 d2 U 41 #endif
1 A  A' H$ y% K) h4 v& V8 S 42 5 ~5 V& X/ _% i1 q2 j/ f1 ?+ N4 t* k
43 /* Log Output */2 }, n5 ~, E2 w3 m; f; t" \) R
44 #define LOG_INFO(format, ...)      \
' ?; T4 x* R* X 45     do {                           \( L# y: h6 I7 `( D" ^; a2 c1 h) D/ L
46         OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \8 E7 W0 K4 w$ F0 N
47     } while (0)# ~/ y3 S9 j. e+ H
48 1 O/ Q5 Y, W' f6 _% M8 q9 f; m* |
49 #define LOG_ERROR(format, ...)     \7 a0 D1 J( O2 K% T' P
50     do {                           \, q2 W2 m4 B; D, M& B
51         OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
. l& |# e. x6 r% \# E0 Y  r 52     } while (0)
9 @. N" K$ C* ^& ?6 { 53 : e& Q5 H+ }5 e$ g4 J
54 #define LOG_DEBUG(format, ...)     \9 m1 z6 S, i" P6 \
55     do {                           \; p" `; Y9 b& c  p' e
56         OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
4 Y% I& z, b" K* o  C 57     } while (0)
* U/ s0 j  d$ p2 G! h9 `. y1 } 58
% Z" W% h! e! ?5 v 59 #define LOG_WARN(format, ...)      \/ ]# Y0 p7 F3 t9 R$ B
60     do {                           \! S; g3 u, x- s; `  a8 ~
61         OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
* C; r7 [1 N- i, r. u 62     } while (0), V' Q- h! ?5 s) r3 I) E' L" ]+ f
63
, j, X- Y4 p7 e0 i! \# ^ 64 #define LOG_TRACE(format, ...)     \
. e- ^; D8 H* ~& f) }/ Y6 P 65     do {                           \& ~+ z4 z) V" f5 |! W
66         OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \( x; |0 b' `& a2 ~
67     } while (0)
* J0 r9 k( p' s! p% k 68 ) c( V) ~4 O4 d) [5 ^; f" m5 c1 C
69 #define LOG_FATAL(format, ...)     \# A: a7 c* C4 z) }% u; k8 ]) ]
70     do {                           \
# Y$ Q# k7 v1 L" P* ^( |' s 71         OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \5 j; A$ T5 t. g; X, k( J
72         exit(1);                   \
2 U9 I3 }8 \, _5 [7 B 73     } while (0)
% |2 i' D8 X. H% `7 q 74
# F. r+ F. ]' d! t, t  f 75 /* Assert */  X; c* a9 g* s) g' {/ P
76 #define ASSERT(EXP)                \+ y9 |- f" E# A& O# Y
77     do{                            \
5 V5 Z3 \4 ]5 h3 L5 m 78         if (!(EXP)) {              \
" V0 Q- D# y4 R( @1 k 79             OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ );                  \( O# ^) a" |1 H; x; H8 y4 d* i
80             exit(1);               \  _* ~, t& k' a9 ?) D
81         }                          \
& F9 S5 T4 X6 E; Y# _& G6 E7 } 82     } while(0)
: E: }, ]7 j4 ~) S  a9 t1 [4 `' U7 ~ 83 8 @, Q4 |, ~$ p0 V' m1 o
84 #endif
$ Y0 y5 o0 ^$ w
作者: tenny    时间: 2014-12-4 14:03
修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏% C( Z, \! J( E- w" O8 l+ o/ |5 L& @

作者: nihao123    时间: 2014-12-4 15:21
tenny 发表于 2014-12-4 14:03
% ]5 y9 k% ^# A/ M$ f* O' u* u# C修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏
* z. C  |# W4 U+ o7 H
你好,是arm这一端的app
* J7 @) [2 ^. T  N
作者: nihao123    时间: 2014-12-4 15:40
tenny 发表于 2014-12-4 14:03" t1 i( H8 Z7 ]' `" d
修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏
$ `% u" P& K" V9 Q
你好,你是不是将host/app下的log.h和dsp/driver下的log.h和到一块啦,怎么说下你的思路
4 f+ e6 \) m0 ?: q9 G. k4 L
作者: tenny    时间: 2014-12-4 15:59
arm 端的 log 并没有用到 uart1
4 I3 f8 U0 r& k6 K' @dsp 端的 log 才使用了 uart10 r; A' \5 j6 W/ Z1 `  s! g# k5 F
所以,你需要也只需要修改的是 dsp 子工程的 log.h(新版本的代码 是在 dsp/app/log.h,旧的是在 dsp/driver/log.h)% g/ Z- ]& S7 T) }* Z! P2 a

作者: nihao123    时间: 2014-12-4 17:19
tenny 发表于 2014-12-4 15:59# R9 m; d1 i$ F2 x: K, o$ p3 k
arm 端的 log 并没有用到 uart1
. q, b9 g$ Y+ ]" _$ Kdsp 端的 log 才使用了 uart1
3 V7 [- ?5 i. l% p( x) E所以,你需要也只需要修改的是 dsp 子工程的  ...

! v- Y9 i8 h) W; J2 n: y那我是不是将你贴出的那段代码,替换DSP/driver下的log.h就可以是吧,
: A( R$ i$ n4 W; b: c然后将#define OUTPUT_TO_UART1 1 换成
/ y; }! j; R/ ]/ N% b* U#define OUTPUT_TO_UART1 0
3 z5 A) ~5 p" y  是不是这样
! r- ^* Q3 E) Z. @$ Q) s5 F6 V, x+ N. B6 S% S; w& l! R/ E! h6 w

  X, P6 b2 }6 l9 ~' y- M5 l. }! k+ t$ i9 h

作者: tenny    时间: 2014-12-5 09:25

/ y' `4 K! \2 `4 b' Y% ?9 S" Q




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