|
1 #ifndef _LOG_H_
9 u% z# x- j2 c7 u 2 #define _LOG_H_6 z H9 E' I5 t' |& l( e3 r y, T
3
! E( d4 L2 N3 w; G5 ~ 4 /* 0: printf; 1: UART1 */
9 m8 ]$ `1 K; G4 ~0 l: \: c 5 #define OUTPUT_TO_UART1 1
* l7 f" O. t2 g* c7 V$ X3 U! d5 L 6 - V/ e- B, x: e& g8 X1 O/ |) G' y
7 /* Switch Log Output */; u! k( l! V6 m; q* W& m
8 #if OUTPUT_TO_UART1' m& M O' r% C8 ~( `
9 /* For UART1 Initial */
( x) E7 R$ V& c 10 #include <stdlib.h>
# X6 m' p" y" d- w1 V 11 #include "hw_types.h" # b2 ~. u- \$ c5 ~% c6 h: T$ U
12 #include "hw_syscfg0_C6748.h") m0 s+ A s; n
13 #include "soc_C6748.h"9 k' o6 n1 Z" U. \! R5 w! \
14 #include "psc.h" ' G1 S: Z9 {5 N
15 #include "gpio.h"
6 p. D2 a: h+ @# t* ^ 16 #include "uart.h"
. B7 H3 c8 h* `3 d! e% a 17 #include "uartStdio.h"
) Y* N7 d9 C+ V" S 18 . ~# p7 \" ^; P3 m( T1 D
19 #define OUTPUT UARTprintf
1 C: x# B* F' n% e4 Y1 c! d0 k+ l% ` 20 #else. t6 w5 q' q8 y8 `
21 #include <stdio.h>$ C" t( Q2 Y8 d5 |
22 #include <stdbool.h>: b' y$ X* m/ F/ k/ Q
23
1 u; C" Q3 @5 q8 ?' u: ^! ~ 24 #define OUTPUT printf; V8 X( n% @: l, h- t& l$ N
25 #endif
' ^9 x* g: j S g 26 8 W! X" ] Z ^, u9 N6 s4 p
27 /* Log init */: I5 z7 H+ E4 L2 x
28 #if OUTPUT_TO_UART1, v, S y7 R! c* \* ^
29 #define LOG_INIT() do { \
+ H' S6 M. ?! l% ]0 l 30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \9 J& ^- b7 I. l1 {
31 PSC_POWERDOMAIN_ALWAYS_ON, \2 y/ s% v6 |9 z* `0 l7 V
32 PSC_MDCTL_NEXT_ENABLE); \
4 z- E) e: d; u2 H1 g 33 GPIOBank6Pin12PinMuxSetup(); \# N# l, K' ?1 Q
34 GPIOBank6Pin13PinMuxSetup(); \
: U, {, v% {/ I( k! M; E5 P 35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \
6 A# ^6 J. f3 [1 e 36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \
$ f# K' B/ B( g n9 I. T; d" a 37 UARTStdioInit(); \0 O; B( C% x+ Z0 J. w
38 } while (0)6 I% } Z, P) ?: V7 I
39 #else
, |) F$ |) n% R- o- ^) u5 F 40 #define LOG_INIT() do { } while (0)
- c. v& m2 Q: N7 B H5 K7 R 41 #endif# t k" [: k2 v: ~% {" @" c' d: ~
42 / O3 I, H; B O* \. F1 Q
43 /* Log Output */, R+ o w- j3 X+ h" M, O9 {
44 #define LOG_INFO(format, ...) \9 ^' E0 R" Q. o! r: A- S
45 do { \
$ i6 l- `' |; Q* e! W 46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
' {' u( J; H1 W, }/ l- Y 47 } while (0)6 l, {1 B. V1 }
48
+ E4 C. i$ z7 D/ s: S% w 49 #define LOG_ERROR(format, ...) \
6 { F1 M. K5 C2 c 50 do { \; j6 k, G. F( @5 v' `# @
51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \! }' T+ y; j3 M) p; S4 ^
52 } while (0)0 {# ^! V x8 s9 X% Y" ]
53
+ P' \ ^$ J/ a! i" B/ t$ O 54 #define LOG_DEBUG(format, ...) \$ ^9 k) o" r6 Y
55 do { \
/ k! M; N6 K3 I( z3 }, ] 56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \! Y% t& p- Y( Q" V
57 } while (0)
7 C) G* ]) I) | 58
( y# Y4 @( J! ?) t 59 #define LOG_WARN(format, ...) \ x) Z5 M! @9 U" i9 n' v |0 O
60 do { \& `& d' k/ `9 }
61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \" f* S" g0 q" Q
62 } while (0)8 A/ T6 l# S: B; d' i* q
63
8 U# r7 \ M3 L; X 64 #define LOG_TRACE(format, ...) \$ t6 V/ C/ l" _# g) ]" v
65 do { \- |# k( i# o" ?8 J. |8 z
66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
) H: }0 `' I- z1 f+ O. P 67 } while (0)" ~0 @5 d& b4 u1 @& o5 X) ]
68
' J5 n8 q, d. M- J( @! ] 69 #define LOG_FATAL(format, ...) \ Q" N! q" ?5 `. F7 [$ r8 a1 T
70 do { \
, n4 p5 ^4 R# @: @ 71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
7 Q0 k r) P8 Q1 ` 72 exit(1); \
3 x5 q8 D4 P4 t0 X4 I 73 } while (0)
4 A4 ^& Q C9 ?4 @, m 74 $ ]# `9 X" J- ?- A9 D
75 /* Assert */
1 V9 m p# V O 76 #define ASSERT(EXP) \
0 _. U/ X5 J; n# }, O. z& h4 J3 S2 T 77 do{ \* f& [4 @' B: o& g2 m9 O
78 if (!(EXP)) { \3 A# ]! `8 W' a' }' u( M9 L
79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \9 s: t4 N2 h* R* d/ @0 T7 I, _ Q+ }
80 exit(1); \$ m- l, M' S, ^4 g; ?0 D4 [
81 } \
6 G5 x* S5 o7 K& g8 J 82 } while(0), G/ U& g9 j! c8 g$ _" O. ^7 \
83 0 t! E5 w8 E' k N) W, B3 C' u4 y
84 #endif
) u+ X6 r. K1 d2 Q |
|