嵌入式开发者社区

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

作者: nihao123    时间: 2014-12-4 11:08
标题: 请问怎样可以解除DSP端输出信息对占用串口1的占用
你好我现在用的你们的omapl138开发板,跑的双核通信的程序,我现在需要通过串口一向外部发信息,但是串口一被DSP占用了,我怎样才能解除DSP占用呢
. h& b9 E" t6 h7 G2 a" c+ j* n
5 f9 m3 [+ q; k2 q
; M7 }/ M% O  ~$ I7 n2 q1 r谢谢4 S: x% E4 ~* L. j  H: y

/ S; Z% H8 p4 ~# n* y# M7 ^
; c' B5 }$ M' b2 a1 G! _
作者: tenny    时间: 2014-12-4 14:01
  1 #ifndef _LOG_H_
6 h- T, U/ [7 D0 i  2 #define _LOG_H_& h- J& U9 a2 }: h
  3
4 k* G! N' S% _0 p& u/ o  4 /* 0: printf; 1: UART1 */
" |+ ^: c; j3 m3 x: H5 H  5 #define OUTPUT_TO_UART1 1
9 m- {6 V/ Z2 S, N! K* I& E
  6 & v( L: ?1 ?4 X( b. v
  7 /* Switch Log Output */# E  }2 {, g/ A, @/ s
  8 #if OUTPUT_TO_UART1
0 l$ ]3 f" l9 g) I- C! C; N  9     /* For UART1 Initial */' Z/ c  H- T+ @, D( T
10     #include <stdlib.h>
, E9 I4 }' r0 g3 k 11     #include "hw_types.h"    l. s8 Q: H5 j: W6 V9 e5 ]
12     #include "hw_syscfg0_C6748.h"
4 E% n0 W: A. j; K# i 13     #include "soc_C6748.h"" X+ X5 \: @' k7 j0 i2 A- v$ H
14     #include "psc.h"               
" H7 R* `1 I  l4 U' D5 Q 15     #include "gpio.h"                 i! a! r- g4 Q, w1 E: g2 \
16     #include "uart.h"
9 W1 O/ j0 W) w2 E2 F9 ? 17     #include "uartStdio.h"6 `7 E$ l0 d# P
18 4 {% w9 q- a4 n1 e4 B+ F
19     #define OUTPUT UARTprintf- j( ]+ C% O$ q: {; ?. t
20 #else3 F4 S: c! r: x# c& h. q
21     #include <stdio.h>( x# }1 W1 v! a) u- H! V$ w
22     #include <stdbool.h>' m2 f% p# z* L
23
8 _( W0 I0 d( D$ I9 U" b 24     #define OUTPUT printf
, S) o1 S, ~, O 25 #endif- f; ]9 p2 D9 t
26
0 j; z, M2 J. f3 B0 P 27 /* Log init */7 i7 h, N5 c- A& F0 A
28 #if OUTPUT_TO_UART1- m4 Y1 b5 M  p% T: l
29     #define LOG_INIT() do {                                     \
: l( R' v1 p4 ~) _* M$ L4 ? 30         PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO,           \
! z& `! a  J2 }2 k7 A 31                          PSC_POWERDOMAIN_ALWAYS_ON,             \6 T3 Z$ J/ u/ a. l" v: f
32                          PSC_MDCTL_NEXT_ENABLE);                \
! e$ x6 Z, X' ]$ q& q0 I 33         GPIOBank6Pin12PinMuxSetup();                            \6 M3 h( @) X# S5 d) T
34         GPIOBank6Pin13PinMuxSetup();                            \
# z! g0 ]0 y$ W 35         GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT);  \
+ ?. U) |5 k" X$ v0 N; p* ]" ? 36         GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT);  \6 b1 e- g2 v- Q5 \8 r
37         UARTStdioInit();                                        \
9 R/ s3 K3 w! ~. \6 |6 h( ?# @ 38     } while (0)
; T4 d: a$ F' a7 E& M0 u7 L 39 #else
  f3 }& A- p$ ]" z& X 40     #define LOG_INIT() do { } while (0)3 `2 \7 o+ }; o& T4 X
