|
1 #ifndef _LOG_H_6 y+ w* U& B% E* m$ ^! P& ]- f4 W3 Q' N$ i
2 #define _LOG_H_; C @4 k- B8 o+ V& G7 x/ ]& T
3
/ C' d7 y5 |4 Y0 F5 I 4 /* 0: printf; 1: UART1 */
6 e$ C1 o0 j1 I7 w; j' K 5 #define OUTPUT_TO_UART1 1
: [& s1 D ` D6 \! B 6
5 Q9 H4 \9 e3 q4 B 7 /* Switch Log Output */6 H. l/ h7 V5 B, t0 |) O& O6 Y
8 #if OUTPUT_TO_UART1) L9 j5 \. R5 z j& v. R4 y
9 /* For UART1 Initial */' I6 V# ?0 V _/ O3 h. w4 Z- x5 I
10 #include <stdlib.h>- ~( }. l, s9 U q# D
11 #include "hw_types.h"
- T$ M1 L9 p; i$ @ 12 #include "hw_syscfg0_C6748.h"
6 Y* D5 ~! X/ f0 G, ?9 b& F$ e9 R6 R( R 13 #include "soc_C6748.h". l0 R( N% O! Z4 l5 u$ G& L
14 #include "psc.h" 0 u9 C! r8 Q7 B8 U3 U5 x
15 #include "gpio.h"
* Z5 n9 G# ~1 |2 @' G4 M 16 #include "uart.h"
* G4 C$ i% C8 b" U* b 17 #include "uartStdio.h"7 e! I: `. G/ R1 i) l/ U/ e3 b
18
. F( Q4 B. |& u% n 19 #define OUTPUT UARTprintf/ K8 u7 ^8 [) R
20 #else
8 W7 A7 i- a. a/ b% T2 n 21 #include <stdio.h>2 X6 L+ w" b# n& ]7 \) v8 |
22 #include <stdbool.h>
# N l# n" _/ D4 [7 d+ l 23
! S% M' B% g7 Z9 e2 z- H; {. m 24 #define OUTPUT printf1 [# c7 K, q% Q" B* Y; U/ J W) Y
25 #endif
J* Z& f, n2 `! M$ t, W- }' ~ 26 6 n# V1 q' N+ \( s* a+ U% T
27 /* Log init */( I3 f. i# ], P, r' ]4 b
28 #if OUTPUT_TO_UART1- ?$ t# @$ }( p0 j8 Q0 p5 K
29 #define LOG_INIT() do { \
7 h$ @; y5 D/ a4 b 30 PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, \" G* w, ?, O" J' M& `, ^0 W
31 PSC_POWERDOMAIN_ALWAYS_ON, \! u0 \6 F; v5 `
32 PSC_MDCTL_NEXT_ENABLE); \1 A1 G8 P' i7 B$ s
33 GPIOBank6Pin12PinMuxSetup(); \, p6 J% D" a8 ^, u9 q
34 GPIOBank6Pin13PinMuxSetup(); \( O* M9 O# e6 \0 r& e
35 GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); \
& G, t- ?% |0 t9 }( ^0 o" | G 36 GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); \7 n7 u5 _& D$ I7 ^+ Y! u
37 UARTStdioInit(); \. `; `* X( Y7 l; r
38 } while (0)
2 l6 V3 N: N- ]! a* s$ {" p* p 39 #else( q( |; P1 D3 S6 u
40 #define LOG_INIT() do { } while (0)
4 ?, g# C$ d: `+ r! M. W- r2 ] 41 #endif; I$ e* _; \" f
42
9 z; A% ]9 d! S5 B! I 43 /* Log Output */
! t' d; O$ y+ h7 [) Z9 z/ ?/ C. D 44 #define LOG_INFO(format, ...) \
* S6 z8 c. l" O6 ?# M; Z) g4 |- t4 ~ 45 do { \; {* N ^! y8 x+ T* j, N3 _: y1 E
46 OUTPUT("[%s|%s@%s,%d] " format "\n", "INFO ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \2 S! \5 c0 y' m; |" ~$ C
47 } while (0)0 d, T6 D. x5 Z- u- Q. y6 O
48 ( l6 ~ t7 n/ k1 u( ?* d1 Y/ z
49 #define LOG_ERROR(format, ...) \4 I3 {3 v# N. j+ f2 x3 R T
50 do { \
& {" u" j: p3 x, Q4 Q6 n 51 OUTPUT("[%s|%s@%s,%d] " format "\n", "ERROR", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
6 s4 p1 x1 J) H0 U+ _' B) F) h 52 } while (0)
3 Y U' m4 l3 U 53 % g5 ?1 o; E& G- ?3 D6 W1 R
54 #define LOG_DEBUG(format, ...) \1 j7 e9 i* @0 t, N5 ^4 ~9 k
55 do { \- Y% P N) |# S, W6 v( N: x
56 OUTPUT("[%s|%s@%s,%d] " format "\n", "DEBUG", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \( Z: m3 \" \$ ^2 D8 ?
57 } while (0)1 c! y+ H* w: \+ j
58 9 ?7 W# b# d. F; }/ ~- @( ]
59 #define LOG_WARN(format, ...) \
! r( D* x! f) R+ V5 ^! f, i t 60 do { \
2 ^& [1 [7 ]! T) J 61 OUTPUT("[%s|%s@%s,%d] " format "\n", "WRAN ", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
0 `. }) U, X& l+ t8 | 62 } while (0)
! r( u; d9 E0 K9 X- o5 L. n 63 # X9 ]6 I( \1 V& i& S+ p$ `
64 #define LOG_TRACE(format, ...) \
% k, m- T T& }- i' R/ l# p6 @ 65 do { \
& B3 l- a7 j1 ^. S S. I! I2 I 66 OUTPUT("[%s|%s@%s,%d] " format "\n", "TRACE", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
6 W" s3 \" J% x% L" W; O 67 } while (0)2 {5 P: H, E( i) b4 K
68 * w+ D( p7 r3 a5 X# k" n
69 #define LOG_FATAL(format, ...) \5 ~7 \) X0 K: I
70 do { \
9 F. P% p6 S+ P4 w2 `- u6 t7 h 71 OUTPUT("[%s|%s@%s,%d] " format "\n", "FATAL", __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
' Z- n$ a3 n0 f, v; g 72 exit(1); \
: u& O7 t* v% I' ` 73 } while (0) \2 s# S" g& k1 G7 W+ F- v
74
$ h. R4 B$ {' ~: M5 q* L5 H: V+ x 75 /* Assert */8 H% i. _2 G/ b7 {6 P
76 #define ASSERT(EXP) \6 @" O8 n F- m7 n8 O
77 do{ \2 J8 ?) E0 p2 T& v
78 if (!(EXP)) { \
0 k% g' ?( u: i' Q" W |0 j 79 OUTPUT("[%s@%s,%d] ASSERT: " #EXP "\n", __func__, __FILE__, __LINE__ ); \7 D7 {% y! B9 a1 k* m; \
80 exit(1); \; E( I& l* j l/ |
81 } \% U' W% X1 T& k5 }3 h
82 } while(0)
/ H/ H4 I6 J% X% ~# C# }* N 83
% B- A% M4 s5 l( Z9 \ 84 #endif5 N) q# J) z `/ D$ k
|
|