嵌入式开发者社区

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

作者: nihao123    时间: 2014-12-4 11:08
标题: 请问怎样可以解除DSP端输出信息对占用串口1的占用
你好我现在用的你们的omapl138开发板,跑的双核通信的程序,我现在需要通过串口一向外部发信息,但是串口一被DSP占用了,我怎样才能解除DSP占用呢" a0 Z2 i; L' c8 r4 S

% F3 {" t) z" t+ _
4 G0 i5 R; |$ m: o* b" O, |# N8 @谢谢+ K$ ^' p6 z- i3 D/ R4 Z

9 V1 |0 D2 d7 H/ x: I0 d  Q& j# B
/ n( A; D" V8 v3 ~6 S
作者: tenny    时间: 2014-12-4 14:01
  1 #ifndef _LOG_H_
- _4 F" e8 f, W& p9 g* q# z  2 #define _LOG_H_5 T" R+ S- w* H% h
  3 9 d6 c0 \% |8 D; i5 s
  4 /* 0: printf; 1: UART1 */
7 M9 b- W* V; ?0 o9 T: b! u  5 #define OUTPUT_TO_UART1 1) a" j" n, x0 `3 G7 l
  6 ; ]  D" P3 m; k
  7 /* Switch Log Output */
' m5 n5 [: @$ p+ E  8 #if OUTPUT_TO_UART1: a9 ^  p: L' j4 ]5 P
  9     /* For UART1 Initial */. V. F3 e! q# G: N: R' t$ f0 `+ J
10     #include <stdlib.h>4 W& [0 L& Z. F- J
11     #include "hw_types.h"  + k- v; r9 n) D- e3 ?9 j- P
12     #include "hw_syscfg0_C6748.h"
+ g3 o$ x" p. v6 ~3 l( [, u 13     #include "soc_C6748.h": y' ^+ J: x8 Y" z3 j+ f) |
14     #include "psc.h"               & A! [. ~4 y2 B4 \: ?- {. x
15     #include "gpio.h"               8 t2 n" x/ M; Q+ g
16     #include "uart.h"" h# t' G+ y2 M9 g9 {9 b3 K
17     #include "uartStdio.h"
- B+ O9 x+ G1 \! s& Q& E; a+ t 18   u7 H' s, I6 Y* Y3 D
19     #define OUTPUT UARTprintf
+ j4 ]8 T! t5 @1 S+ u( D% G 20 #else
0 O" I/ I. B) n+ z8 b# Z; C 21     #include <stdio.h>
+ `! |7 C0 {3 ~ 22     #include <stdbool.h>5 S- @6 ~- W0 ^% O9 T
23
& C8 p. Q+ s0 B5 t6 X% I6 Y 24     #define OUTPUT printf% I/ D- g' ^- X2 x$ u
25 #endif: `( `/ ?* C9 y( D4 H/ k  B
26 " n  F7 S. G7 l( ]+ Y7 \
27 /* Log init */
) [, k  P& a; w: W* o* _ 28 #if OUTPUT_TO_UART1+ D* W6 ^, `! b, U
29     #define LOG_INIT() do {                                     \
0 V5 q. \# f. h2 b 30         PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO,           \4 c/ X3 O# S/ N  \6 {
31                          PSC_POWERDOMAIN_ALWAYS_ON,             \7 ]8 r# V+ f* m$ ]- w) D
32                          PSC_MDCTL_NEXT_ENABLE);                \( K" M0 H3 r- a" ]; m9 v2 j
33         GPIOBank6Pin12PinMuxSetup();                            \9 S+ w4 x1 R* S4 L
34         GPIOBank6Pin13PinMuxSetup();                            \- A! d; P5 a1 j2 E0 J' s7 \& q
35         GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT);  \3 a  I/ |5 P/ |8 z
36         GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT);  \
. c' ~* P6 |3 g# ` 37         UARTStdioInit();                                        \
% n) N& g" [( f: ^$ _' H4 W 38     } while (0)
# R6 e& f1 x1 k& f% ] 39 #else
0 z' l" q/ S! e# Z8 m5 I. g 40     #define LOG_INIT() do { } while (0)
7 f9 ?- u: |4 b, ~2 w 41 #endif  N- R& p3 ~+ i! O8 j  f7 B
42
; N; p" R% `/ F5 {- |" Y 43 /* Log Output */, z* P5 N6 E# W2 L, W, V7 X
44 #define LOG_INFO(format, ...)      \& x. s- B5 A* h4 |8 p" Q! f3 C* i# k
45     do {                           \- V) b( o- J4 O3 k3 F- s6 _
46         OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \0 r$ n3 s" {# V6 p' B4 x& [) d) w
47     } while (0)
. ~. y' S* p/ b7 s9 B8 |# R# T: B 48
1 m, Q' y# p# w  I6 Y 49 #define LOG_ERROR(format, ...)     \; c7 J/ Z# N& ]/ c
50     do {                           \3 p, z8 K# J* h* A/ F
51         OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \8 D# |; I; \+ \/ O+ j; `
52     } while (0)& I, s' B9 a" F6 W2 s
53
8 H. w) z. C7 C7 g3 b: l5 t0 w 54 #define LOG_DEBUG(format, ...)     \/ Z: V' V5 Q9 M. ?8 X
55     do {                           \
5 z# a; N+ }8 ^( Z& | 56         OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
2 ]- N1 g6 H$ {: g 57     } while (0)* E9 P' a# C) h9 M7 ]5 c6 d
58 3 B. d& o1 w+ r7 D+ B- V& U! G8 [
59 #define LOG_WARN(format, ...)      \3 @2 i* s/ ^8 q. q0 q4 B- u
60     do {                           \" N* J6 J2 U. k% p9 W3 ~
61         OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
. d2 g7 N7 S; S0 T! o 62     } while (0)
8 W# q9 w0 K  W 63 : {3 J$ y- f7 D& g# h
64 #define LOG_TRACE(format, ...)     \- A8 Q& m/ q  P4 l, x2 K- ^( K
65     do {                           \! \& ?, o+ \% K+ k/ p  c
66         OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \6 T5 `+ r8 o3 d9 p4 K
67     } while (0)
( k6 y7 D  `7 l7 O 68 ! b. s: S1 N8 @; }, \; N
69 #define LOG_FATAL(format, ...)     \* D) x- A9 ]% Y. [' P. l$ l
70     do {                           \
! E! X8 X/ ?* v9 P) }/ a 71         OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
- F. ?' O8 G: V2 k( M8 d3 n 72         exit(1);                   \; |: V5 J: A* B% q/ c
73     } while (0)
6 d0 J9 q! w+ Q& @; n 74
. x$ N$ ^- {$ q! H" N3 o# k 75 /* Assert */
1 |) J, a1 s3 u' s: C) X7 f) e 76 #define ASSERT(EXP)                \8 M" O# Y, u& B8 n* o
77     do{                            \
, E  k& f, a" @% ~& n2 |4 y: Q 78         if (!(EXP)) {              \7 d% K& |! r6 f+ W7 M
79             OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ );                  \
/ a) S4 ?# {. a9 p- P. k, W& v 80             exit(1);               \
. r& f! I) y  c, f0 j 81         }                          \7 G( s$ r' Q, b9 j5 K
82     } while(0)2 d# y$ p( h- [! U. |8 ]9 o2 q
83
1 E7 y% k- e$ m% ] 84 #endif0 P4 r$ [, ]# a; O! q( F

