嵌入式开发者社区

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

作者: nihao123    时间: 2014-12-4 11:08
标题: 请问怎样可以解除DSP端输出信息对占用串口1的占用
你好我现在用的你们的omapl138开发板,跑的双核通信的程序,我现在需要通过串口一向外部发信息,但是串口一被DSP占用了,我怎样才能解除DSP占用呢+ f. L7 e) r* {
& J* w9 C6 @/ d/ H  f. r  Q

& D) o& x0 i6 l* W& P+ q4 U谢谢
. q3 Z8 w/ H3 A+ Y2 X- D1 |3 K* f5 f- H+ ^% p  c& |0 D
6 A$ G1 r1 s; o6 R: c$ Q8 P

作者: tenny    时间: 2014-12-4 14:01
  1 #ifndef _LOG_H_, C( i5 O, s) A7 e6 j6 w( o
  2 #define _LOG_H_: t) U! T: I' P
  3 , Z9 W5 l! I$ R6 f; R* l2 |
  4 /* 0: printf; 1: UART1 */
! d: {3 ~& V7 ^( r/ }" [7 h  5 #define OUTPUT_TO_UART1 1
6 |" L# f/ N3 }$ F# r( ^5 ~2 z) W
  6
8 w4 e+ u: o' d% _% |2 Y& @# Y  7 /* Switch Log Output */3 N8 F4 v: @* x" `
  8 #if OUTPUT_TO_UART1- d* H& E% t. g" u! _6 E
  9     /* For UART1 Initial */
$ a3 F1 ~& h8 J3 \ 10     #include <stdlib.h>0 O* _0 C8 Z. B. S
11     #include "hw_types.h"  
1 c1 S, ^' F* A# S+ w 12     #include "hw_syscfg0_C6748.h"# I- Z# ]. c5 Z4 ^/ Z  L* M
13     #include "soc_C6748.h"( w; B3 c2 F% @% l  E, j# Z
14     #include "psc.h"               
0 _% V7 g4 P* y 15     #include "gpio.h"               
+ Y7 x4 y/ n* S3 e' k; g5 x 16     #include "uart.h"
; W+ S7 T1 o- x5 _0 {6 u 17     #include "uartStdio.h"7 @# _; k/ z+ D
18 ) \3 t( k- z9 p, f& x" N2 a
19     #define OUTPUT UARTprintf5 u& p1 g6 A/ ?( C
20 #else& X3 u- z9 t6 `+ z
21     #include <stdio.h>
+ K$ T/ I& |( B$ t 22     #include <stdbool.h>
0 |5 G3 R  ]0 T2 d" T( F; \2 I 23 ) O7 I5 w+ W3 V/ v0 w  w
24     #define OUTPUT printf
6 R/ m" T2 U1 E  e) [. e: v 25 #endif
, \( r6 J+ d# z9 b- {( j! ]* v, G$ p 26
) L/ A+ X8 S0 `' S- t 27 /* Log init */
: K$ {2 c* v0 N5 {! q 28 #if OUTPUT_TO_UART1
6 z' M! @6 T3 C" V6 ^0 G1 p2 |" G) O 29     #define LOG_INIT() do {                                     \
9 ], R) D& V4 g7 ~ 30         PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO,           \
( |$ @3 `% \9 d 31                          PSC_POWERDOMAIN_ALWAYS_ON,             \* W3 F, T2 {+ G* T
32                          PSC_MDCTL_NEXT_ENABLE);                \
% z- g2 w* E# K$ y5 Z+ e 33         GPIOBank6Pin12PinMuxSetup();                            \0 R/ `" S- A* D5 l8 d) r
34         GPIOBank6Pin13PinMuxSetup();                            \
) q) i2 D! O8 D 35         GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT);  \; u* s8 m6 F0 t4 ?8 g
36         GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT);  \; U; ^1 b1 |; E1 i
37         UARTStdioInit();                                        \  B4 M) q# Q# L& Q
38     } while (0)
3 H# F* Y; R. |. r& S5 Z' o 39 #else
4 G  u: f" }& M% p9 a* W 40     #define LOG_INIT() do { } while (0)
' ?* R2 ?6 H8 N 41 #endif: j! d4 Z0 g0 c  b5 O
42 7 y. L" `( Q. c
43 /* Log Output */
6 \7 \' t: y3 g1 E 44 #define LOG_INFO(format, ...)      \9 v4 q/ Q: I0 a& l: K* W
45     do {                           \
& t5 F( @6 N9 X4 k2 t 46         OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
2 }% ?2 K4 M3 i5 v+ T1 r" m; W 47     } while (0)2 h- [( v7 t$ G# P& \0 m( [
48
3 t4 U$ h+ Q9 s" j8 k 49 #define LOG_ERROR(format, ...)     \
" @! ~5 H) q2 B/ a1 w' G 50     do {                           \! d" N! h0 R$ h+ h" r2 V2 p8 k- w
51         OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \2 A9 ~7 s7 d' x; G6 `( Y# D, A4 `
52     } while (0)
& B2 h! J) J+ i1 n 53
: c- h  s2 {6 _' S' V5 L6 r 54 #define LOG_DEBUG(format, ...)     \
& P& Z/ ^+ T$ e$ m7 n2 d5 J+ i 55     do {                           \+ r8 U" U- J# C2 a  ]) C
56         OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \  S% k, y6 O3 ?  S
57     } while (0)
) }, Z7 q- N' L 58
3 E( }  Z, ~9 u( V' E2 V* x 59 #define LOG_WARN(format, ...)      \! r# p/ d4 n; o7 K" U+ }# ^
60     do {                           \$ s/ d2 G) C/ Z0 A
61         OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
# r: j9 F2 d$ D3 j" E 62     } while (0)1 E0 D+ k3 D. }7 K
63
/ p% N* h  K" \2 e# G# L2 H 64 #define LOG_TRACE(format, ...)     \- N. T/ C4 ]" N+ f
65     do {                           \$ Z9 E" C! o/ U* L; @* Z8 P. y
66         OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
; }$ n0 {& ~  u( n 67     } while (0)
$ d6 x' x6 d" u 68 : c6 v8 ]; b- u' l8 ?# ~& j
69 #define LOG_FATAL(format, ...)     \: N) ~  h+ f+ T. n& L
70     do {                           \" H6 {% C/ _/ I: H0 E* H
71         OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
7 P5 u! D+ e  D+ i  L. B 72         exit(1);                   \
. ~; i6 d/ v0 [# \# e 73     } while (0)
, ?8 E6 {1 t0 B0 w! O 74 1 T7 w+ I" V- V/ \* d: [
75 /* Assert */
# U2 e7 r& A4 Z, }3 m: B 76 #define ASSERT(EXP)                \  E$ o5 E0 l' H' x
77     do{                            \. L; q/ T, L1 I% z4 {. t
78         if (!(EXP)) {              \, E' A8 {3 x) r( a, M1 o
79             OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ );                  \
! ?; W& w! i! J+ [ 80             exit(1);               \
. P5 @( e9 n% j% E 81         }                          \
4 [7 C- F; H" C) Q7 p 82     } while(0)
5 Y5 S4 z; X3 ^ 83
3 B( F0 Y  U; s( y5 E& [3 H# ] 84 #endif
2 }1 N: c, e7 H$ m
作者: tenny    时间: 2014-12-4 14:03
修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏" D( J- L5 _% s9 X' T( x/ C

作者: nihao123    时间: 2014-12-4 15:21
tenny 发表于 2014-12-4 14:03
4 b( m. N0 h& E+ Y$ [& I修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏

, C* V* P4 ^& z$ ~7 K8 j8 W) p你好,是arm这一端的app& g0 O+ U5 r3 G; j9 g

作者: nihao123    时间: 2014-12-4 15:40
tenny 发表于 2014-12-4 14:03
! U" V# l9 P. }! d: j+ W3 j修改 app/log.h 文件里的 OUTPUT_TO_UART1 宏

2 q9 ?7 ~6 K9 Y# e$ s, O你好,你是不是将host/app下的log.h和dsp/driver下的log.h和到一块啦,怎么说下你的思路9 Y* P* e# f. M2 q: E

作者: tenny    时间: 2014-12-4 15:59
arm 端的 log 并没有用到 uart1; D8 u3 y% `0 s* G* x/ G
dsp 端的 log 才使用了 uart1
0 e8 Z- E' l6 i8 n7 Z7 ^! ]所以,你需要也只需要修改的是 dsp 子工程的 log.h(新版本的代码 是在 dsp/app/log.h,旧的是在 dsp/driver/log.h)! X/ \- M: d6 m) P. }5 {% E. N

作者: nihao123    时间: 2014-12-4 17:19
tenny 发表于 2014-12-4 15:59
+ s: \$ N7 G& S: G3 Marm 端的 log 并没有用到 uart1% l. O9 }) _! P! e9 H: i
dsp 端的 log 才使用了 uart14 \7 t! I  x; {0 d9 |
所以,你需要也只需要修改的是 dsp 子工程的  ...

6 ~  u! i' k6 Y3 x: A2 s2 O那我是不是将你贴出的那段代码,替换DSP/driver下的log.h就可以是吧,0 u$ C8 y6 i6 U  f& Q
然后将#define OUTPUT_TO_UART1 1 换成1 m: i# i/ W" T
#define OUTPUT_TO_UART1 0( l2 a4 B; [7 m8 Y7 v. O1 y0 _) [
  是不是这样  U  r- b8 j. v* S* s4 T

& q( }* B. u; P: C
3 o% K# ]5 u7 w
& N1 W; G& j8 X7 Y! `
作者: tenny    时间: 2014-12-5 09:25
% i; a( e+ g4 `# n3 F' E





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