嵌入式开发者社区

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

作者: nihao123    时间: 2014-12-4 11:08
标题: 请问怎样可以解除DSP端输出信息对占用串口1的占用
你好我现在用的你们的omapl138开发板,跑的双核通信的程序,我现在需要通过串口一向外部发信息,但是串口一被DSP占用了,我怎样才能解除DSP占用呢# H5 u# q9 @; \% c0 f: g: o( s/ @: N

, `. b8 ^1 z- l4 p) W# c. O/ a' e+ a& m
谢谢
$ D3 W9 ^$ p+ j. O+ e/ W; v# |1 B( E3 v! L& f
- j8 R4 R, S5 j+ ]# f7 V" |

作者: tenny    时间: 2014-12-4 14:01
  1 #ifndef _LOG_H_
! y1 C7 y. @! f+ k! q- G  2 #define _LOG_H_
  {# W- T) w* Y* F8 @& f  K! u  3 , a- Y" i/ A+ b- j% }
  4 /* 0: printf; 1: UART1 */
4 C! ^4 R8 W& p$ W& e1 p  5 #define OUTPUT_TO_UART1 1
4 h8 Z3 s7 U+ `& A& J
  6 / o7 J6 H# S5 ^
  7 /* Switch Log Output */
, X& P& Y9 j, N; B- E  8 #if OUTPUT_TO_UART1
7 y9 A; o5 T3 ~7 N. W) ?& m  9     /* For UART1 Initial */
) n: [3 ]5 E# _* L% J 10     #include <stdlib.h>
8 S1 _/ |8 h+ l6 C 11     #include "hw_types.h"  9 A0 Y! Q2 t* g! Q
12     #include "hw_syscfg0_C6748.h"
' K7 u( `% S. Y5 t 13     #include "soc_C6748.h"
! l" Z5 G: Y0 @; w" y& _ 14     #include "psc.h"               ' ?( J* G3 D# d; n6 _# I4 O
15     #include "gpio.h"               
  P9 D2 Z( @2 S/ n- A' ~- r 16     #include "uart.h"3 t" o& y" H5 Y
17     #include "uartStdio.h"
+ Y1 c% r! G7 [  i5 G) L 18
* h- l, J5 @0 F) { 19     #define OUTPUT UARTprintf$ ^* M8 n/ C3 H6 ^% C! L! `  _
20 #else
& z, g) S+ |3 R, Y9 ^2 ] 21     #include <stdio.h>
. k' x' i- D' Z! |* D# R1 Y 22     #include <stdbool.h>4 L  \( J7 B/ |6 b  N0 N
23
- N6 z% s, O. Q- J: d$ i. O6 J* {$ p 24     #define OUTPUT printf
5 t" O  t- D2 ~, o' e 25 #endif
5 P  |2 k/ Z* `+ T3 z! H7 i0 x9 w+ p 26
8 t% x& k: X1 A5 [; `5 v# }  Z 27 /* Log init */
4 O1 `7 R1 I- b% p( \1 n 28 #if OUTPUT_TO_UART1
5 ]8 V4 ^9 @6 ]6 k% m' l 29     #define LOG_INIT() do {                                     \; M( B$ a" [1 b
30         PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO,           \
* p* x* J2 W: P 31                          PSC_POWERDOMAIN_ALWAYS_ON,             \# Y5 G, d% k2 b3 w, D
32                          PSC_MDCTL_NEXT_ENABLE);                \8 h& F, y* J6 y! G) j* K" p
33         GPIOBank6Pin12PinMuxSetup();                            \
6 S$ P) Z+ K  e( X. K: X; ^ 34         GPIOBank6Pin13PinMuxSetup();                            \7 I* H9 G$ x6 N. M5 R" ]$ p
35         GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT);  \$ a! K8 j& h# q" |; H, |
36         GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT);  \
! r# R; S1 ]& I3 ` 37         UARTStdioInit();                                        \8 t( |3 U/ c: X
38     } while (0)5 \4 T% j& [8 Q' |
39 #else0 w, `$ J6 |+ d  g7 }
40     #define LOG_INIT() do { } while (0)
& v, _" X$ S& X) F 41 #endif2 k: G& s' Y1 ?& [
42 ' B# c6 Q4 o" L% B: e! D
43 /* Log Output */! j2 h9 d' c# k4 X; F  U
44 #define LOG_INFO(format, ...)      \
. ]9 O' L3 A6 X& B; w! H' R 45     do {                           \
5 m$ i$ B1 _1 |1 V) r2 H 46         OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
" S- ?  Y. w/ z0 w, D8 {8 g  ]/ u# n 47     } while (0)+ w1 X+ ~$ b3 h! N/ m% g" N/ W
48
8 `/ T* Q/ @/ j3 [4 E 49 #define LOG_ERROR(format, ...)     \
1 V+ p/ p- @) ?( t( y! X  | 50     do {                           \* u; A; f0 ?, h( c% A+ f
51         OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
1 w/ ]2 f0 ]6 ?4 d$ H 52     } while (0), J/ t0 F4 N4 T$ x  D
53
" w2 g; e& M# k" a6 @0 Z 54 #define LOG_DEBUG(format, ...)     \
# D% G5 u, j! J 55     do {                           \2 ]! Z+ e0 C! _, D( y/ x8 r) }; {4 J
56         OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \* }; z+ S8 O1 Y
57     } while (0)
+ D- g" F' n3 T' Q& E& J3 | 58
, E5 L/ ?. k/ m 59 #define LOG_WARN(format, ...)      \8 @" D: L' ^- {$ h7 s: X
60     do {                           \6 q0 O4 k( [' `, F3 ?$ h! `
61         OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
; |" c9 V6 Q3 Q( u1 x 62     } while (0)  ]5 ~2 O$ R% s0 A& M  e
63 % P; U; L# P% P8 \2 d9 U
64 #define LOG_TRACE(format, ...)     \, l2 {4 |6 k% _
65     do {                           \
; F8 W5 y  M& j 66         OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \+ I  M+ D! c2 J" r9 E8 u
67     } while (0)2 U- c( G, L- `8 C
68
# x, O0 E  v! T 69 #define LOG_FATAL(format, ...)     \4 `2 W9 u" B( V; C5 g* t6 V8 q3 c
70     do {                           \7 m! K- A6 I3 l" J! |( H6 u
71         OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
; x) j5 G: Z: H) } 72         exit(1);                   \5 w: o" N/ a1 |6 A& R. g
73     } while (0)
- u+ t& G5 T, `* m" T 74 ( ~1 e+ Z6 I! z
75 /* Assert */- |% n% O) a: j# S* K5 j' E8 J7 m
76 #define ASSERT(EXP)                \0 v& d" K; u4 g1 R. n1 z5 Q
77     do{                            \3 T+ C# u/ ^+ z: O, u
78         if (!(EXP)) {              \4 j5 E* V( Q+ R- S0 @) |  _
79             OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ );                  \
1 g& k5 Z8 D0 }( B+ p! T 80             exit(1);               \
7 D; U' ]" f& `( S 81         }                          \6 ]% c  l/ I  O1 l  u) S
82     } while(0)
+ t$ j, r9 Q7 Q7 |) C! { 83
7 u' }) p" P% T& b 84 #endif! w, }7 }5 _5 v! x- c! }' r2 q

作者: tenny    时间: 2014-12-4 14:03
修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏
# t) B6 `9 ^9 I9 {) i
作者: nihao123    时间: 2014-12-4 15:21
tenny 发表于 2014-12-4 14:03
4 K) M. _" ], s- i% [' a& y3 b修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏
) r' P2 x, p' a9 `5 K
你好,是arm这一端的app
+ M& o" J# x1 i8 n# i& |
作者: nihao123    时间: 2014-12-4 15:40
tenny 发表于 2014-12-4 14:03
& t; n# M: b( T& d# o/ s* O修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏
: }0 l3 C+ |4 e0 c) k
你好,你是不是将host/app下的log.h和dsp/driver下的log.h和到一块啦,怎么说下你的思路7 v8 ?. q7 U2 T3 C$ C

作者: tenny    时间: 2014-12-4 15:59
arm 端的 log 并没有用到 uart1
$ x6 q/ P8 @2 ?3 D1 Y% hdsp 端的 log 才使用了 uart1
% w+ f/ n) J9 V5 S5 `" ^所以,你需要也只需要修改的是 dsp 子工程的 log.h(新版本的代码 是在 dsp/app/log.h,旧的是在 dsp/driver/log.h)
+ v6 R: T2 ~/ d; @1 |% _( c: C. p2 [6 A
作者: nihao123    时间: 2014-12-4 17:19
tenny 发表于 2014-12-4 15:59
: D5 {! T- n  _arm 端的 log 并没有用到 uart1
8 C% N3 g# H4 J$ rdsp 端的 log 才使用了 uart11 n* {- x; r1 k1 b; A, z# f$ b
所以,你需要也只需要修改的是 dsp 子工程的  ...
7 Z$ q. b! Q* |+ w) z& X
那我是不是将你贴出的那段代码,替换DSP/driver下的log.h就可以是吧,4 O3 R% D! w5 g. C- B
然后将#define OUTPUT_TO_UART1 1 换成. b6 r5 Y  Y. V6 j
#define OUTPUT_TO_UART1 0- L+ T+ P# L8 J% z  f, }4 X
  是不是这样
& x4 r( l% A8 e" P* v0 N4 A" `* j6 h. p: w2 m
, U% _0 x! S, d5 D6 `6 o: P$ L
, l( u( j9 S) E7 s

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

& |( b  w$ `; q9 v) R3 M




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