作者: tenny    时间: 2014-12-4 14:03
修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏! y8 Z3 h! \# @5 a& r3 E; h3 f

作者: nihao123    时间: 2014-12-4 15:21
tenny 发表于 2014-12-4 14:03, J# J0 g$ a$ l" M4 j
修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏
8 d9 a" g' j/ A7 `1 h& H
你好,是arm这一端的app
3 s; J8 H6 Y) O5 _6 ~" E7 L) H0 Z8 y
作者: nihao123    时间: 2014-12-4 15:40
tenny 发表于 2014-12-4 14:03
4 f% A8 n9 \4 Y9 o' a. U9 h修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏
& x, L. Y6 t% m# {# O$ W% L
你好,你是不是将host/app下的log.h和dsp/driver下的log.h和到一块啦,怎么说下你的思路: l, y+ c7 Z9 `  a

作者: tenny    时间: 2014-12-4 15:59
arm 端的 log 并没有用到 uart19 T6 Y9 k$ [, u) F4 s
dsp 端的 log 才使用了 uart1
4 d" J; ^; D+ l1 c所以,你需要也只需要修改的是 dsp 子工程的 log.h(新版本的代码 是在 dsp/app/log.h,旧的是在 dsp/driver/log.h)# K; H0 u$ M! T* i9 t: C

作者: nihao123    时间: 2014-12-4 17:19
tenny 发表于 2014-12-4 15:59
- M1 {5 \9 y. b* S3 Earm 端的 log 并没有用到 uart19 X( Q* B' j& W$ [
dsp 端的 log 才使用了 uart1/ E6 V+ {) |, t# Q$ R3 X
所以,你需要也只需要修改的是 dsp 子工程的  ...

. y; H& r5 Z( w, s3 y; G/ |那我是不是将你贴出的那段代码,替换DSP/driver下的log.h就可以是吧,
9 E8 x; d- L  C$ b然后将#define OUTPUT_TO_UART1 1 换成
+ \' ]' A6 Y+ v#define OUTPUT_TO_UART1 0
* G+ d% i7 H$ z  是不是这样
- A* Y) U# k7 Y8 K  M' L7 r. b5 B2 A9 c/ Q, F- X
2 V& o" }4 D, N# C
* R' J. L2 t* M) a

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

+ h  ]$ a3 w. X, D; D0 k# b; F2 t




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