41 #endif: c' e/ f1 y; k. Y4 T
42
' @8 T& A; b/ ]: Q# k2 }, F 43 /* Log Output */
  M. k$ c% H3 d( X 44 #define LOG_INFO(format, ...)      \
" }% ~: v: C9 R1 {6 T" c 45     do {                           \' u9 i9 b' N  h" Q. Y8 [. H+ G
46         OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
! B+ p4 R9 t( [% R4 d% E! T 47     } while (0)9 y8 F) [" I7 q: F/ ]% _/ `4 c
48
. w' g3 e) q3 e+ x# x& r1 }6 Z 49 #define LOG_ERROR(format, ...)     \' n/ e4 Y6 N: n
50     do {                           \% ~2 U4 S' E2 U5 d4 m7 |/ \
51         OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
* w1 u) Y" h4 y5 D/ \2 H4 J 52     } while (0)7 j6 _9 V# R4 J+ O- j0 c# _: f
53
) ]3 z8 r- p9 A4 E) y 54 #define LOG_DEBUG(format, ...)     \
/ g+ O. g2 M% l# H: m 55     do {                           \
( ^9 V6 S7 J9 u. S9 ?: j9 p5 | 56         OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
, T- ?% }/ F/ X8 ]% m( s; x3 ^ 57     } while (0)
: U4 g1 l. N9 L 58 % ~. q3 m: T! h
59 #define LOG_WARN(format, ...)      \1 H/ P; Q0 I- u0 Z0 L6 k
60     do {                           \
. }" Q/ i; D+ F7 R 61         OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \4 M4 m% s$ h1 y$ Z& G; X8 V
62     } while (0)' `- s& G& C3 \* x. n6 M/ Z0 i3 v
63 0 ]9 v" P$ P; U1 u/ r2 n+ g
64 #define LOG_TRACE(format, ...)     \/ P, n" n9 m2 h* Q7 W
65     do {                           \* V7 I- B5 r0 x9 p: B" L2 ?; Y/ V. J
66         OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
2 Z& j. m( }5 G: V$ U 67     } while (0); z* h$ E, ^5 n) z  G
68 # [* [+ X' \* s2 _1 M2 M
69 #define LOG_FATAL(format, ...)     \! p" a  G' D7 B8 ]  x; d1 M
70     do {                           \
# g/ M  c* z: f 71         OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \* [) a0 v; F" d& l! r
72         exit(1);                   \, J+ h# D/ b2 l
73     } while (0)
9 l2 u3 U0 _' q& H5 v+ A 74 - X- z  F4 C  o4 ]
75 /* Assert */7 H/ z) b% T/ w1 Q- F; T% `
76 #define ASSERT(EXP)                \8 h, h" J' t1 y/ ~) N
77     do{                            \& ~! a1 ?1 [5 d8 u* P' Q
78         if (!(EXP)) {              \1 w+ L& x% a; u6 w1 g5 Q
79             OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ );                  \
; _! f) m' r3 y2 @  Y 80             exit(1);               \
; H$ f0 X8 Z1 Z6 \& t7 n+ K$ A 81         }                          \
) h6 k7 t3 |5 P+ t 82     } while(0)
9 T6 T( M9 V+ g- U 83 1 R: L% [" j7 Q3 G
84 #endif
6 C; d  `1 G, O# q4 q0 E
作者: tenny    时间: 2014-12-4 14:03
修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏
# F$ ^: D# W4 I0 `' K
作者: nihao123    时间: 2014-12-4 15:21
tenny 发表于 2014-12-4 14:03: p  b# v* N0 `8 m( \- C
修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏

+ g6 b, j" z# ^' n) E& E" b& l你好,是arm这一端的app
" V; G+ c1 F9 K
作者: nihao123    时间: 2014-12-4 15:40
tenny 发表于 2014-12-4 14:03
' n6 o4 }! u4 |& D修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏
+ r3 q: E0 t8 B4 P3 J) g/ `7 S
你好,你是不是将host/app下的log.h和dsp/driver下的log.h和到一块啦,怎么说下你的思路
  H7 |/ e. a% A4 v0 b9 X. {& s" B4 u
作者: tenny    时间: 2014-12-4 15:59
arm 端的 log 并没有用到 uart1
) {) a) Y+ w) E. g0 q  mdsp 端的 log 才使用了 uart1; T, a! E2 v+ E- o
所以,你需要也只需要修改的是 dsp 子工程的 log.h(新版本的代码 是在 dsp/app/log.h,旧的是在 dsp/driver/log.h)3 Z% q+ O( B. ]; k1 M

作者: nihao123    时间: 2014-12-4 17:19
tenny 发表于 2014-12-4 15:59
  h7 l( I, I/ zarm 端的 log 并没有用到 uart1
  e, ?. ^8 z4 d2 qdsp 端的 log 才使用了 uart1
" i% k8 b& X0 e5 N( W  M所以,你需要也只需要修改的是 dsp 子工程的  ...
1 n5 ?; O: E# E+ Q
那我是不是将你贴出的那段代码,替换DSP/driver下的log.h就可以是吧,! v: ]; U9 u3 H! u* u
然后将#define OUTPUT_TO_UART1 1 换成, g) ?5 E  u2 U8 [- Z3 m5 p
#define OUTPUT_TO_UART1 06 r) U9 ?* C7 |+ L* K+ B7 W: ^
  是不是这样! S8 H/ g2 H$ x1 w8 t

3 J- X2 l* [* ~7 w, |$ X, Y' A9 x% n$ U# q( _0 m! h

8 I! U( r+ q# m( u  ^& A2 O
作者: tenny    时间: 2014-12-5 09:25

* z6 F& U0 p, Q2 W- [$ K. I




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