嵌入式开发者社区

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

作者: nihao123    时间: 2014-12-4 11:08
标题: 请问怎样可以解除DSP端输出信息对占用串口1的占用
你好我现在用的你们的omapl138开发板,跑的双核通信的程序,我现在需要通过串口一向外部发信息,但是串口一被DSP占用了,我怎样才能解除DSP占用呢+ K! y; a) V9 U- ?. [9 ^+ S

2 c6 y5 Z& P' H0 T0 [, E. o) p, B3 k
谢谢
( H  C- V: R0 H6 A& ]
' u9 T" k! S# |, {6 Z6 H8 v' k, ?& b9 R4 U* g6 {' R

作者: tenny    时间: 2014-12-4 14:01
  1 #ifndef _LOG_H_
9 Q8 X( T; J( d. s& g5 W  2 #define _LOG_H_- N, |9 B4 s8 V5 h- {
  3
% J! g; e8 n" E) c2 a  4 /* 0: printf; 1: UART1 */9 n) s3 n' T+ `% C0 w/ e3 h2 b
  5 #define OUTPUT_TO_UART1 1" _" {. f/ R# I+ C$ g& ^
  6 5 M1 L4 n! D- _  ^5 [' Q  M7 \
  7 /* Switch Log Output */
: H+ G, I, O$ K0 c( y  m  8 #if OUTPUT_TO_UART1) a( u$ e1 U) U4 Z' d- b- E
  9     /* For UART1 Initial *// n* p( x1 K# I8 u
10     #include <stdlib.h>1 M$ q5 h/ L' A, B  D
11     #include "hw_types.h"  ( c' ]( R* j- N0 [3 Q
12     #include "hw_syscfg0_C6748.h"/ k- H8 Q% x9 t3 [8 H7 F! ^& K
13     #include "soc_C6748.h"
+ X8 h; K. _& |% i/ [ 14     #include "psc.h"               
7 e" x7 z% y1 y- F' k. t% u 15     #include "gpio.h"               5 q: A% I, ^" ^
16     #include "uart.h"
7 V7 [/ }# E# E# f. q4 i 17     #include "uartStdio.h"
- E4 P2 X7 g5 E* S2 l- G9 c 18
/ ^" u* }$ _4 @) l 19     #define OUTPUT UARTprintf
: h* P  p: H/ V8 _: l, e4 V 20 #else
6 p& n  n( t- ]1 Z( N! I9 S 21     #include <stdio.h>
- w- x4 [# p/ m* S3 i7 @. D' Z) t- g 22     #include <stdbool.h># X$ d' D( p" q) D
23
4 m/ s' i8 D% o! f2 | 24     #define OUTPUT printf; O" F' ^6 l5 L& O
25 #endif6 w6 a9 W# N1 x. R' p8 g, Z
26
7 e* |/ F% v( k! L# z; ]8 `* U3 ` 27 /* Log init */; l% l/ K9 W, X  L6 B. C' @
28 #if OUTPUT_TO_UART1
( x# d0 K4 w- ^6 X 29     #define LOG_INIT() do {                                     \
& o- \# r: D; w6 ~+ S4 ~ 30         PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO,           \
) z1 U) Q0 _: {% ` 31                          PSC_POWERDOMAIN_ALWAYS_ON,             \8 ^: v& W0 z  ^% y
32                          PSC_MDCTL_NEXT_ENABLE);                \
8 ?4 F4 _* g& l# E8 x8 R 33         GPIOBank6Pin12PinMuxSetup();                            \; W& D  y/ \1 q  w" g: ?
34         GPIOBank6Pin13PinMuxSetup();                            \4 K$ k7 \- L$ ?& @0 f
35         GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT);  \
) _+ D. z* ^$ F 36         GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT);  \
6 X* r& [8 i* b( X/ J$ ~ 37         UARTStdioInit();                                        \# J% p, K& D- p  p% i5 a
38     } while (0)
$ H  ?* @# I8 X 39 #else
4 O/ d9 T, l. _5 N3 s, f3 ~ 40     #define LOG_INIT() do { } while (0)
, B; O) P  s  \- F% I' i 41 #endif
9 F. Q9 p3 h. w/ N) p8 d" N+ Y 42 + C+ @2 \; u8 L
43 /* Log Output */
/ p" a8 W4 F7 b' x 44 #define LOG_INFO(format, ...)      \
/ t: W$ Z  n7 r 45     do {                           \- _0 ]% `1 Y' C: n+ L1 U9 {
46         OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
6 o# k" D, f% N2 I( m 47     } while (0): f: q# h+ ~1 f
48 # A: r1 G5 W/ B9 n* V: w+ b+ _" I
49 #define LOG_ERROR(format, ...)     \* z- J: u1 _! A$ s# S9 T8 P
50     do {                           \
& D- Z  ^' h# o& k7 b 51         OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \0 A3 h; i/ F( i0 W3 F# K
52     } while (0)5 j. t) ?4 v! x9 c* Z
53
6 A  b/ n/ O' y9 I! ?9 V# b 54 #define LOG_DEBUG(format, ...)     \
% N8 B9 M4 I8 }3 J+ c 55     do {                           \  F; t  b# c9 E% u- C, q
56         OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
) V) i: K$ O' k% s/ p% D 57     } while (0)7 V' s5 J- \. o
58
' h1 F0 A9 j# V0 n 59 #define LOG_WARN(format, ...)      \  r; |% B8 b1 U$ F7 [
60     do {                           \
0 n. [) o- k, o4 F  X 61         OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
7 X" [. f1 }/ G& m 62     } while (0)
5 q& j  `; V4 ?/ t" L5 _+ s/ Q 63 . W8 n! ?/ x2 j; A1 v0 t/ ?
64 #define LOG_TRACE(format, ...)     \7 I: v' I6 \. O" j# V( ~
65     do {                           \
2 n9 f% ~& z0 z5 U: o+ L# P 66         OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \$ n: i. [3 X* L$ m# ?. H# b
67     } while (0)
8 N0 l# a# y! b4 C; `# m 68 . J. L7 H) f: B& s  x* Z7 p
69 #define LOG_FATAL(format, ...)     \9 A9 ^* V* u8 |( q
70     do {                           \
$ V/ E- G/ w7 e7 k( j 71         OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \& U- p% S2 Z# ^, h( Z" }
72         exit(1);                   \
* @# S8 D8 R* f1 n/ x% A 73     } while (0), Z8 l! b9 L8 ^4 Q0 @7 Q* V
74 & ?* c! r4 K# r# t! Z4 J( c( J
75 /* Assert */
% v$ }4 V+ n. i0 S4 d7 G3 F 76 #define ASSERT(EXP)                \
" O2 E3 i! Z( z  p 77     do{                            \) |6 o) r' h0 w8 \) n0 `5 m# M
78         if (!(EXP)) {              \# t" ^8 P9 n( P7 C$ b$ ]
79             OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ );                  \
, u: L/ [; t* N* t 80             exit(1);               \( U6 y5 A5 D$ g5 j3 B4 z: L
81         }                          \( @/ V- B* R9 L9 {' r; B+ w6 U
82     } while(0)) }5 Y$ q& ]9 p! x# @& l! |0 P- z+ u' v
83
$ c" X; ?* _  y% ~3 i' ]2 `6 ^: ~ 84 #endif
( `4 I) M: `. U8 F& |& a# [, [
作者: tenny    时间: 2014-12-4 14:03
修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏- ^8 ^4 J: ^  H/ G& ?/ p

作者: nihao123    时间: 2014-12-4 15:21
tenny 发表于 2014-12-4 14:03
. G8 J1 m; u* U& K修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏
) O1 k! `2 Z% ~, \% y! t
你好,是arm这一端的app- B$ W* ?. l5 ?, L) O% X. f

作者: nihao123    时间: 2014-12-4 15:40
tenny 发表于 2014-12-4 14:031 A" h; s1 W  Y8 T7 {2 H( [
修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏

7 C; }& V2 t, y* v6 x你好,你是不是将host/app下的log.h和dsp/driver下的log.h和到一块啦,怎么说下你的思路9 M3 e( p# q( ?. f# D6 [

作者: tenny    时间: 2014-12-4 15:59
arm 端的 log 并没有用到 uart16 T) z) W! @2 X
dsp 端的 log 才使用了 uart1
/ G8 D6 u  X* f* _+ c, \所以,你需要也只需要修改的是 dsp 子工程的 log.h(新版本的代码 是在 dsp/app/log.h,旧的是在 dsp/driver/log.h): c) n8 C0 N# N' u) }$ z# W

作者: nihao123    时间: 2014-12-4 17:19
tenny 发表于 2014-12-4 15:59& M- l3 K2 F6 X# Y& D
arm 端的 log 并没有用到 uart1& C& O3 @) i: L# g  {
dsp 端的 log 才使用了 uart1
& E# u: g7 r6 M2 \* _5 H# j' z所以,你需要也只需要修改的是 dsp 子工程的  ...

8 M8 L# E+ G" s$ w) ^8 }  h- W" h6 J那我是不是将你贴出的那段代码,替换DSP/driver下的log.h就可以是吧,
8 e# I6 u+ L: A0 E然后将#define OUTPUT_TO_UART1 1 换成. o4 y( c9 `8 {' @# j) l: y
#define OUTPUT_TO_UART1 0/ |. r' h3 V  a/ p. }
  是不是这样0 Y! L4 u  y2 w0 J, j

; @' q% w. b  Q0 {; T
5 w2 v4 j- p1 a# ]. _( a1 f0 D9 I9 Y

作者: tenny    时间: 2014-12-5 09:25
) R9 z0 M6 m6 y* }# K





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